DE112005003874B3 - Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung - Google Patents

Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung Download PDF

Info

Publication number
DE112005003874B3
DE112005003874B3 DE112005003874.2T DE112005003874T DE112005003874B3 DE 112005003874 B3 DE112005003874 B3 DE 112005003874B3 DE 112005003874 T DE112005003874 T DE 112005003874T DE 112005003874 B3 DE112005003874 B3 DE 112005003874B3
Authority
DE
Germany
Prior art keywords
transaction
execution
processor
logic
invalidating
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.)
Active
Application number
DE112005003874.2T
Other languages
English (en)
Inventor
Sailesh Kottapalli
John H. Crawford
Kushagra Vaid
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.)
Tahoe Research Ltd
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
Application granted granted Critical
Publication of DE112005003874B3 publication Critical patent/DE112005003874B3/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • 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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

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)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

Prozessor, aufweisend:Einen Cache-Speicher (240);Eine Ausführungslogik (275), die mit dem Cache-Speicher gekoppelt ist, wobei die Ausführungslogik eingerichtet ist zum spekulativen Ausführen einer Transaktion, und zum spekulativen Wiederausführen der Transaktion, wenn ein invalidierender Zugriff auf eine zumindest Zeile einem gemeinsam genutzten Speicher während der Ausführung der Transaktion verfolgt wird;Eniem Transartions puffer uitemer Transaktionsverfolgungslogik (275) zum Verfolgen eines invalidierenden Zugriffs auf die Zunindes reme Zeile in dem gemeinsam genutzten Speicher, auf die während einer spekulativen Ausführung durch die Transaktion verwiesen wird, wobeidie Transaktionsverfolgungslogik eingerichtet ist, eine Mehrzahl von Einträgen zu halten, wobei jeder Eintrag eine Adresse, die mit einer der spekulativen Lade- oder Speicheroperationen verbunden ist, und em Feld für invalidurde Zugniffe aufweist,undEine Lockout-Logik (260) zum Sperren des Zugriffs auf die zumindesteine Zeile in dem gemeinsam genutzten Speicher, auf die durch die Transaktion verwiesen wird, nach einer ersten Anzahl von Wiederholungen, die Transaktion spekulativ wiederauszuführen; und um die Ausführungsiogik (275) in die Lage zu versetzen die Transaktion nicht spekulativ wiederauszuführen nach dem Sperren des Zugriffs auf die zumindesteine Zeile dem gemeinsam genutzten Speicher.

Description

  • Gebiet
  • Die Erfindung bezieht sich auf das Gebiet der integrierten Schaltkreise, und insbesondere auf den Betrieb von verschiedenen integrierten Schaltkreisen, Cores, und Threads mit gemeinsam genutzten Daten.
  • Hintergrund
  • Fortschritte bei der Halbleiterverarbeitüng und in der Logikauslegung haben , eine Erhöhung des Umfangs der Logik ermöglicht, die sich auf integrierten Schaltungen befinden kann. Als Ergebnis haben sich Computersystem Konfigurationen von einem einzelnen, oder mehreren integrierten Schaltkreisen in einem System zu mehreren Cores und mehreren Logikprozessoren entwickelt, die sich auf den einzelnen integrierten Schaltkreisen befinden. Ein integrierter Schaltkreis umfasst üblicherweise einen einzelnen Prozessorchip, wobei der Prozessorchip eine beliebige Anzahl von Cores und logischen Prozessoren aufweisen kann.
  • Beispielsweise kann ein einzelner integrierter Schaltkreis einen oder mehrere Cores haben. Der Ausdruck „Core“ bezieht sich üblicherweise auf die Fähigkeit von Logik, auf einem integrierten Schaltkreis einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängige Architekturzustand zweckbestimmten Ausführungsressourcen zugeordnet ist. Daher enthält ein integrierter Schaltkreis mit zwei Cores üblicherweise Logik, um zwei getrennte und unabhängige Architekturzustände aufrechtzuerhalten, wobei jeder Architekturzustand jeweils seinen eigenen Ausführungsressourcen zugeordnet ist, wie z. B. Caches auf niedriger Ebene, Ausführungseinheiten, und Steuerungslogik. Jeder Core kann bestimmte Ressourcen gemeinsam nutzen, wie z.B. Caches auf höherer Ebene, Busschnittstellen, und Fetch/Decode Einheiten.
  • In einem anderen Beispiel kann eine einzelne integrierte Schaltung, oder ein einzelner Core mehrere logische Prozessoren aufweisen, um mehrfache Software Threads auszuführen, was als integrierter Multi-Threading Schaltkreis, oder als Multi-Threading Core bezeichnet wird. Mehrfache logische Prozessoren nutzen üblicherweise gemeinsam gemeinsame Datencaches, Befehlscaches, Ausführungseinheiten, Branchpredictors, Steuerungslogik, Busschnittstellen, und andere Prozessorressourcen, während sie einen eindeutigen Architekturzustand für jeden logischen Prozessor aufrechterhalten. Ein Beispiel der Multi-Threading Technologie ist die Hyper-Threading Technologie (HT) von Intel® Corporation, Santa Clara, Kalifornien, welche die parallele Ausführung von Threads unter Verwendung eines physischen Signalprozessors ermöglicht.
  • Die derzeitige Software hat die Fähigkeit, einzelne Software Threads ablaufen zu lassen, welche eine parallele Ausführung auf einer Mehrzahl von Cores oder logischen Prozessoren anberaumen können. Die immer weiter ansteigende Anzahl von Cores und logischen Prozessoren auf integrierten Schaltkreisen ermöglicht die Ausführung von immer mehr Software Threads. Jedoch hat die Steigerung der Anzahl von Software Threads, die gleichzeitig ausgeführt werden, Probleme bei der Synchronisierung von Daten hervorgerufen, die von mehreren Software Threads gemeinsam genutzt werden.
  • Eine übliche Lösung zum Zugriff auf gemeinsam genutzte Daten in Systemen mit mehreren Cores oder mehreren Logikprozessoren umfasst die Verwendung von Sperren, um einen gegenseitigen Ausschluss gegenüber mehrfachen Zugriffen auf gemeinsam genutzte Daten zu garantieren. Als Beispiel, ob ein erster Software Thread auf einen gemeinsamen Speicherort zugreift, wird der Semaphor, der den gemeinsamen Speicherort absichert, gesperrt, um alle anderen Software Threads in dem System vom Zugriff auf den gemeinsam genutzten Speicherort auszuschließen, bis der Semaphor, welcher den Speicherort absichert, entriegelt ist.
  • Jedoch resultiert, wie oben beschrieben, die immer weiter steigende Fähigkeit, mehrfache Software Threads auszuführen potentiell in einer fehlerhaften Konkurrenzsituation und Serialisierung der Ausführung. Eine fehlerhafte Konkurrenzsituation tritt oft wegen der Tatsache auf, dass Semaphore üblicherweise dazu angeordnet sind, eine Datenansammlung zu überwachen, welche in Abhängigkeit von der Granularität der gemeinsamen Nutzung, die von der Software unterstützt wird, eine sehr große Datenmenge umfassen kann. Aus diesem Grund wirken Semaphore als „Verstärker“ der Konkurrenzsituation, da eine Konkurrenzsituation durch mehrfache Software Threads für die Semaphore auftreten kann, obwohl die Software Threads auf vollkommen unabhängige Datenobjekte zugreifen. Dies führt zu Situationen, in welchen ein erster Software Thread einen ersten Semaphor sperrt, der einen Datenort absichert, auf den ein zweiter Software Thread sicher zugreifen kann, ohne die Ausführung des ersten Software Thread zu unterbrechen. Nun, da der erste Software Thread den Semaphor gesperrt hat; muss der zweite Thread warten, bis der Semaphor entriegelt ist, was eine Serialisierung anstatt einer parallelen Ausführung bedingt.
  • WO 2004/075044 A2 offenbart ein System, das selektiv Speicheranweisüngen zur Unterstützung der transaktionalen Ausführung eines Prozesses überwacht, worin Änderungen, die während der transaktionalen Ausführung vorgenommen werden, erst dann in den architektonischen Zustand eines Prozessors übernommen werden, wenn die transaktionale Ausführung erfolgreich abgeschlossen ist. Bei Auftreten eines Speicherbefehls während der transaktionalen Ausführung eines Befehlsblocks bestimmt das System, ob es sich bei dem Speicherbefehl um einen überwachten Speicherbefehl oder einen nicht überwachten Speicherbefehl handelt. Wenn es sich bei dem Speicherbefehl um einen überwachten Speicherbefehl handelt, führt das System den Speichervorgang durch und markiert eine der Speicherbefehl zugeordnete Cache-Zeile, um das spätere Erkennen eines störenden Datenzugriffs auf die Cache-Zeile von einem anderen Prozess zu erleichtern. Handelt es sich bei der Speicheranweisung um eine nicht überwachte Speicheranweisung, führt das System den Speichervorgang durch, ohne die Cachezeile zu markieren.
  • Es ist die Aufgabe der vorliegenden Erfindung einen Prozessor bereitzustellen, mit dem eine Konkurrenzsituation zwischen Threads und eine Serialisierung einer Thread-Ausführung bei Multi-Thread-Prozessoren vermindert werden kann.
  • Die Aufgabe wird gelöst durch einen Prozessor mit den Merkmalen gemäß Anspruch 1. Ausführungsformen der Erfindung sind in den Unteransprüchen angegeben;
  • Figurenliste
  • Die vorliegende Erfindung wird an Hand eines Beispiels beschrieben, und soll durch die Figuren der beigefügten Zeichnungen nicht eingeschränkt werden.
    • 1 stellt eine integrierte Schaltung dar, die N Cores und M logische Prozessoren in jedem der Cores aufweist.
    • 2 stellt eine Ausführungsform einer integrierten Schaltung dar, um eine Transaktionsausführung umzusetzen.
    • 3 stellt eine Ausführungsform des Transaktionspuffers dar, der in 3 gezeigt wird.
    • 4 stellt eine Transaktion dar, die in Software Code ausgedrückt ist, wobei der gezeigte Software Code in eine erste und eine zweite Ausführungsform von kompiliertem Code kompiliert ist.
    • 5 stellt eine Ausführungsform einer Transaktionsausführung in einem System dar.
    • 6 stellt eine Ausführungsform eines Flussdiagramms für ein Verfahren zur Ausführung einer Transaktion dar.
    • 7 stellt eine Ausführungsform des Code Flusses für eine Transaktionsausführung dar.
  • Ausführliche Beschreibung
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargestellt, wie z.B. eine spezifische Anzahl von physischen oder logischen Prozessoren, spezifische Transaktionspufferfelder, und spezifische Prozessorlogik, und Anwendungen, um ein umfassendes Verständnis der vorliegenden Erfindung zu gewährleisten. Einem Fachmann ist jedoch klar, daß diese spezifischen Einzelheiten nicht umgesetzt werden müssen, um die Erfindung auszuführen. In anderen Fällen wurden wohlbekannte Komponenten oder Verfahren, wie z.B. wohlbekannte Funktionsblöcke eines Mikroprozessors, etc., nicht im Detail beschrieben, um zu vermeiden, daß die vorliegende Erfindung unnötig verschleiert wird.
  • Die Vorrichtung und das Verfahren, die hier beschrieben werden, sind zum Verwalten der Zugriffe auf gemeinsam genutzte Speicher zwischen mehreren Software Threads vorgesehen, die eine sperrenfreie Synchronisierung durch transaktionsgestützte Ausführung verwenden. Einem Fachmann ist umgehend klar, daß das Verfahren und die Vorrichtung, die hier offenbart sind, in einem Computersystem auf jeder beliebigen Ebene eingesetzt werden können, wie z.B. persönlichen digitalen Assistenten, mobilen Plattformen, Desktop Plattformen, und Server Plattformen, genauso wie in jeder beliebigen Anzahl von integrierten Schaltungen, Cores, oder logischen Prozessoren. Zum Beispiel kann ein Multiprozessorsystem mit vier integrierten Schaltungen das hier beschriebene Verfahren, und die hier beschriebene Vorrichtung verwenden, um gemeinsame Zugriffe auf einen gemeinsam genutzten Speicher zu verwalten, der gemeinsam durch vier beliebige integrierte Schaltungen genutzt wird.
  • In 1 wird die integrierte Schaltung 105 gezeigt, die Transaktionsausführung implementieren kann. In einer Ausführungsform, ist die integrierte Schaltung 105 ein Mikroprozessor, der in der Lage ist, unabhängig von anderen Mikroprozessoren zu arbeiten. Alternativ ist die integrierte Schaltung 105 ein Verarbeitungselement, das in Zusammenhang mit einer Mehrzahl von Verarbeitungselementen betrieben wird.
  • Die integrierte Schaltung 105 stellt einen ersten Core 110, einen zweiten Core 115, und einen n-ten Core 120 dar. Der Ausdruck Core, wie er hier verwendet wird, bezieht sich auf jegliche Logik, die auf einer integrierten Schaltung angeordnet ist, und in der Lage ist, einen unabhängigen Architekturzustand beizubehalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand zumindest einigen zugewiesenen Ausführungsressourcen zugeordnet ist. Ausführungsressourcen können arithmetische Logikeinheiten (ALUs), Fliesskommaeinheiten (FPUs), Registerfiles, Operandenregister zum Betrieb mit einzelnen oder mehrfachen ganzzahligen und/oder Fliesskommadatenoperanden in serieller oder paralleler Logik, und anderer Logik zur Ausführung von Code enthalten. Weiterhin können mehrere Cores den Zugriff auf andere Ressourcen, wie z.B. Caches auf hohen Ebenen, Busschnittstellen, und Steuerungslogik und Fetch/Decode Logik gemeinsam teilen.
  • Als anschauliches Beispiel hat die integrierte Schaltung 105 acht Cores, wobei jeder Core einer Gruppe von Architekturstatusregistern zugeordnet ist, wie z.B. Mehrzweckregistern, Steuerregistern, Advanced Programmable Interrupt Control (APIC) Registern, Maschinenstatusregistern (MSRs), oder Registern zum Speichern des Zustands eines Befehlszeigers, um einen unabhängigen Architekturstatus beizubehalten. Weiterhin ist jede Gruppe von Architekturstatusregistern ausschliesslich individuellen Ausführungseinheiten zugeordnet.
  • Die integrierte Schaltung 105 stellt auch einen Core 110 dar, der einen ersten Logikprozessor 125, einen zweiten Logikprozessor 130, und einen M-ten Logikprozessor 135 umfaßt. Ein Logikprozessor, wie er hier verwendet wird, bezieht sich auf jegliche Logik, die sich auf einem integrierten Schaltkreis befindet, der in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf die Ausführungsressourcen teilen. Wie oben erklärt hat jeder Logikprozessor eine Gruppe von Architekturzustandsregistern, um einen unabhängigen Architekturzustand aufrechtzuerhalten, jedoch teilt jeder der Architekturzustände den Zugriff auf die Ausführungsressourcen. Folglich kann sich auf jedem integrierten Schaltkreis eine beliebige Anzahl von Cores und/oder eine beliebige Anzahl von logischen Prozessoren befinden. Zum Zweck der Darstellung wird auf den Begriff Prozessor beim Erörtern des Betriebs eines Cores und/oder eines logischen Prozessors Bezug genommen, wenn die Vorrichtung und das Verfahren erörtert werden, die für die transaktionsgestützte Ausführung verwendet werden.
  • Mit Bezug auf 2 wird eine Ausführungsform einer integrierten Schaltung abgebildet, um eine spezifische Anwendung der transaktionsgestützten Ausführung zu veranschaulichen. Jedoch ist es sofort ersichtlich, daß das Verfahren und die Vorrichtung, die mit Bezug auf 2 beschrieben werden, in einem System auf jeglicher Ebene angewandt werden können, wie z.B. in dem in 5 abgebildeten System. In einer Ausführungsform ist die integrierte Schaltung 205 zum „out of order speculative“ in der Lage, wobei Befehle in einer Reihenfolge ausgeführt werden können, die sich von der in einem Programm angegebenen unterscheidet. Alternativ ist der Prozessor 205 zur Ausführung in einer Reihenfolge fähig, wobei Befehle in der ursprünglichen Programmreihenfolge ausgegeben und ausgeführt werden.
  • Die integrierte Schaltung 205 kann eine beliebige Anzahl von Prozessoren enthalten, die Cores oder logische Prozessoren sein können. Zum Beispiel hat die integrierte Schaltung 205 acht Cores, wobei jeder Core zwei logische Prozessoren aufweist, was eine Ausführung von sechzehn Software Threads gleichzeitig auf dem integrierten Schaltkreis 205 ermöglicht. Folglich wird der integrierte Schaltkreis 205 üblicherweise als Multi-Threading Multi-Core Prozessor bezeichnet. In 2 wird der integrierte Schaltkreis 205 einzeln abgebildet, um die Erfindung nicht zu verschleiern, jedoch kann die integrierte Schaltung 205 alleine, oder zusammen mit anderen Prozessoren arbeiten.
  • Die integrierte Schaltung 205 kann, muss aber nicht, eine beliebige Kombinationen der Folgenden enthalten, die nicht im Einzelnen abgebildet sind: einen Datenpfad, einen Befehlspfad, eine virtuelle Speicheraddressen-übersetzungseinheit (ein Übersetzungspuffer), eine arithmetische Logikeinheit (ALU), eine Fliesskommberechnungseinheit, die in der Lage ist, einen einzigen Befehl, oder vielfache Befehle auszuführen, und in der Lage ist, mit einzelnen oder mehrfachen Datenoperanden der Reihe nach oder parallel zu arbeiten, ein Register, einen Interrupt Controller, einen fortgeschrittenen, programmierbaren Interrupt Controller (APIC), eine Pre-fetch Einheit, eine Befehlswiederanforderungseinheit, und jede andere Logik, welche dazu verwendet werden soll, um Befehle abzurufen, oder auszuführen, und mit Daten zu arbeiten.
  • Die integrierte Schaltung 205 stellt das Front-End 210 dar. Das Front-End 210 wird einschliesslich Befehlsabruf (Instruction Fetch) 215, Befehlsdekodierung (Instruction Decode) 220, und Verzweigungsaussage (Branch Predication) 225 gezeigt. Das Front-End 210 ist nicht darauf beschränkt, nur die gezeigte Logik zu enthalten, sondern kann auch andere Logik enthalten, wie z.B. eine externe Datenschnittstelle 265, und einen Befehlscache auf niedrigem Niveau. Das Front-End 210 ruft Befehle ab und decodiert sie zur Ausführung durch die integrierte Schaltung 205. Wie gezeigt enthält das Front-End 210 auch eine Verzweigungsaussage-Logik 225, um Befehle vorherzusagen, die abgerufen und decodiert werden sollen. Das Front-End 210 kann Befehle mit fester Länge abrufen und decodieren, Befehle variabler Länge, Makrobefehle, oder Befehle, die einzelne Operationen aufweisen.
  • Ein Befehl enthält üblicherweise mehrere an Datenoperanden auszuführende Befehle und wird allgemein als Makrobefehl bezeichnet, während die einzelnen auszuführenden Operationen gemeinhin als Mikrooperationen bezeichnet werden. Jedoch kann sich ein Befehl auch auf eine einzelne Operation beziehen. Daher bezieht sich eine Mikrooperation, wie hier verwendet, auf einen beliebigen Einzelbefehl, der durch eine integrierte Schaltung 205 ausgeführt werden soll, während sich ein Befehl auf einen Makrobefehl bezieht, einen einzelnen Operationsbefehl, oder beides. Beispielsweise enthält ein Add-Macro Befehl eine erste Mikrooperation, um einen ersten Datenoperanden aus einer ersten zugeordneten Adresse zu lesen, eine zweite Mikrooperation, um einen zweiten Datenoperanden aus einer zweiten zugeordneten Adresse zu lesen, eine dritte Mikrooperation, um den ersten und den zweiten Datenoperanden zu addieren, um ein Ergebnis zu erhalten, und eine vierte Mikrooperation, um das Ergebnis an einem Registerort zu speichern.
  • Eine Transaktionsausführung umfaßt üblicherweise das Gruppieren von Befehlen und/oder Operationen in eine Transaktion oder einen kritischen Code Abschnitt. In einer Ausführungsform gruppiert Hardware in der integrierten Schaltung 205 Makrooperationen in Transaktionen. Das Festlegen von Transaktionen in Hardware enthält verschiedene Faktoren, wie die Verwendung von Verriegelungserlangung und Verriegelungsfreigaben, Verschachteln von Transaktionen, gegenseitiges Ausschliessen von nicht spekulativen Speicheroperationen, und Überlagerung von Speicheranforderungserfordernissen über Konstrukte, welche zum Aufbau von Transaktionen verwendet werden. In einer anderen Ausführungsform werden Transaktionen in Software demarkiert. Das Demarkieren von Transaktionen in Software wird mit Bezug auf 5 genauer erläutert.
  • Die integrierte Schaltung 205 umfaßt weiterhin Ausführungseinheiten 275 und eine Registerdatei 270, um die Gruppen von Makrooperationen auszuführen, die auch als Transaktionen und kritische Abschnitte bezeichnet werden. Im Gegensatz zu traditionellen Sperrtechniken bringt eine transaktionsgestützte Ausführung üblicherweise das spekulative Ausführen einer Transaktion oder eines kritischen Abschnitts und das Verschieben von Zustandsaktualisierungen bis zum Ende der spekulativen Ausführung, wenn der Endzustand der Transaktion bestimmt ist, mit sich. Als Beispiel wird ein kritischer Abschnitt durch das Front-End 210 bestimmt, spekulativ ausgeführt, und nur dann durch die Retirement-Logik 235 ausgeschieden, wenn Remote Agents, wie ein anderer Core, oder ein logischer Prozessor, keine invalidierende Anforderung an die Speicherorte ausgeführt haben, auf die während der Ausführung des kritischen Abschnitts zugegriffen wurde.
  • Als anschauliche Beispiele enthalten Remote Agents Speicheraktualisierungsvorrichtungen, wie z.B. eine andere integrierte Schaltung, Verarbeitungselement, Core, Logikprozessor, oder jeden Prozessor oder jede Vorrichtung, die nicht zur Ausführung der anstehenden Transaktion bestimmt sind, oder die keine anstehende Transaktion ausführen. Üblicherweise umfassen invalidierende Anforderungen Anforderungen oder Zugriffe durch einen Remote Agent an Speicherorte, die von Mikrooperationen innerhalb der Transaktion manipuliert wurden, Anforderungen, einen Semaphor zu sperren, der die Speicherorte absichert, die von Mikrooperationen innerhalb der Transaktion manipuliert werden, oder Anforderungen durch einen Remote Agent nach Eigentümerschaft an Speicherorten, die durch Mikrooperationen innerhalb der Transaktion manipuliert werden. Die Invalidierung von Anforderungen wird mit Bezug auf 3 näher erklärt.
  • Wenn die Ergebnisse am Ende der Ausführung der Transaktion oder des kritischen Abschnitts als uneinheitlich oder ungültig befunden werden, wird die Transaktion oder der kritische Abschnitt nicht ausgeschieden und die Zustandsaktualisierungen werden nicht auf Register oder Speicher festgelegt. Weiterhin, wenn die Transaktion nicht ausgeschieden wird, umfassen zwei Optionen zur Wiederausführung der Transaktion: (1) das spekulative Wiederausführen der Transaktion, wie vorher ausgeführt, oder (2) nicht spekulatives Wiederausführen der Transaktion unter Verwendung von Verriegelungen / Semaphoren.
  • Das spekulative Ausführen von Transaktionen kann Speicher- und Registerzustandsaktualisierungen umfassen. In einer Ausführungsform ist die integrierte Schaltung 205 in der Lage, spekulative Zustandsaktualisierungen des Speichers und der Registerdatei zu halten und zu vereinigen, um sicherzustellen, daß Ergebnisse der Transaktionsausführung gültig und schlüssig sind, bevor der Speicher und die Registerdatei aktualisiert werden. Als anschauliches Beispiel hält die integrierte Schaltung 205 alle Befehle oder Mikrooperationsergebnisse, die als Teil der gleichen Transaktion identifiziert sind, für einen beliebigen Zeitraum in einem spekulativen oder temporären Zustand. Um das Halten und Vereinigen von spekulativen Zustandsaktualisierungen von Speicher- und Register Files zu erreichen, wird eine besondere Register Checkpoint Hardware und eine Operanden Bypass Logik verwendet, um die spekulativen Ergebnisse in temporären Registern zu speichern.
  • In einer anderen Ausführungsform ist die integrierte Schaltung 205 in der Lage, Registerzustandsaktualisierungen und Befehlsausscheidung von Speicheraktualisierungen zu entkoppeln. In dieser Ausführungsform werden spekulative Aktualisierungen an die Registerdatei 370 übergeben, bevor die Spekulation aufgelöst wird, jedoch werden die Speicheraktualisierungen bis nach der Ausscheidung der Transaktion gepuffert. Daher ist es ein potentieller Vorteil, daß jeder individuelle Befehl oder jede Mikrooperation innerhalb einer Transaktion unmittelbar nach der Ausführung ausgeschieden werden kann. Weiterhin reduziert das Entkoppeln der Registerzustandsaktualisierung und der Speicheraktualisierung potentiell die zusätzlichen Register zur Speicherung spekulativer Ergebnisse, bevor sie der Architekturregisterdatei 270 übergeben werden.
  • Jedoch umfaßt in dieser Ausführungsform das spekulative Aktualisieren der Registerdatei 270 das Behandeln jeder Aktualisierung für die Registerdatei 270 als eine spekulative Aktualisierung. Registerwiederverwendungs- und Zuweisungsvorschriften können bestimmen, daß Aktualisierungen der Registerdatei 270 spekulative Aktualisierungen sind. Als anschauliches Beispiel werden Eingaberegister, die zur Pufferung von Daten für Transaktionen verwendet werden, während des Schwebezustands der Festlegung der Transaktion gegen das Empfangen von neuen Daten beeinflusst. In diesem Beispiel werden Eingaberegister, die während der Transaktion verwendet werden gegen das Empfangen neuer Daten beeinflusst; wenn daher die spekulative Ausführung fehlschlägt oder wieder gestartet werden muss, dann kann die Gruppe von Eingaberegistern normalerweise ohne Neuinitialisierung wieder verwendet werden, da andere Register, die nicht Teil der Gruppe von Eingaberegistern sind, zuerst verwendet werden.
  • In einem anderen Beispiel, wenn Eingaberegister während der spekulativen Ausführung, oder während des Schwebezustands der Festlegung der Transaktion neue Daten empfangen, werden die Zustände der wiederverwendeten Eingaberegister in einem getrennten Speicherbereich, wie z.B. einem anderen Register gespeichert. Die Speicherung der ursprünglichen Inhalte des Eingaberegisters ermöglicht es, daß die Eingaberegister im Fall eines Ausführungsfehlers oder einer Einleitung einer Wiederausführung, wieder mit ihren ursprünglichen Inhalten geladen werden. Das vorläufige Speichern von Registerinhalten durch den Prozessor und das folgende Wiederladen nach einer Wiederausführung wird üblicherweise als Spilling und Refilling bezeichnet.
  • Die Konsistenz der Speicherzugriffe auf einen gemeinsam genutzten Speicher, wie den Cache 240, innerhalb einer Transaktion oder eines kritischen Abschnitts kann verfolgt werden, um sicherzustellen, daß Speicherorte, aus denen gelesen wurde, nach wie vor die gleiche Information aufweisen, und Speicherorte, die aktualisiert oder beschrieben werden sollen, nicht von einem anderen Agenten gelesen oder aktualisiert werden müssen. Als erstes Beispiel ist ein Speicherzugriff eine Ladeoperation, die Daten, einen Datenoperanden, eine Datenzeile oder beliebige Inhalte eines Speicherortes liest oder lädt. Als zweites Beispiel umfaßt ein Speicherzugriff eine Speicheraktualisierungs-, Speicher- oder Schreiboperation.
  • In einer Ausführungsform verfolgt der Transaktionspuffer 265 Zugriffe auf Datenzeilen, wie z.B. Cache Zeilen 245, 250, und 255 in einem gemeinsam genutzten Speicher, wie dem Cache 240. Als ein anschauliches Beispiel umfassen die Cache Zeilen 245 bis 255 eine Datenzeile, eine zugeordnete physische Adresse, und ein Tag. Die zugeordnete physische Adresse nimmt auf einen Speicherort Bezug, der außerhalb des integrierten Schaltkreises 205 liegt, oder einen Speicherort der auf dem integrierten Schaltkreis 205 liegt.
  • Wendet man sich nun 3 zu, ist dort eine Ausführungsform des Transaktionspuffers 265 dargestellt. Der Transaktionspuffer 265 kann eine Transaktionsverfolgungslogik enthalten, um invalidierende Anfragen oder Zugriffe von Remote Agents auf jede Adresse zu verfolgen, von der geladen wurde, und auf jede Adresse, die in einen gemeinsam genutzten Speicher innerhalb einer Transaktion geschrieben werden soll. Als anschauliche Beispiele enthalten die Remote Agents andere Verarbeitungselemente, wie einen anderen Logikprozessor, Core, integrierte Schaltung, Verarbeitungselement, oder jeden Prozessor /jede Vorrichtung, die nicht zur Ausführung der schwebenden Transaktion geplant ist, oder diese ausführt.
  • In einer Ausführungsform enthält der Transaktionspuffer 265 eine Ladetabelle 305 und einen Speicher- oder Schreibpuffer 325, um die Lade- oder Lesevorgänge und die Speicher- oder Schreibvorgänge jeweils während der Ausführung einer schwebenden Transaktion zu verfolgen. Hier speichert die Ladetabelle 305 einen Ladeeintrag, wie den Ladeeintrag 307, der jeder Datenzeile entspricht, die während der Ausführung einer schwebenden Transaktion oder eines kritischen Abschnitts aus einem gemeinsam genutzten Speicher geladen oder gelesen wird. In einer Ausführungsform umfaßt der Ladeeintrag eine Darstellung einer physischen Adresse 310, und ein Feld für invalidierende Zugriffe (IAF) 315. Als erstes Beispiel umfaßt eine Darstellung einer physischen Adresse 310 die tatsächliche physische Adresse, die dazu verwendet wird, um den Speicherort zu bezeichnen. Als zweites Beispiel umfaßt die Darstellung eine kodierte Version oder einen Teil der physischen Adresse, wie einen Tag Wert, um die geladene Datenzeile zu bezeichnen, gemeinsam mit Längen- oder Größeninformationen. Die Länge der geladenen Daten kann in durch den Aufbau impliziert sein. Daher ist keine genaue Bezugnahme auf die Länge oder den Umfang der geladenen Daten erforderlich. In einer Ausführungsform sind die implizierte Länge oder der Umfang der geladenen Daten eine einzelne Cache Zeile.
  • Als anschauliches Beispiel hat das IAF 315 einen ersten Wert, wenn der Ladeeintrag 307 zuerst in einer Ladetabelle 305 gespeichert wird, und wird auf einen zweiten Wert geändert, wenn ein Remote Agent einen invalidierenden Zugriff oder eine invalidierende Zugriffsanfrage auf den Speicherort durchführt, auf den von der physischen Adresse 310 verwiesen wird. Zum Beispiel legt eine invalidierende Anfrage oder ein invalidierender Zugriff einen Remote Agent fest, der in den Speicherort schreibt, auf den durch die physische Adresse 310 während der Ausführung des schwebenden Kritischen Abschnitts Bezug genommen wird, wobei die physische Adresse 310 einen Speicherort darstellt, von dem während der Ausführung des schwebenden kritischen Abschnitts gelesen wurde. Als vereinfachtes Beispiel wird das IAF 315 auf einen ersten logischen Wert 1 initialisiert, wenn der Ladeeintrag 307 gespeichert wird, wobei der Ladeeintrag 307 eine physische Adresse 310 umfaßt, welche auf einen Speicherort Bezug nimmt, von dem während der Ausführung eines kritischen Abschnitts geladen wird. Wenn ein Remote Agent an den Speicherort schreibt, auf den von der physischen Adresse 310 während der Ausführung des schwebenden kritischen Abschnitts Bezug genommen wird, wird das IAF Feld 315 auf einen zweiten Wert von 0 gewechselt, um darzustellen, daß ein Remote Agent einen invalidierenden Zugriff auf den Speicherort durchgeführt hat, auf den durch den Ladeeintrag 307 Bezug genommen wurde.
  • In einer Ausführungsform kann die Ladetabelle 305 auch dazu verwendet werden, um invalidierende Sperr- oder Semaphor Anfragen von Remote Agents zu verfolgen. Wenn eine Transaktion ausgeführt wird, dann wird ein Semaphor, oder ein getrennter Ladeeintrag, wie z.B. der Ladeeintrag 307, verwendet, um einen Semaphor für die Transaktion zu verfolgen. Eine Semaphor Variable kann unter Verwendung einer gemeinsamen Ladeoperation für die Semaphor Variable verfolgt werden, wobei die Ladeoperation auf ähnliche Weise wie oben erörtert verfolgt wird. Tatsächlich umfaßt ein Semaphor Ladeeintrag, wie der Ladeeintrag 307, zum Verfolgen von invalidierenden Anfragen an den Semaphor, da physicheAdressfeld 310 und das 1AF 315 Das physische Adressfeld 310 kann eine Darstellung einer physischen Adresse umfassen, an der der Semaphor Wert gespeichert ist.
  • Analog zum Betrieb eines Erzeugens eines oben erklärten trags, wird das IAF 315 mit einem ersten Wert geladen, wenn der Semaphor Ladeeintrag 307 in der Ladetabelle 305 gespeichert wird, um eine Sperrvariable oder einen Semaphor für die derzeitige Transaktion zu verfolgen. Falls ein Remote Agent eine Verriegelung mit dem Semaphor anfordert oder erlangt, auf den von der physischen Adresse 310 während der Ausführung der schwebenden Transaktion Bezug genommen wird, dann wird das IAF 315 auf einen zweiten Wert gesetzt, um darzustellen, daß ein Remote Agent eine Verriegelung auf die Transaktion während der Ausführung angefordert oder erlangt hat. Es ist klar, daß mehrere Agents eine Verriegelung verfolgen können, jedoch wird die Invalidierung ausgeführt, wenn einer der Agents eine tatsächliche Verriegelung erlangt.
  • Die Ladetabelle 305 ist nicht auf die in 3 gezeigte Ausführungsform beschränkt. Beispielsweise bestimmt der Transaktionspuffer 265, welche Ladeeinträge, wie z.B. der Ladeeintrag 307, leer sind (Einträge, die nicht von der derzeitigen Transaktion verwendet werden, und Voreinstellungs- oder Garbage-Daten enthalten) und welche Ladeeinträge voll sind (von der derzeitigen Transaktion erzeugte Einträge). Hier kann ein Zähler verwendet werden um einen Zuweisungszeiger zu verfolgen, der auf den derzeitigen derzeitigen eintrag Bezug nimmt. Alternativ, liegt ein anderes Feld, wie z.B. ein Zuweisungsverfolgungsfeld (ATF), in jedem Ladeeintrag vor, um zu verfolgen, ob der Ladeeintragleer, oder voll ist. Beispielsweise hat ein Ladeeintrag 307 ein
  • In einer anderen Ausführungsform sind der Umfang, oder die Länge der geladenen oder gelesenen Datenzeile nicht implizit, sondern stattdessen befindet sich ein anderes Feld, wie z.B. ein Längenfeld, in der Ladetabelle 305, um Länge oder Umfang der geladenen Daten festzulegen. Die Ladetabelle 305 kann eine fortgeschrittene Ladeadressentabelle (ALAT) sein, die im Stand der Technik zur Verfolgung von spekulativen Ladungen verwendet wird.
  • Wenn man nun wieder auf 3 Bezug nimmt, dann speichert der Schreibspeicherpuffer 325 einen Schreibeintrag, wie z.B. den Schreibeintrag 327, der jeder Datenzeile oder Teil-Datenzeile entspricht, in die in einem gemeinsam genutzten Speicher während der Ausführung einer schwebenden Transaktion oder des kritischen Abschnitts geschrieben werden, oder die aktualisiert werden soll. Zum Beispiel umfaßt der Schreibeintrag 327 eine Darstellung einer physischen Adresse 330, ein invalidierendes Zugriffsfeld (IAF) 335, und ein Datenhaltefeld 340. Als erstes Beispiel umfaßt die Darstellung der physischen Adresse 330 eine tatsächliche physische Adresse, die dazu verwendet wird, um auf einen Speicherort Bezug zu nehmen, in den am Ende oder während der Ausführung eines schwebenden kritischen Abschnitts geschrieben werden soll. Als zweites Beispiel enthält die Darstellung eine kodierte Version, oder einen Teil der physischen Adresse, wie z.B. einen Tag-Wert, um auf eine Datenzeile Bezug zu nehmen, in die am Ende der Ausführung eines schwebenden kritischen Abschnitts geschrieben werden soll.
  • Für das obige Beispiel hat das IAF 335 einen ersten Wert, wenn der Schreibeintrag 337 zuerst in der Schreibtabelle 325 gespeichert wird, und wird auf einen zweiten Wert gewechselt, wenn ein invalidierender Zugriff auf einen Speicherort, auf den von einer physischen Anschrift 330 Bezug genommen wird, von einem Remote Agent durchgeführt wird. In einer Ausführungsform, stellt es einen invalidierenden Zugriff dar, daß ein Remote Agent in den Speicherort schreibt, auf den von der physischen Adresse 330 während der Ausführung des schwebenden kritischen Abschnitts Bezug genommen wird. Weiterhin bedeutet es einen invalidierenden Zugriff, daß ein Remote Agent während der Ausführung des schwebenden kritischen Abschnitts aus der physischen Adresse 330 liest. Ein anderer invalidierender Zugriff kann sein, daß ein Remote Agent die Eigentümerschaft an dem Speicherort erwirbt, auf den von der physischen Anschrift 330 Bezug genommen wird. Als vereinfachtes Beispiel wird das IAF 335 auf einen ersten logischen Wert 1 initialisiert, nachdem der Schreibeintrag 327 gespeichert wurde. Wenn ein Remote Agent aus dem Speicherort liest, oder auf ihn schreibt, auf den von der physischen Adresse 330 während der Ausführung des schwebenden kritischen Abschnitts Bezug genommen wurde, wird das IAF 325 auf einen zweiten logischen Wert 0 geändert, um wiederzugeben, daß ein Remote Agent einen invalidierenden Zugriff auf den Speicherort durchgeführt hat, auf den durch den Schreibeintrag 327 Bezug genommen wurde.
  • Der Schreibeintrag 327 stellt das Datenhaltefeld 340 dar, um die spekulativen Daten, die geschrieben werden sollen, zu puffern oder zu halten. Das Datenhaltefeld 340 kann auch dazu verwendet werden, um zu verfolgen, welcher Teil einer verfolgten Datenzeile neue Daten enthält, und welcher Teil im Gegensatz dazu nicht von dem spekulativen Speicher als Ziel verwendet wurde. Das Verfolgen der ausgetauschten Teile kann beim Zusammenführen der spekulativen Daten auf tatsächliche Speicherorte später während des Festlegungsprozesses helfen.
  • In einer Ausführungsform wird die Eigentümerschaft an einer zu beschreibenden Zeile aus einer Speicheroperation erlangt, wenn die individuelle Operation innerhalb der Transaktion ausgeführt und ausgeschieden wird. Als Alternative zu einer Vorabruf- Eigentümerschaft (Prefetching Ownership) wird bei der Ausscheidung jeder individuellen Schreib- oder Speichermikrooperation die Eigentümerschaft an der physischen, zu beschreibenden Adresse nicht vor dem Ende der Transaktion vor der Ausscheidung der Transaktion erworben. In beiden Ausführungsformen wird am Ende der Transaktion, wenn die Eigentümerschaft während der Ausführung der Transaktion aufgegeben wurde, die Transaktion nicht ausgeschieden (Fehler), da ein invalidierender Zugriff ausgeführt wurde. Wenn die Transaktion ausgeschieden werden soll, dann wird die Eigentümerschaft an jeder zu beschreibenden Zeile nicht aufgegeben, bis alle Speicheraktualisierungen festgelegt wurden. Wenn ein Remote Agent während dem Ausscheidungsvorgang die Eigentümerschaft einer Zeile anfordert, kann die Anforderung in eine Schlange eingereiht werden, und schwebend gehalten werden, bis alle Speicheraktualisierungen oder Schreibvorgänge festgelegt wurden.
  • Die Schreibtabelle 325 ist nicht auf das in 4 gezeigte beschränkt. Sie kann z.B. ein Pinning Feld enthalten, welches nicht abgebildet ist, um Snoops von Remote Agents auf einen gemeinsam genutzten Speicher, wie einen Cache zu sperren, wenn sie gesetzt sind. Das Pinning Feld eines Schreibeintrags wird auf einen ersten Wert gesetzt, um Snoops auf eine entsprechende physische Adresse zuzulassen, und auf einen zweiten Wert gesetzt, wenn eine Cache Zeile gepinnt wird, um Snoops auf die Cache Zeile durch Remote Agents zu sperren. Ein Pinning Feld kann während des Festlegungsprozesses besonders nützlich sein, um Snoops zu blocken und jegliche Änderungen der Eigentümerschaft zu verbieten. Wie oben dargestellt, können jegliche Anfragen nach Eigentümerschaft von einem Remote Agent bis nachdem die Transaktion festgelegt wurde, in eine Warteschlange eingereiht werden. Ein beispielhaftes Verfahren, um das Pinning Feld zu implementieren, ist das Blocken von Snoops für einen vorbestimmten Zeitraum, wenn das Pinning Feld gesetzt ist, wobei der vorbestimmte Zeitraum von der Anzahl von vorhandenen Speicherpuffer abhängt.
  • Die Schreibtabelle 325 kann auch ein Längenfeld enthalten, wie z.B. das Längenfeld, welches mit Bezug auf die obige Ladetabelle 305 erörtert wurde, um die Länge von spekulativen, zu schreibenden Daten zu speichern. Jede Menge von anderen Feldern oder Kombinationen von Feldern kann in einer Speichertabelle oder einem Puffer 325 enthalten sein. Zum Beispiel wird ein Remote Agent Feld verwendet, um eine Prozessor ID oder eine andere ID zu verfolgen, um den Remote Agent zu identifizieren, der einen invalidierenden Zugriff ausgeführt hat.
  • Der Transaktionspuffer 265 kann in Hardware oder Firmware ausgeführt werden. In einem anderen Fall wird der Transaktionspuffer 365 in Software implementiert, und von einer integrierten Schaltung 205 ausgeführt. In noch einem anderen Beispiel wird der Transaktionspuffer in Microcode implementiert.
  • Nach Ausführen aller Microcode Operationen innerhalb des kritischen Abschnitts oder der Transaktion wird die Transaktion üblicherweise festgelegt, falls während der Ausführung des schwebenden kritischen Abschnitts kein invalidierender Zugriff erfolgt ist. Nach Ausscheidung wird die Transaktion üblicherweise in einer atomischen Weise festgelegt. Als Beispiel umfaßt das atomische Schreiben oder Festlegen eines schwebenden kritischen Abschnitts das Schreiben aller und jeder während der Ausführung eines kritischen Abschnitts gepufferten Datenzeilen in einen gemeinsam genutzten Speicher.
  • In einer Ausführungsform wird eine schwebende Transaktion von einer Ausscheidungslogik 235 ausgeschieden, die in 2 gezeigt wird, nachdem der Transaktionspuffer 265 auf invalidierende Zugriffe geprüft wurde, die während der Ausführung des schwebenden kritischen Abschnitts verfolgt wurden. Als ein Beispiel für eine schwebende Transaktion die ausgeschieden werden soll, wird jedes Ladeeintrag IAF, das in einer Ladetabelle 305 gespeichert ist, und jedes Schreibeintrag IAF, das in der Speichertabelle, oder dem Speicherpuffer 325 gespeichert ist, das der schwebenden Transaktion zugeordnet ist, geprüft. Zusätzlich werden jegliche Ladeeinträge, die erzeugt wurden, um eine Sperrvariable, oder einen Semaphor für die schwebende Transaktion zu verfolgen, auch geprüft, um sicherzustellen, daß kein invalidierender Zugriff von einem Remote Agent ausgeführt wurde, der die Sperre oder den Semaphor anfordert. Wenn keine invalidierenden Zugriffe entdeckt werden, dann wird die Ausscheidung der Transaktion gewährt und die Speicherpuffer werden gepinnt. Wenn gepinnt wurde und die Ausscheidung gewährt wurde, was gleichzeitig ausgeführt wird, dann können die Speicheraktualisierungen der Reihe nach erfolgen. Wenn dies abgeschlossen ist, wird der Pinnstatus aufgehoben, die Zeile aufgegeben und die Transaktion als festgelegt betrachtet.
  • Als vereinfachtes Beispiel enthält eine Transaktion eine Mikrooperation, um von dem Ort 0001 zu lesen, und den Wert 1010 an den Ort 0002 zu schreiben. Wenn die erste Mikrooperation ausgeführt wird, speichert die Ladetabelle 305 den Ladeeintrag 307, der das physische Adressfeld 310 umfaßt, das den Ort 0001 darstellt, und ein IAF 315 mit einem ersten Wert 1. Beim Ausführen der zweiten Mikrooperation würde die Speichertabelle 325 den Schreibeintrag 327 speichern, der die physische Adresse 330 umfaßt, die den Ort 0002, IAF 335 mit einem ersten Wert von 1, und 1010 im Datenfeld 340 darstellt. Weiterhin können die Lade- und Schreibeinträge weiterhin Umfangs- oder Längeninformation umfassen, oder andere oben beschriebene Felder. Wenn ein Remote Agent an den Ort 0001 während der Ausführung, oder während die Transaktion schwebend ist, schreibt, dann wird das IAF 315 auf den zweiten Wert von 0 gesetzt, um darzustellen, daß ein invalidierender Zugriff ausgeführt wurde. Beim Versuch der Ausscheidung der Transaktion repräsentiert IAF 315 einen invalidierenden Zugriff, so daß die Transaktion nicht ausgeschieden und der Wert 1010 nicht an den Ort 0002 geschrieben würde. Wenn jedoch kein Remote Agent an den Ort 0001 schreibt, und kein Remote Agent den Ort 0002 liest oder an diesen schreibt, wie durch die Werte 1 im IAF 315 und 335 dargestellt, wird die Transaktion ausgeschieden, und der Wert 1010 wird an den Ort 0002 geschrieben.
  • Nach Feststellen eines invalidierenden Zugriffs, der während der schwebenden Transaktion auftrat, wobei daher die Transaktion nicht ausgeschieden wurde, gibt es eine Anzahl von Optionen. Die erste Option enthält eine Wiederausführung der Transaktion. Wie oben erörtert, werden die Eingaberegister entweder (1) auf ihren Ausgangszustand reinitialisiert, wenn sie während des schwebenden Zustands der Transaktion neue Daten erhalten haben, oder (2) liegen bereits in ihrem Originalzustand vor, wenn sie während des schwebenden Zustands der Transaktion keine neuen Daten erhalten haben. Folglich wird die Transaktion spekulativ, in der gleichen Weise wie zuvor, wieder ausgeführt. Eine zweite Option umfaßt das spekulative Wiederausführen der Transaktion unter Verwendung eines Backoff Algorithmus in Verbindung mit dem Remote Agent, der den invalidierenden Zugriff ausgeführt hat. Beispielsweise wird ein exponentieller Backoff Algorithmus verwendet, um zu versuchen, die Transaktion abzuschliessen, ohne daß der Remote Agent nach den gleichen Daten strebt. Eine andere Option enthält die Verwendung eines nicht blockenden Softwaremechanismus, der im Stand der Technik bekannt ist, um die Transaktion nochmals auszuführen. Eine vierte Option umfaßt nach
    spekulativer Wiederausführung der Transaktion mit einer vorbestimmten Anzahl von Wiederholungen das nicht spekulative Wiederausführen der Transaktion mit Sperren oder Semaphoren. Die Semaphore sperren effektiv diejenigen Adressen, von welchen während der Transaktion gelesen und auf die während der Transaktion geschrieben werden soll.
  • Die vierte Option, bei der Sperren oder Semaphoren als Fehlermechanismen verwendet werden, kann in Hardware, Software, oder in einer Kombination aus Hardware zur Ausführung von Software implementiert werden. Zum Beispiel wird bei in Software implementierten Sperrmechanismen ein Semaphor dazu verwendet, um den Zugriff auf eine beliebige Granularität von Speicherorten zu sperren. Jeder Prozessor, der auf einen bestimmten Speicherort zugreifen möchte, strebt nach dem Semaphor, der diesen Ort absichert. Wenn der Semaphor auf einen ersten Wert gesetzt ist, der keine Sperre repräsentiert, dann schaltet der erste Prozessor den Semaphor auf einen zweiten Wert, der wiedergibt, daß die Adresse oder der Speicherort gesperrt ist. Umschalten des Semaphor auf den zweiten Wert stellt durch Software sicher, daß der Prozessor, der den Semaphor umgeschaltet hat, ausschliesslichen Zugriff auf diesen Speicherort erhält, und wahrscheinlich auf einen Bereich von Speicherorten, die von diesem Semaphor bewacht werden. Die integrierte Schaltung 305 kann eine separate Lockout-Logik 260 aufweisen, um die Semaphoren durch Software aufzurufen oder auszuführen, oder kann einfach eine bestehende Ausführungslogik verwenden, um die Software-Outlocks auszuführen oder aufzurufen. Der Semaphor kann durch Software implementiert werden, daher kann der Semaphor in dem Systemspeicher (nicht abgebildet) vorhanden sein.
  • Als anderes Beispiel zur Implementierung der Lockout-Logik 260, die in 2 gezeigt wird, verwendet die Lockout-Logik 260, oder auf der Lockout-Logik 260 ausgeführte Software einen Sperrmechanismus, um zumindest einen Remote Agent daran zu hindern, auf vorbestimmte Zeilen eines gemeinsamen Speichers zuzugreifen. In einer Ausführungsform, enthält die Lockout-Logik ein Sperrbit. Als erstes Beispiel in Hardware befindet sich das Sperrbit in einem Register, oder in der Cache Zeile. Als zweites Beispiel wird das Sperrbit in Software dargestellt, die auf der Lockout-Logik 260 ausgeführt wird und in dem Systemspeicher vorhanden ist.
  • Wenn das Sperrbit einen ersten Wert aufweist, dann ist ein Zugriff auf vorbestimmte oder bezeichnete Zeilen des gemeinsamen Speichers zugelassen. Wenn jedoch das Sperrbit einen zweiten Wert aufweist, dann ist der Zugriff auf die bezeichneten Zeilen des gemeinsam genutzten Speichers verwehrt. Das Sperrbit kann im Cache 240 vorliegen, in der Lockout-Logik 260, jedem anderen Speicher in dem Prozessor 205, oder dem Systemspeicher. Jede Granularität von Datenzeilen kann durch einen einzigen Semaphor gesperrt werden, oder durch Setzen eines einzelnen Daten-Bits. Als Beispiel werden 2s Zeilen durch das Setzen eines einzelnen Sperrbits gesperrt.
  • Als Beispiel für die Verwendung von Semaphoren als Fehlergesicherter Mechanismus wird eine Transaktion mit einer ersten Anzahl von Durchläufen ausgeführt, wie z.B. fünfmal, aber während jeder Ausführung führt ein Remote Agent einen invalidierenden Zugang auf eine Adresse aus, die während der Ausführung der Transaktion gelesen wurde, wie z.B. die anschauliche Adresse 0001. Wenn der Transaktionscode ein sechstes Mal durchschleift wird, wird eine Ausführungsschwelle von sechs erreicht. Wenn die Schwelle oder die vorbestimmte Anzahl von Ausführungen erreicht ist, wird ein Semaphor verwendet, um die Transaktion auszuführen.
  • In einer Software-Implementierung wird um eine von Semaphoren abgesicherte Adresse 0001 konkurriert. Wenn die Adresse 0001 momentan nicht von dem Semaphor gesperrt ist, wird der Semaphor im Wert umgestellt, um wiederzugeben, daß er derzeit gesperrt ist. Der Befehl wird dann nicht spekulativ wieder ausgeführt.
  • Als Alternative setzt in einer Hardware Anwendung eine Sperrschaltung, wie z.B. eine Sperrschaltung 263, die aus einem einzelnen Transistor, oder einer beliebigen Anzahl von Transistoren bestehen kann, ein Sperrbit, welches der Adresse 0001 zugeordnet ist, auf einen zweiten Wert, der Remote Agents zumindest daran hindert, auf die Adresse 0001 während der sechsten Ausführung der Transaktion zuzugreifen.
  • Das Sperren von Datenzeilen ist nicht auf die Verwendung von Semaphoren, oder eines Sperrbit beschränkt, sondern umfaßt jedes Verfahren, oder jede Vorrichtung, um Zugriffe auf Datenzeilen zu verhindern, unabhängig davon, ob sie in Hardware oder Software implementiert sind. Als anderes Beispiel wird eine Drei-Zustand-Vorrichtung verwendet, um einen Zwischenverbindungszugriff auf Datenzeilen zu verhindern.
  • Unter Bezugnahme auf 4 wendet, wird ein Beispiel einer in Software demarkierten Transaktion gezeigt. Wie oben dargestellt enthält eine Transaktion üblicherweise eine Gruppe von Befehlen oder Mikrooperationen, die ausgeführt werden sollen. Daher kann eine Transaktionserklärung jedes Verfahren zum Demarkieren einer Transaktion sein. In 4 weist die Transaktion 410 Beispiele von einigen Operationen auf, wie z.B. Speicher-Lesen, Operationen ausführen, und Speicher aktualisieren oder beschreiben. Die Transaktion 410 wird durch die Transaktionserklärung oder durch den Transaktionsidentifizierer 405 demarkiert, die als Atomic {...}; abgebildet ist. Jedoch ist eine Transaktionserklärung nicht derart Form beschränkt. In einem einfachen Beispiel ist Paar von Klammern, die eine Mehrzahl von Operationen oder Befehlen gruppieren, eine Transaktionserklärung oder ein Transaktionsidentifizierer, um die Grenzen einer Transaktion oder eines kritischen Abschnitts zu identifizieren.
  • Ein Beispiel einer kompilierten Transaktionserklärung 405 wird in dem kompilierten Beispiel 415 gezeigt. Die Grenzen der Transaktion 430 werden durch einen Transaktionsidentifizierer 425 identifiziert, daher ist ein Prozessor, der die Transaktion ausführt in der Lage, die Mikrooperationen zu identifizieren, die eine Transaktion oder einen kritischen Abschnitt vom Identifizierer bilden. Ein anderes Beispiel der kompilierten Transaktionserklärung 405 wird in dem kompilierten Beispiel 425 gezeigt. In diesem Beispiel identifiziert die Transaktionserklärung 435 die Grenzen der Transaktion 440.
  • Um weiter durch dieses Beispiel zu gehen, beschreiben die Zeilen 1 bis 3 eine Transaktionsausführung, setzen die Prädikate Px auf 1 und Py auf 0, initialisieren eine Zählvariable in Rm und die Schwelle der Zählung in Rn auf 0. Prädikate enthalten üblicherweise einen Ausführungspfad oder -typ, wenn das Prädikat einen Wert hat, und einen anderen Ausführungspfad oder -typ, wenn das Prädikat einen anderen Wert hat. In den Zeilen 4 bis 9 wird die Zählvariable auf eine Zahl initialisiert, die die Anzahl wiedergibt, wie oft die Transaktion spekulativ ausgeführt werden soll, die Zählvariable dann mit einer Schwelle verglichen oder anderweitig bewertet, um zu sehen, ob das Sperrprädikat gesetzt werden soll, um die Transaktion mit Sperren oder Semaphoren (nicht spekulativ) auszuführen, die Zählvariable in Abhängigkeit vom Aufbau dekrementiert oder inkrementiert, um die Häufigkeit darzustellen, mit der die Transaktion ausgeführt wurde, und die Transaktion begonnen. Die Zeilen 10 bis 12 enthalten jede beliebige Menge von Operationen in einem kritischen Abschnitt in der Transaktion 440. Schliesslich enthält die Zeile 14 eine Prüfungsanweisung, um die Transaktionsverfolgungslogik/-puffer wie oben beschrieben zu prüfen, um Zugriffe zu invalidieren, die von einem Remote Agent während der Ausführung der Transaktion durchgeführt wurden.
  • Wenn man sich nun 5 zuwendet, wird eine Ausführungsform eines Systems unter Verwendung einer Transaktionsausführung gezeigt. Die Mikroprozessoren 505 und 510 werden dargestellt, jedoch kann das System eine beliebige Anzahl von physischen Mikroprozessoren aufweisen, wobei jeder physische Mikroprozessor eine beliebige Anzahl von Cores und eine beliebige Anzahl von logischen Prozessoren aufweisen kann, die eine Transaktionsausführung verwenden. Beispielsweise haben die Mikroprozessoren 505 und 510 jeweils eine Mehrzahl von Cores auf ihrem Mikrochip, wobei jeder Core eine Mehrzahl von Threads aufweist, was zu Multi-Threading-Cores führt. In einer Ausführungsform sind die Mikroprozessoren 505 und 510 in der Lage ein spekulative Ausführung außerhalb der Reihenfolge und nicht spekulative Ausführung durchzuführen. In einer anderen Ausführungsform sind die Mikroprozessoren 505 und 510 nur in der Lage, eine Ausführung der Reihe nach durchzuführen.
  • Die Mikroprozessoren 505 und 510 haben Caches 507 und 512. In einer Ausführungsform speichern die Caches 507 und 512 kürzlich abgerufene Daten und / oder Befehle aus dem Systemspeicher 530. In dieser Ausführungsform würden der Cache 507 und der Cache 512 Daten cachen, die ihren jeweiligen Mikroprozessoren eigen sind. Der Speicher 530 kann ein gemeinsam genutzter Speicher sein, auf den die Transaktionsausführung zugegriffen hat. In einer anderen Ausführungsform ist jeder in dem System vorhandene Speicher, auf den während der Transaktion zugegriffen wird, ein gemeinsam genutzter Speicher. Zum Beispiel, falls die Mikroprozessoren 505 und 510 auf einen gemeinsam genutzten Cache höherer Ebene zugreifen, der nicht in 5 abgebildet ist.
  • Die Mikroprozessoren 505 und 510 werden mit einem Speicherkontroller 520 durch eine Zwischenverbindung 515 gekoppelt gezeigt. Der Speicherkontroller ist jeweils durch Zwischenverbindungen 535 an eine Graphikvorrichtung 540 gekoppelt. In einer Ausführungsform ist die Graphikvorrichtung 540 in den Speicherkontroller 520 integriert. Der Speicherkontroller wird auch mit dem Systemspeicher 530 durch die Zwischenverbindung 525 gekoppelt. Der Systemspeicher 530 kann jede Art von Zugriffsspeicher sein, der in einem System verwendet wird. In einer Ausführungsform ist der Systemspeicher 530 ein Direktzugriffsspeicher (RAM), wie z.B. ein statischer Direktzugriffsspeicher (SRAM), ein dynamischer Direktzugriffsspeicher (DRAM), ein Single Data Rate (SDR) RAM, ein Double Data Rate (DDR) RAM, ein beliebiger anderer Multiple Data Rate RAM, oder jede beliebige andere Art von Zugriffsspeicher.
  • Der Eingangs / Ausgangs IO Controller 550 ist mit dem Speicher Controller 545 durch die Zwischenverbindung 545 verbunden. Der I/O Controller 550 ist mit einem Speicher 560, der Netzschnittstelle 565 und den I/O Vorrichtungen 570 durch die Zwischenverbindung 555 verbunden. In einer anderen Ausführungsform ist der Speicher 560 eine Festplatte. In noch einer anderen Ausführungsform ist der Speicher 560 ein Plattenspeicher. In noch einer anderen Ausführungsform ist der Speicher 560 jede beliebige statische Speichervorrichtung in dem System. In einer Ausführungsform stellt die Netzschnittstelle 565 die Verbindung mit einem lokalen Netz (LAN) her. In einer anderen Ausführungsform stellt die Netzschnittstelle 656 die Verbindung mit einem grösseren Netz wie z.B. dem Internet her. Eingabe- oder Ausgabevorrichtungen 570 können jegliche Benutzereingabe- oder systembezogene Ausgabevorrichtungen, wie z.B. Tastatur, Maus, Monitor, oder Drucker umfassen.
  • Wenn man als nächstes auf 6 Bezug nimmt, dann wird eine Ausführungsform eines Flussdiagramms für ein Verfahren zum Ausführen einer Transaktion dargestellt. Im Block 605 werden während der Ausführung einer ersten Transaktion invalidierende Zugriffe auf mehrere Zeilen in einem gemeinsam genutzten Speicher verfolgt, auf den durch die erste Transaktion Bezug genommen wurde.
  • In einem Beispiel wird ein Transaktionspuffer verwendet, um die invalidierenden Zugriffe zu verfolgen. Der Transaktionspuffer enthält eine Ladetabelle und eine Speichertabelle oder einen Speicherpuffer. Die Ladetabelle verfolgt invalidierende Zugriffe auf Adressen, von welchen während der Ausführung der ersten Transaktion geladen wurde. Invalidierende Zugriffe auf Adressen oder Speicherorte von denen geladen wurde, umfassen einen Remote Agent, wie einen Prozessor, Core, Thread, oder einen logischen Prozessor, der nicht dafür vorgesehen ist, die erste Transaktion auszuführen und der auf eine Adresse oder einen Speicherort, von der während der Ausführung der ersten Transaktion geladen wurde, schreibt. Weiterhin kann die Ladetabelle einen Sperrmechanismuseintrag enthalten, um invalidierende Zugriffe auf einen Semaphor oder andere Sperrmechanismen während der Ausführung der Transaktion zu verfolgen. In diesem Beispiel enthält ein invalidierender Zugriff auf den Sperrmechanismus die Anfrage oder das Erlangen einer Sperre durch einen Remote Agent auf einer Adresse, die durch den Sperrmechanismus bewacht oder gesperrt ist.
  • Die Speichertabelle oder der Speicherpuffer, die ähnlich der Lasttabelle arbeiten, verfolgen invalidierende Zugriffe auf Adressen oder Speicherorte, die bei Festlegung der Transaktion beschrieben werden müssen. Ein invalidierender Zugriff kann hier einen Remote Agent enthalten, der entweder aus den vorgenannten Adressen oder Speicherorten liest oder auf sie schreibt.
  • Im Block 610 wird die erste Transaktion mit einer ersten Anzahl von Wiederholungen ausgeführt, wenn invalidierende Zugriffe verfolgt werden. Daher, wenn ein invalidierender Zugriff während der Ausführung der ersten Transaktion verfolgt wird, wird die erste Transaktion lediglich wieder ausgeführt. Falls jedoch die erste Transaktion mit einer vorbestimmten Anzahl von Wiederholungen ausgeführt wurde, was durch eine Zählvariable in Software oder Logik innerhalb des Prozessors wiedergegeben werden kann, werden die Mehrzahl von Zeilen in dem gemeinsam genutzten Speicher, auf den von der ersten Transaktion Bezug genommen wurde, gesperrt. Das Sperren kann durch einen in Software implementierten Sperrmechanismus, wie z.B. einen Semaphor, der einem Prozessor exklusiven Zugriff auf die Mehrzahl von Zeilen gibt oder den Zugriff sperrt, erfolgen. Das Sperren kann auch durch Hardware erfolgen, die eine Lockout-Logik verwendet, um physisch den Zugriff auf die Mehrzahl von Zeilen auszuschliessen, auf die durch die erste Transaktion Bezug genommen wurde.
  • Im Block 620 wird die Transaktion wieder ausgeführt, nachdem der Zugriff auf die Mehrzahl von Zeilen gesperrt wurde. Daher hätte der Prozessor, der ein Core, oder ein logischer Prozessor sein kann, der die Transaktion spekulativ wieder ausführt, aber dabei versagt, die Ergebnisse festzulegen, da invalidierende Zugriffe verfolgt wurden, einen ausschliesslichen Zugriff auf die Mehrzahl von Zeilen, auf die durch die erste Transaktion Bezug genommen wurde. Folglich, kann die erste Transaktion nicht-spekulativ ausgeführt werden, da dem ausführenden Prozessor der ausschliessliche Zugriff zur Verfügung steht.
  • Wendet man sich 7 zu, wird dort eine Ausführungsform des Code Flusses für die Transaktionsausführung gezeigt. Im Block 705 wird eine Gruppe von Mikrooperationen ausgeführt, die, wenn zusammen gruppiert, mehrfache Befehle oder Makrooperationen umfassen. Wie oben in Block 710 gezeigt, wird das Invalidieren der Zugriffe auf gemeinsame Speicherorte, die jeder Lade- und Speichermikrooperation zugeordnet sind, verfolgt.
  • In Block 715 wird die Ausführung der ersten Gruppe von Mikrooperationen durchlaufen, bis (1) keine invalidierenden Zugriffe verfolgt werden, oder (2) die erste Gruppe von Mikrooperationen mit einer ersten Häufigkeit ausgeführt wurde. Daher, anstatt auf einen neuen Ort in dem Code springen zu müssen, kann die gleiche Gruppe von Eingangsregistern verwendet werden, und die Transaktion kann einfach nochmals durchlaufen werden. Wie oben festgestellt, wird dies durch Beeinflussen der Gruppe von Eingaberegistern während des schwebenden Zustands der Transaktion gegen einen Empfang neuer Daten und auch durch Spilling und Refilling der Inhalte des Eingangsregisters bei Wiederverwendung des Eingangsregisters erreicht. Wiederum werden die gemeinsam genutzten Speicherorte, die jeder Lade- und Speichermikrooperation zugeordnet sind, in Block 720 gesperrt und wird die erste Gruppe von Mikrooperation wieder ausgeführt.
  • Die oben beschriebene Transaktionsausführung vermeidet die falsche Konkurrenzierung, die potentiell in Sperrarchitekturen auftritt, und begrenzt die Konkurrenzierung auf tatsächliche Konkurrenzierung durch Verfolgung von invalidierenden Zugriffen auf Speicherorte während der Ausführung einer Transaktion. Weiterhin, wenn die Transaktion mit einer bestimmten Anzahl von Wiederholungen wieder ausgeführt wird, da eine tatsächliche Konkurrenzierung weiterhin auftritt, dann wird die Transaktion nicht spekulativ unter Verwendung von Sperren oder Semaphoren ausgeführt, um sicherzustellen, daß die Transaktion ausgeführt und festgelegt wird, nachdem versucht wurde, die Transaktion mit einer vorbestimmten Häufigkeit spekulativ auszuführen. Alternativ, kann ein nicht sperrender Softwaremechanismus anstatt eines nicht spekulativen Ausführungsverfahrens angewendet werden. Wie oben festegestellt, können spekulative Registerzustandsaktualisierungen oder - festlegungen durch Sicherstellen, daß die „Live-in“ Daten der Transaktion bewahrt werden, in Software unterstützt werden, entweder in den ursprünglichen Eingaberegistern oder durch Kopieren der Eingangsdatenwerte auf sichere Orte, die entweder andere Register oder Speicher sein können, von denen sie wiederhergestellt werden können, falls die Transaktion ausgeschieden werden muss. Ein Prozessor kann auch Hardware Mechanismen enthalten, um den Registerzustand zu puffern, möglicherweise unter Verwendung eines Mechanismus, der typischerweise verwendet wird, um eine Ausführung ausserhalb der Reihefolge zu unterstützen.
  • In der vorangegangen Beschreibung wurde die Erfindung mit Bezug auf bestimmte, beispielhafte Ausführungsformen beschrieben. Es ist jedoch ersichtlich, daß verschiedene Modifikationen und Änderungen daran durchgeführt werden können, ohne von der umfassenderen Idee und Umfang der Erfindung abzuweichen, wie er in den beigefügten Ansprüchen dargelegt ist. Die Beschreibung und die Zeichnungen sind demgemäss als darstellend, und nicht als einschränkend anzusehen.

Claims (9)

  1. Prozessor, aufweisend: Einen Cache-Speicher (240); Eine Ausführungslogik (275), die mit dem Cache-Speicher gekoppelt ist, wobei die Ausführungslogik eingerichtet ist zum spekulativen Ausführen einer Transaktion, und zum spekulativen Wiederausführen der Transaktion, wenn ein invalidierender Zugriff auf eine zumindest Zeile einem gemeinsam genutzten Speicher während der Ausführung der Transaktion verfolgt wird; Eniem Transartions puffer uitemer Transaktionsverfolgungslogik (275) zum Verfolgen eines invalidierenden Zugriffs auf die Zunindes reme Zeile in dem gemeinsam genutzten Speicher, auf die während einer spekulativen Ausführung durch die Transaktion verwiesen wird, wobei die Transaktionsverfolgungslogik eingerichtet ist, eine Mehrzahl von Einträgen zu halten, wobei jeder Eintrag eine Adresse, die mit einer der spekulativen Lade- oder Speicheroperationen verbunden ist, und em Feld für invalidurde Zugniffe aufweist, und Eine Lockout-Logik (260) zum Sperren des Zugriffs auf die zumindesteine Zeile in dem gemeinsam genutzten Speicher, auf die durch die Transaktion verwiesen wird, nach einer ersten Anzahl von Wiederholungen, die Transaktion spekulativ wiederauszuführen; und um die Ausführungsiogik (275) in die Lage zu versetzen die Transaktion nicht spekulativ wiederauszuführen nach dem Sperren des Zugriffs auf die zumindesteine Zeile dem gemeinsam genutzten Speicher.
  2. Prozessor nach Anspruch 1, wobei ein invalidierender Zugriff auf zumindesteine Zeile in dem gemeinsam genutzten Speicher umfasst, dass: (1) ein Remote Agent auf die zumindesteine Zeilein dem gemeinsam genutzten Speicher , schreibt, die während der spekulativen Ausführung der ersten Transaktion geladen wurde oder (2) ein Remote Agent in die zumindest Zeile schreibt oder aus der zumindesteinen Zeile in dem gemeinsam genutzten Speicher liest, in die nach Festlegung der ersten Transaktion geschrieben werden soll.
  3. Prozessor nach Anspruch 1, wobei das Verfolgen von invalidierenden Zugriffen auf zumindesteinen Zeile in einem gemeinsam genutzten Speicher umfasst: Speichern eines Ladeeintrags in einer Ladetabelle für jede Zeile in dem gemeinsam genutzten Speicher, die während der Ausführung der ersten Transaktion geladen wurde, durch die Transaktionsverfolgungslogik, wobei jeder Ladeeintrag eine Darstellung einer Adresse umfasst, die der geladenen Zeile zugeordnet ist, und ein Feld mit invalidierenden Zugriffen, um (1) einen ersten Wert bei Speicherung des Ladeeintrags in der Ladetabelle zu speichern, um darzustellen, dass während der Ausführung der ersten Transaktion kein invalidierender Zugriff stattgefunden hat, und (2) einen zweiten Wert zu speichern, wenn während der Ausführung der ersten Transaktion ein invalidierender Zugriff stattgefunden hat.
  4. Prozessor nach Anspruch 3, wobei das Verfolgen von invalidierenden Zugriffen auf zeinendesine in einem gemeinsam genutzten Speicher weiterhin umfasst: Speichern eines Schreibeintrags in einer Schreibtabelle für jede Zeile in dem gemeinsam genutzten Speicher, auf die am Ende der Ausführung der ersten Transaktion geschrieben werden soll, durch die Transaktionsverfolgungslogik, wobei jeder Schreibeintrag eine Darstellung einer physischen Adresse umfasst, die der Zeile zugeordnet ist, in die geschrieben werden soll, ein Datenfeld und ein Feld mit invalidierenden Zugriffen, um (1) bei Speicherung des Ladeeintrags in die Ladetabelle einen ersten Wert zu speichern, um darzustellen, dass während der Ausführung der ersten Transaktion kein invalidierender Zugriff stattgefunden hat, und (2) einen zweiten Wert zu speichern, wenn während der Ausführung der ersten Transaktion ein invalidierender Zugriff stattgefunden hat.
  5. Prozessor nach Anspruch 4, wobei jeder Schreibeintrag und jeder Ladeeintrag weiterhin ein Längenfeld umfasst, um die Länge der Zeile zu speichern, die geladen wurde, oder der Zeile, die geschrieben werden soll. ί
  6. Prozessor nach Anspruch 4, wobei die Länge jeder geladenen Zeile und jeder zu schreibenden Zeile im Aufbau des Prozessors impliziert ist.
  7. Prozessor nach Anspruch 1, weiterhin umfassend das Beeinflussen von Eingabederzeitigen registern, die während der Ausführung der ersten Transaktion verwendet werden, gegen das Empfangen neuer Daten.
  8. Prozessor nach Anspruch 7, weiterhin umfassend Übergeben des Inhalts eines ersten Eingabergistersauf ein zweites Register, falls das erste Eingaberegister während der Ausführung der ersten Transaktion wieder verwendet wird.
  9. Prozessor nach Anspruch 8, weiterhin umfassend das Wiederladen des ersten Eingabergisters mit Inhalten, die in dem zweiten Register gespeichert sind, nach dem spekulativen Wiederausführen der Transaktion.
DE112005003874.2T 2004-12-29 2005-12-23 Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung Active DE112005003874B3 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/027,623 US7984248B2 (en) 2004-12-29 2004-12-29 Transaction based shared data operations in a multiprocessor environment
US11/027,623 2004-12-29

Publications (1)

Publication Number Publication Date
DE112005003874B3 true DE112005003874B3 (de) 2021-04-01

Family

ID=36116231

Family Applications (3)

Application Number Title Priority Date Filing Date
DE112005003874.2T Active DE112005003874B3 (de) 2004-12-29 2005-12-23 Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE112005003339T Ceased DE112005003339T5 (de) 2004-12-29 2005-12-23 Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE112005003861.0T Ceased DE112005003861A5 (de) 2004-12-29 2005-12-23 Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE112005003339T Ceased DE112005003339T5 (de) 2004-12-29 2005-12-23 Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE112005003861.0T Ceased DE112005003861A5 (de) 2004-12-29 2005-12-23 Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung

Country Status (6)

Country Link
US (3) US7984248B2 (de)
JP (3) JP4764430B2 (de)
CN (2) CN101095113B (de)
DE (3) DE112005003874B3 (de)
GB (3) GB2451200B (de)
WO (1) WO2006071969A1 (de)

Families Citing this family (136)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752181B2 (en) * 2004-11-08 2010-07-06 Oracle International Corporation System and method for performing a data uniqueness check in a sorted data set
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7421544B1 (en) * 2005-04-04 2008-09-02 Sun Microsystems, Inc. Facilitating concurrent non-transactional execution in a transactional memory system
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US8813052B2 (en) 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded transactional memory
US8001538B2 (en) 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US8225297B2 (en) 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8898652B2 (en) * 2006-03-23 2014-11-25 Microsoft Corporation Cache metadata for accelerating software transactional memory
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
US7647454B2 (en) * 2006-06-12 2010-01-12 Hewlett-Packard Development Company, L.P. Transactional shared memory system and method of control
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US9798590B2 (en) * 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution
US8190859B2 (en) 2006-11-13 2012-05-29 Intel Corporation Critical section detection and prediction mechanism for hardware lock elision
US7802136B2 (en) * 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US8719807B2 (en) 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US8132158B2 (en) * 2006-12-28 2012-03-06 Cheng Wang Mechanism for software transactional memory commit/abort in unmanaged runtime environment
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US8068114B2 (en) * 2007-04-30 2011-11-29 Advanced Micro Devices, Inc. Mechanism for granting controlled access to a shared resource
US8458724B2 (en) 2007-06-15 2013-06-04 Microsoft Corporation Automatic mutual exclusion
US8266387B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US8176253B2 (en) * 2007-06-27 2012-05-08 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization and emulation
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
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8140773B2 (en) 2007-06-27 2012-03-20 Bratin Saha Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
CN101452400B (zh) * 2007-11-29 2011-12-28 国际商业机器公司 处理多处理器系统中事务缓冲器溢出的方法和系统
US7966453B2 (en) 2007-12-12 2011-06-21 International Business Machines Corporation Method and apparatus for active software disown of cache line's exlusive rights
US8122195B2 (en) 2007-12-12 2012-02-21 International Business Machines Corporation Instruction for pre-fetching data and releasing cache lines
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US7941627B2 (en) * 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
US8479166B2 (en) * 2008-08-25 2013-07-02 International Business Machines Corporation Detecting locking discipline violations on shared resources
JP5195212B2 (ja) * 2008-09-17 2013-05-08 株式会社リコー 管理システム、管理装置、管理方法、管理プログラム、および記録媒体
US9639392B2 (en) * 2013-12-17 2017-05-02 Intel Corporation Unbounded transactional memory with forward progress guarantees using a hardware global lock
US8838906B2 (en) * 2010-01-08 2014-09-16 International Business Machines Corporation Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
US8868837B2 (en) * 2010-01-15 2014-10-21 International Business Machines Corporation Cache directory lookup reader set encoding for partial cache line speculation support
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
US8473952B2 (en) * 2010-06-30 2013-06-25 Oracle International Corporation System and method for communication between concurrent transactions using transaction communicator objects
US20120079245A1 (en) * 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit
US8549504B2 (en) * 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
WO2012136766A1 (en) * 2011-04-06 2012-10-11 Telefonaktiebolaget L M Ericsson (Publ) Multi-core processors
US8782352B2 (en) * 2011-09-29 2014-07-15 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment
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
US10286148B2 (en) * 2012-01-23 2019-05-14 Fenwal, Inc. Using physiological data in a medical device
US9268596B2 (en) 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
WO2013115816A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for speculative abort control mechanisms
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9442737B2 (en) * 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
KR101804027B1 (ko) 2012-06-15 2017-12-01 인텔 코포레이션 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
CN105786665B (zh) * 2012-06-29 2019-11-05 英特尔公司 用于测试事务性执行状态的系统
US8914586B2 (en) * 2012-07-31 2014-12-16 Advanced Micro Devices, Inc. TLB-walk controlled abort policy for hardware transactional memory
US8943278B2 (en) 2012-07-31 2015-01-27 Advanced Micro Devices, Inc. Protecting large regions without operating-system support
US9430166B2 (en) * 2012-08-10 2016-08-30 International Business Machines Corporation Interaction of transactional storage accesses with other atomic semantics
US9892063B2 (en) * 2012-11-27 2018-02-13 Advanced Micro Devices, Inc. Contention blocking buffer
US9032152B2 (en) 2013-03-22 2015-05-12 Applied Micro Circuits Corporation Cache miss detection filter
US9535744B2 (en) * 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
US9524195B2 (en) 2014-02-27 2016-12-20 International Business Machines Corporation Adaptive process for data sharing with selection of lock elision and locking
CA2830605A1 (en) * 2013-10-22 2015-04-22 Ibm Canada Limited - Ibm Canada Limitee Code versioning for enabling transactional memory region promotion
JP6021112B2 (ja) * 2013-11-28 2016-11-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 複数のスレッドで順序付きトランザクションを実行する方法、並びに、当該トランザクションを実行するためのコンピュータ及びそのコンピュータ・プログラム
CN105378652B (zh) * 2013-12-24 2018-02-06 华为技术有限公司 线程共享资源分配方法及装置
US9207967B2 (en) 2014-01-07 2015-12-08 Red Hat, Inc. Using nonspeculative operations for lock elision
US9430273B2 (en) 2014-02-27 2016-08-30 International Business Machines Corporation Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration
US9411729B2 (en) 2014-02-27 2016-08-09 International Business Machines Corporation Salvaging lock elision transactions
US9465673B2 (en) 2014-02-27 2016-10-11 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9442775B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US9262206B2 (en) 2014-02-27 2016-02-16 International Business Machines Corporation Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9442853B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US20150242216A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9645879B2 (en) 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9524187B2 (en) 2014-03-02 2016-12-20 International Business Machines Corporation Executing instruction with threshold indicating nearing of completion of transaction
US9720742B2 (en) * 2014-05-15 2017-08-01 GM Global Technology Operations LLC Service and system supporting coherent data access on multicore controller
WO2015180668A1 (en) * 2014-05-28 2015-12-03 Mediatek Inc. Memory pool management method for sharing memory pool among different computing units and related machine readable medium and memory pool management apparatus
US9454313B2 (en) * 2014-06-10 2016-09-27 Arm Limited Dynamic selection of memory management algorithm
US9448939B2 (en) * 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US9710271B2 (en) 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US9501411B2 (en) * 2014-08-29 2016-11-22 International Business Machines Corporation Cache backing store for transactional memory
US9904645B2 (en) * 2014-10-31 2018-02-27 Texas Instruments Incorporated Multicore bus architecture with non-blocking high performance transaction credit system
US9864708B2 (en) * 2014-12-16 2018-01-09 Vmware, Inc. Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels
US10324768B2 (en) * 2014-12-17 2019-06-18 Intel Corporation Lightweight restricted transactional memory for speculative compiler optimization
GB2533414B (en) * 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
US10732865B2 (en) * 2015-09-23 2020-08-04 Oracle International Corporation Distributed shared memory using interconnected atomic transaction engines at respective memory interfaces
US9998284B2 (en) * 2015-09-24 2018-06-12 Intel Corporation Methods and apparatus to provide isolated execution environments
GB2548845B (en) * 2016-03-29 2019-11-27 Imagination Tech Ltd Handling memory requests
US10169106B2 (en) * 2016-06-30 2019-01-01 International Business Machines Corporation Method for managing control-loss processing during critical processing sections while maintaining transaction scope integrity
US10095637B2 (en) * 2016-09-15 2018-10-09 Advanced Micro Devices, Inc. Speculative retirement of post-lock instructions
US11868818B2 (en) * 2016-09-22 2024-01-09 Advanced Micro Devices, Inc. Lock address contention predictor
US10423446B2 (en) * 2016-11-28 2019-09-24 Arm Limited Data processing
US10339060B2 (en) * 2016-12-30 2019-07-02 Intel Corporation Optimized caching agent with integrated directory cache
US10664306B2 (en) * 2017-01-13 2020-05-26 Arm Limited Memory partitioning
US11119923B2 (en) * 2017-02-23 2021-09-14 Advanced Micro Devices, Inc. Locality-aware and sharing-aware cache coherence for collections of processors
US10418115B2 (en) 2017-07-07 2019-09-17 Micron Technology, Inc. Managed NAND performance throttling
CN109726017B (zh) * 2017-10-30 2023-05-26 阿里巴巴集团控股有限公司 一种应用程序之间共享缓存的方法及装置
US11018850B2 (en) 2017-12-26 2021-05-25 Akamai Technologies, Inc. Concurrent transaction processing in a high performance distributed system of record
US10514969B2 (en) * 2018-01-09 2019-12-24 Microsoft Technology Licensing, Llc Bit-accurate-tracing analysis with applied memory region lifetimes
GB2570110B (en) * 2018-01-10 2020-04-15 Advanced Risc Mach Ltd Speculative cache storage region
US10558572B2 (en) * 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
KR102504332B1 (ko) 2018-02-21 2023-02-28 삼성전자주식회사 서로 이격되어 배치되는 범프 어레이들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치
GB2572578B (en) * 2018-04-04 2020-09-16 Advanced Risc Mach Ltd Cache annotations to indicate specultative side-channel condition
US10949210B2 (en) * 2018-05-02 2021-03-16 Micron Technology, Inc. Shadow cache for securing conditional speculative instruction execution
US11204773B2 (en) 2018-09-07 2021-12-21 Arm Limited Storing a processing state based on confidence in a predicted branch outcome and a number of recent state changes
CN109614220B (zh) 2018-10-26 2020-06-30 阿里巴巴集团控股有限公司 一种多核系统处理器和数据更新方法
CN109725943B (zh) * 2018-12-27 2022-05-17 龙芯中科技术股份有限公司 一种程序跳转方法、装置、电子设备及存储介质
US10977038B2 (en) * 2019-06-19 2021-04-13 Arm Limited Checkpointing speculative register mappings
US20220014598A1 (en) * 2020-07-09 2022-01-13 Ge Aviation Systems Llc Data service tracker module for a communication system and method of determining a set of data couplings
CN111913810B (zh) * 2020-07-28 2024-03-19 阿波罗智能技术(北京)有限公司 多线程场景下的任务执行方法、装置、设备和存储介质
KR20220056986A (ko) 2020-10-29 2022-05-09 삼성전자주식회사 메모리 확장기, 이종 컴퓨팅 장치, 및 이종 컴퓨팅 장치의 동작 방법
EP4206918A3 (de) * 2021-12-30 2023-11-15 Rebellions Inc. Neuronale verarbeitungsvorrichtung und transaktionsverfolgungsverfahren dafür
CN114510271B (zh) * 2022-02-09 2023-08-15 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN115757196B (zh) * 2022-11-09 2023-09-01 超聚变数字技术有限公司 内存、访问内存方法及计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665708B1 (en) * 1999-11-12 2003-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
WO2004075044A2 (en) * 2003-02-13 2004-09-02 Sun Microsystems Inc. Method and apparatus for selective monitoring of store instructions during speculative thread execution

Family Cites Families (47)

* 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
JP3158364B2 (ja) * 1992-10-13 2001-04-23 ソニー株式会社 電子機器
JP2936036B2 (ja) * 1992-10-27 1999-08-23 富士通株式会社 メモリアクセス装置
JP3512439B2 (ja) * 1993-07-08 2004-03-29 富士通株式会社 チェックイン・チェックアウトモデルにおける施錠方式
JP3093609B2 (ja) 1995-07-27 2000-10-03 エヌイーシーソフト株式会社 キャッシュメモリの記憶一致制御装置及び方法
US5848241A (en) * 1996-01-11 1998-12-08 Openframe Corporation Ltd. Resource sharing facility functions as a controller for secondary storage device and is accessible to all computers via inter system links
JPH09231124A (ja) 1996-02-20 1997-09-05 Ricoh Co Ltd メモリロック装置及びメモリロック方法
US5758183A (en) * 1996-07-17 1998-05-26 Digital Equipment Corporation Method of reducing the number of overhead instructions by modifying the program to locate instructions that access shared data stored at target addresses before program execution
US6108757A (en) * 1997-02-28 2000-08-22 Lucent Technologies Inc. Method for locking a shared resource in multiprocessor system
JPH1173329A (ja) * 1997-06-24 1999-03-16 Matsushita Electric Ind Co Ltd ソフトウエア開発支援システム
US6076126A (en) * 1997-06-30 2000-06-13 Emc Corporation Software locking mechanism for locking shared resources in a data processing system
US5987550A (en) * 1997-06-30 1999-11-16 Emc Corporation Lock mechanism for shared resources in a data processing system
US6240413B1 (en) * 1997-12-22 2001-05-29 Sun Microsystems, Inc. Fine-grained consistency mechanism for optimistic concurrency control using lock groups
US6078981A (en) * 1997-12-29 2000-06-20 Intel Corporation Transaction stall technique to prevent livelock in multiple-processor systems
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
US6101568A (en) * 1998-08-25 2000-08-08 Stmicroelectronics, Inc. Bus interface unit having dual purpose transaction buffer
US6282637B1 (en) * 1998-12-02 2001-08-28 Sun Microsystems, Inc. Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs
JP3716126B2 (ja) 1999-03-17 2005-11-16 株式会社日立製作所 ディスクアレイ制御装置及びディスクアレイ
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
US6684398B2 (en) * 2000-05-31 2004-01-27 Sun Microsystems, Inc. Monitor entry and exit for a speculative thread during space and time dimensional execution
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6460124B1 (en) * 2000-10-20 2002-10-01 Wisconsin Alumni Research Foundation Method of using delays to speed processing of inferred critical program portions
US6463511B2 (en) * 2000-12-29 2002-10-08 Intel Corporation System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model
US6725337B1 (en) 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
KR100704089B1 (ko) * 2001-06-26 2007-04-05 썬 마이크로시스템즈, 인코포레이티드 L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치
US6704841B2 (en) * 2001-06-26 2004-03-09 Sun Microsystems, Inc. Method and apparatus for facilitating speculative stores in a multiprocessor system
AU2002367955A1 (en) * 2001-06-26 2004-01-06 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
JP3661614B2 (ja) * 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US6981108B1 (en) * 2001-10-23 2005-12-27 P-Cube Ltd. Method for locking shared resources connected by a PCI bus
US7908441B2 (en) * 2002-01-11 2011-03-15 Oracle America, Inc. Value recycling facility for multithreaded computations
US6839816B2 (en) * 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism
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
US7120746B2 (en) * 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
US7062636B2 (en) * 2002-09-19 2006-06-13 Intel Corporation Ordering scheme with architectural operation decomposed into result producing speculative micro-operation and exception producing architectural micro-operation
US6862664B2 (en) * 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US7269694B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring loads to support transactional program execution
US7103880B1 (en) * 2003-04-30 2006-09-05 Hewlett-Packard Development Company, L.P. Floating-point data speculation across a procedure call using an advanced load address table
US20050086446A1 (en) * 2003-10-04 2005-04-21 Mckenney Paul E. Utilizing software locking approach to execute code upon failure of hardware transactional approach
US7260746B2 (en) * 2003-10-21 2007-08-21 Massachusetts Institute Of Technology Specification based detection and repair of errors in data structures
US7340569B2 (en) * 2004-02-10 2008-03-04 Wisconsin Alumni Research Foundation Computer architecture providing transactional, lock-free execution of lock-based programs
US7529914B2 (en) * 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7689778B2 (en) * 2004-11-30 2010-03-30 Intel Corporation Preventing system snoop and cross-snoop conflicts
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US9268710B1 (en) * 2007-01-18 2016-02-23 Oracle America, Inc. Facilitating efficient transactional memory and atomic operations via cache line marking

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665708B1 (en) * 1999-11-12 2003-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
WO2004075044A2 (en) * 2003-02-13 2004-09-02 Sun Microsystems Inc. Method and apparatus for selective monitoring of store instructions during speculative thread execution

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Rajwar, R. et al.: Speculative Lock Elision: Enabling Highly Concurrent Multithreaded Execution. In: Proceedings of the 34th annual ACM/IEEE international symposium on Microarchitecture (MICRO 34), 2001. pp. 294 – 305 *
Rajwar, R. et al.: Transactional Execution: Toward Reliable, High-performance Multithreading. In: IEEE Micro, 2003. pp. 117 – 125 *
Rajwar, R. et al.: Transactional Lock-free Execution of Lock-based Programms. In: ASPLOS X Proceedings of the10th international conference on Architectural support for programming languages and operating systems, 2002. pp. 5-17 *

Also Published As

Publication number Publication date
JP2011044161A (ja) 2011-03-03
DE112005003339T5 (de) 2007-11-22
US20110252203A1 (en) 2011-10-13
GB2451199A (en) 2009-01-21
GB2451199B (en) 2009-05-27
GB2437211A8 (de) 2007-10-15
JP4764430B2 (ja) 2011-09-07
GB0818235D0 (en) 2008-11-12
GB2451200B (en) 2009-05-20
GB2437211B (en) 2008-11-19
GB0714433D0 (en) 2007-09-05
CN102622276A (zh) 2012-08-01
GB0818238D0 (en) 2008-11-12
CN101095113B (zh) 2012-05-23
US20060161740A1 (en) 2006-07-20
DE112005003861A5 (de) 2014-06-05
CN101095113A (zh) 2007-12-26
JP2008525923A (ja) 2008-07-17
JP2011028774A (ja) 2011-02-10
US8176266B2 (en) 2012-05-08
US7984248B2 (en) 2011-07-19
US20110055493A1 (en) 2011-03-03
US8458412B2 (en) 2013-06-04
GB2451200A (en) 2009-01-21
JP5404574B2 (ja) 2014-02-05
WO2006071969A1 (en) 2006-07-06
JP5255614B2 (ja) 2013-08-07
GB2437211A (en) 2007-10-17
CN102622276B (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE112005002402B4 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE102007054057A1 (de) Mechanismus zum Detektieren und Vorhersagen eines kritischen Abschnitts zur Hardware-Lock-Elision
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE112005001515T5 (de) Verfahren und Vorrichtung zur spekulativen Ausführung von nicht kollisionsbehafteten Sperrbefehlen
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE112009005006T5 (de) Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
DE112010003492T5 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE112015000294T5 (de) Wiederherstellen von Hardware-Transaktionen
DE102013206423A1 (de) Multithread-transaktionale-Speicherkohärenz
DE102016219651A1 (de) Für Vorabzugriff unempfindlicher transaktionsgebundener Speicher
DE10296989T5 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE112011100715T5 (de) Hardware-hilfs-thread
DE102014003399A1 (de) Systeme und Verfahren zur Implementierung transaktionalen Speichers
DE112004000741B4 (de) Spekulationszeiger zur Identifizierung datenspekulativer Operationen in einem Mikroprozessor
Ichii et al. Hardware Transactional Memory with Delayed-Committing
DE102023100602A1 (de) Konfliktverfolgung zur latenzreduktion bei exklusiven operationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R129 Divisional application from

Ref document number: 112005003339

Country of ref document: DE

R002 Refusal decision in examination/registration proceedings
R016 Response to examination communication
R006 Appeal filed
R008 Case pending at federal patent court
R019 Grant decision by federal patent court
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: TAHOE RESEARCH, LTD., IE

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R082 Change of representative

Representative=s name: DENNEMEYER & ASSOCIATES S.A., DE