DE112011105042T5 - Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher - Google Patents

Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher Download PDF

Info

Publication number
DE112011105042T5
DE112011105042T5 DE112011105042.9T DE112011105042T DE112011105042T5 DE 112011105042 T5 DE112011105042 T5 DE 112011105042T5 DE 112011105042 T DE112011105042 T DE 112011105042T DE 112011105042 T5 DE112011105042 T5 DE 112011105042T5
Authority
DE
Germany
Prior art keywords
transaction
branch
lbr
abort
register
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.)
Granted
Application number
DE112011105042.9T
Other languages
English (en)
Other versions
DE112011105042B4 (de
Inventor
Laura A. Knauth
Konrad K. Lai
Ravi Rajwar
Peter Lachner
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.)
MediaTek Inc
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112011105042T5 publication Critical patent/DE112011105042T5/de
Application granted granted Critical
Publication of DE112011105042B4 publication Critical patent/DE112011105042B4/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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, look ahead
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • 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, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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
    • G06F9/467Transactional memory

Abstract

In einer Ausführungsform enthält ein Prozessor eine Ausführungseinheit und zumindest ein Register zur Aufzeichnung einer letzten Verzweigung (Last Branch Record – LBR) zum Speichern einer Adressinformation einer Verzweigung, die während einer Programmausführung genommen wurde. Dieses Register kann ferner einen Transaktionsindikator zum Anzeigen, ob die Verzweigung während einer Transaktionsspeicher-(Transactional Memory – TM)-Transaktion genommen wurde, speichern. Dieses Register kann ferner einen Abbruchindikator zum Anzeigen, ob die Verzweigung durch einen Transaktionsabbruch verursacht wurde, speichern. Andere Ausführungsformen werden beschrieben und beansprucht.

Description

  • HINTERGRUND
  • Während die Technologie fortschreitet, enthalten Computersysteme eine größere Anzahl von Prozessoren in der Form von Multiprozessorsystemen, beispielsweise mittels eines oder mehrerer Mehrkernprozessoren, welche gleichzeitig mehrere Threads ausführen können. Bevor ein Thread auf eine geteilte Ressource zugreift, kann er im Allgemeinen eine Sperrung der geteilten Ressource an sich bringen. In Situationen, in welchen die geteilte Ressource eine Datenstruktur ist, die in einem Speicher gespeichert ist, können alle Threads, die versuchen auf die gleiche Ressource zuzugreifen, die Ausführung ihrer Operationen im Lichte einer gegenseitigen Ausschließlichkeit, die durch den Sperrmechanismus zur Verfügung gestellt wird, serialisieren. Dies kann für die Systemleistung schädlich sein und kann Programmausfälle verursachen, beispielsweise aufgrund von Systemblockaden oder einem anderen unerwünschten Verhalten.
  • Die ständig wachsende Anzahl von Kernen und logischen Prozessoren in einem System ermöglicht es, dass mehr Software-Threads ausgeführt werden. Allerdings hat die Zunahme der Anzahl von Software-Threads, die gleichzeitig ausgeführt werden können, Probleme beim Synchronisieren von Daten, die zwischen den Software-Threads geteilt werden, hervorgebracht. Eine übliche Lösung, um auf geteilte Daten in Mehrkern- oder Mehrlogikprozessorsystemen zuzugreifen, verwendet Sperren, um einen gegenseitigen Ausschluss über mehrere Zugriffe auf geteilte Daten hinweg zu garantieren. Allerdings bewirkt die ständig zunehmende Fähigkeit zum Ausführen mehrerer Software-Threads potentiell eine falsche Contention und eine Serialisierung der Ausführung.
  • Um einen Leistungsverlust, der von der Verwendung von Sperrmechanismen herrührt, zu reduzieren, können einige Computersysteme einen Transaktionsspeicher (Transactional memory – TM) verwenden. Ein Transaktionsspeicher bezeichnet im Allgemeinen ein Synchronisierungsmodell, welches es erlaubt, dass mehrere Threads gleichzeitig auf eine geteilte Ressource zugreifen, ohne dass ein Sperrmechanismus verwendet wird.
  • Eine transaktionale Ausführung kann oft umfassen, dass Gruppen von Mikrooperationen, Operationen oder Instruktionen spekulativ ausgeführt werden. Aktuelle TM-Systeme enthalten Hardware-TM-Systeme, in welchen eine Prozessorhardware dazu verwendet wird, Transaktionen durchzuführen, Software-TM-Systeme, in welchen Transaktionen in Software implementiert sind, und Hybrid-TM-Systeme, in welchen sowohl Hardware als auch Software dazu verwendet werden kann, eine Transaktion auszuführen. Typischerweise kann ein Hard-ware-TM-System am Effizientesten sein, aber wenn eine Transaktion zu groß wird, und beispielsweise einen Hardwarespeicher überlaufen lässt, wird die Transaktion dann üblicherweise neu gestartet. Dabei wird die Zeit, die zum Ausführen der Transaktion bis zum Überlaufen gebraucht wird, möglicherweise verschwendet.
  • Prozessoren enthalten verschiedene Hardware und können auch eine Hardware zum Testen, zum Bereinigen von Fehlern und für andere Operationen zur Verfügung stellen. Beispielsweise können verschiedene Register in einem Prozessor zur Verfügung gestellt werden, um ein Kontrollpunktverfahren auf dem Prozessor, ein Berichten von Ausnahmen, ein Aufzeichnen von Verzweigungen, etc. durchzuführen. Allerdings wird eine derartige Leistungsüberwachungshardware im Allgemeinen in dem Zusammenhang von Transaktionsspeichern nicht verwendet.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm von Paaren von Registern für eine letzte Verzweigung gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 ist ein Blockdiagramm eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist ein Blockdiagramm eines Prozessorkerns gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
  • 4 ist ein Flussdiagramm eines Verfahrens zum Erzeugen von Verzweigungsaufzeichnungen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 ist ein Flussdiagramm eines Verfahrens zum Verwenden von Verzweigungsaufzeichnungen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 6 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • In verschiedenen Ausführungsformen kann eine Verzweigungsinformation, die während einer Ausführung eines Programms erhalten wird, aufgezeichnet werden und dann zum Zwecke des Profiling, der Fehlerbereinigung und/oder der Optimierung von Transaktionsspeicher-Transaktionen verwendet werden. Auf diese Weise können ein verbesserter Betrieb und ein verbesserter Code eines Transaktionsspeichers realisiert werden. In verschiedenen Ausführungsformen kann die Information, die in derartigen Registern enthalten ist, eine Information über eine letzte Verzweigung enthalten, in welcher eine Information hinsichtlich Verzweigungen, die während einer Programmausführung genommen wurden, aufgezeichnet werden kann. Zusätzlich zu der Identifizierung derartiger Verzweigungen kann auch eine Information hinsichtlich einer Ausführung einer anhängigen Transaktion eines Transaktionsspeichers aufgezeichnet werden. Diese Information verwendend können Fehlerbereinigungs- und andere Operationen für Transaktionsspeicher-Transaktionen realisiert werden.
  • Eine transaktionale Ausführung enthält üblicherweise ein Gruppieren einer Mehrzahl von Instruktionen oder Operationen in eine Transaktion, einen atomaren Abschnitt oder einen kritischen Abschnitt von Code. In einigen Fällen bezieht sich der Begriff Instruktion auf eine Makroinstruktion, welche aus einer Mehrzahl von Operationen aufgebaut ist, während sich eine Instruktion in anderen Fällen auf eine kleinere Operation, z. B. eine Mikrooperation (uop) beziehen kann. Es gibt üblicherweise zwei Möglichkeiten zum Identifizieren von Transaktionen. Das erste Beispiel enthält ein Demarkieren der Transaktion in Software. Dabei ist eine Softwaredemarkation in Code enthalten, um eine Transaktion zu identifizieren. In einer anderen Ausführungsform, welche im Zusammenhang mit der vorangehenden Softwaredemarkation implementiert sein kann, können Transaktionen durch Hardware gruppiert werden oder durch Instruktionen, die einen Beginn einer Transaktion und ein Ende einer Transaktion anzeigen, erkannt werden.
  • In einem Prozessor wird eine Transaktion entweder spekulativ oder nicht spekulativ ausgeführt. Im zweiten Fall wird ein Gruppieren von Instruktionen mit einer Form von Sperre oder garantiertem gültigem Zugriff auf Speicherorte, auf die zugegriffen werden soll, ausgeführt. Alternativ ist eine spekulative Ausführung einer Transaktion üblicher, bei welcher eine Transaktion spekulativ ausgeführt und am Ende der Transaktion übergeben wird. Eine Anhängigkeit einer Transaktion, wie hier verwendet, bezieht sich auf eine Transaktion, deren Ausführung begonnen hat, und die nicht übergeben oder abgebrochen worden ist, d. h. anhängig ist.
  • Während einer spekulativen Ausführung einer Transaktion werden Aktualisierungen des Speichers typischerweise nicht global sichtbar gemacht, bevor die Transaktion übergeben wird. Während die Transaktion noch anhängig ist, werden Orte, die aus einen Speicher geladen und in diesen geschrieben werden, verfolgt. Bei einer erfolgreichen Validierung dieser Speicherorte wird die Transaktion übergeben und Aktualisierungen, die während der Transaktion durchgeführt wurden, werden global sichtbar gemacht. Wenn die Transaktion jedoch während ihrer Anhängigkeit ungültig gemacht wird, wird die Transaktion neu gestartet, ohne die Aktualisierungen global sichtbar zu machen.
  • In verschiedenen Ausführungsformen können Einrichtungen zum Aufzeichnen einer letzten Verzweigung in einem Prozessor vorgesehen sein. Derartige Einrichtungen können Verzweigungsaufzeichnungen in einer Menge von Registern speichern, welche in einer Ausführungsform maschinen- oder modellspezifische Register (MSRs) sein können. Beispielsweise kann ein Prozessor einen Stapel zur Aufzeichnung einer letzten Verzweigung (Last Branch Record – LBR) von MSRs zum Speichern einer Information mit Hinblick auf die zuletzt genommenen Verzweigungen enthalten. Eine Verzweigungsaufzeichnung enthält ein Paar von Registern, wovon eines dazu dient, eine Verzweigung-Von-Instruktionsadresse und eine Verzweigung-Zu-Instruktionsadresse zu speichern, welche in einer Ausführungsform lineare Adressen sein können. In einigen Implementierungen können die Register automatisch ausgelesen werden, während in anderen Ausführungsformen ein Steuerungssignal bewirken kann, dass der Stapel Verzweigungsaufzeichnungen als Verzweigungsspurnachrichten (Branch Trace Messages – BTMs) an einen ausgewählten Zielort sendet.
  • Es ist zu beachten, dass der Betrieb von LBR-Registern derart gesteuert werden kann, dass er aktiviert oder deaktiviert wird. Beispielsweise kann ein LBR-Flag in einem Fehlerbereinigungs-Steuerungs-MSR vorhanden sein, um dem Prozessor zu erlauben, automatisch Verzweigungsaufzeichnungen für genommene Verzweigungen aufzuzeichnen. Es ist zu beachten, dass in einigen Ausführungsformen zusätzlich zu LBRs auch eine Information mit Hinblick auf Interrupts und Ausnahmen in den LBR-Registern aufgezeichnet werden kann, obwohl in anderen Ausführungsformen separate Aufzeichnungseinrichtungen für derartige Situationen vorgesehen sein können.
  • In einer Ausführungsform kann ein Debugger Adressen in einem LBR-Stapel dazu verwenden, ein rückwärtiges Aufspüren von der Manifestation eines bestimmten Bugs in Richtung seiner Quelle zu ermöglichen.
  • Es ist zu beachten, dass die Anzahl von MSRs in dem LBR-Stapel in verschiedenen Ausführungsformen variieren kann. Beispielsweise kann die Größe des LBR-Stapels in verschiedenen Ausführungsformen 4, 8 oder 16 sein, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist. Wie oben beschrieben worden ist, können Mechanismen zum Aufzeichnen einer letzten Verzweigung nicht nur Verzweigungsinstruktionen (wie beispielsweise Sprünge, Schleifen und Aufruf-Instruktionen) verfolgen, sondern auch andere Operationen, die eine Veränderung bei dem Instruktionszeiger bewirken (wie beispielsweise externe Interrupts, Traps und Fehler).
  • Nunmehr Bezug nehmend auf 1 ist ein Blockdiagramm eines LBR-Registerpaares gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt ist, kann ein Registerpaar 10 zwei MSRs enthalten, nämlich ein erstes MSR 12 und ein zweites MSR 14. Wie gesehen wird, kann das MSR 12 eine Quelladresse speichern. Das heißt, dass dieses Register eine Quelladresse einer kürzlichen Verzweigung speichern kann, nämlich die „Von”-Adresse, bei welcher eine Verzweigung erfolgt. Das Register 14 kann wiederum eine Zieladresse speichern, nämlich eine „Zu”-Adresse, an welche die Steuerung durch die Verzweigung übergeben wird. Zusätzlich zu einem Adressfeld 15, das eine Instruktionszeigeradresse speichert, können zusätzliche Felder in diesen Registern vorhanden sein. Insbesondere können in der Ausführungsform der 1 ein Transaktionsindikator 16 und ein Abbruchindikator 14 mit jedem Register verknüpft sein. In größerem Detail kann der Transaktionsindikator 16 gesetzt werden, wenn die entsprechende Verzweigung während einer Ausführung einer Transaktion erfolgt. Der Abbruchindikator 17 kann wiederum für eine erste Verzweigung gesetzt werden, die erfolgt, nachdem eine Transaktion abgebrochen wurde. Präziser ausgedrückt, bewirkt ein Abbruch einen Sprung zu einem Abbruch-Handler. Dieser Sprung wird dann in dem LBR aufgezeichnet, wobei der Abbruchindikator gesetzt wird. Dieser Abbruchindikator wird dazu verwendet, diese Verzweigung von anderen Verzweigungen zu unterscheiden. Weitere Details hinsichtlich der Speicherung von Informationen mit Hinblick auf ein Abbruchereignis werden unten beschrieben. Auf diese Weise kann eine Information hinsichtlich der Ausführung einer Transaktion, in welcher die Verzweigung erfolgt, aufgezeichnet werden. Wie unten weiter beschrieben werden wird, kann ein besseres Verständnis der Ausführung einer Transaktion gewonnen werden, wenn diese Information verwendet wird, wodurch möglicherweise eine Ausführung beispielsweise mittels Optimierungen etc. verbessert wird.
  • Wie oben beschrieben wurde, kann zusätzlich zu Registerpaaren für eine Verzweigungsinformation eine Information hinsichtlich eines Abbruchereignisses aufgezeichnet werden. Insbesondere kann, wie in 1 gezeigt ist, ein zusätzliches Registerpaar 20 eine Information hinsichtlich einer Instruktion enthalten, welche bewirkt, dass ein Abbruch bei einer anhängigen Transaktion erfolgt. Insbesondere kann das Register 22 einen Instruktionszeiger für die Instruktion, welche das Abbrechen der Transaktion verursachte, speichern. Das zweite Register des Paares, nämlich das Register 24, kann eine Zieladresse speichern, welche die Adresse eines Abbruch-Handlers sein kann, der Code, Logik, etc., zum Ermöglichen einer Erholung von dem Abbruch entspricht. Während er in der Ausführungsform der 1 nur mit diesen zwei Registerpaaren gezeigt ist, ist zu verstehen, dass ein LBR-Stapel viele weitere Paare enthalten kann. Zusätzlich können die Struktur, die Anordnung und die Information, die in den LBRs enthalten ist, in unterschiedlichen Ausführungsformen unterschiedlich sein. Beispielsweise kann der LBR-Speicher in einigen Ausführungsformen als eine kreisförmige Anordnung implementiert sein.
  • Es ist anzumerken, dass eine zusätzliche Information in den LBR-Registern vorhanden sein kann. Beispielsweise kann in einigen Ausführungsformen ein Prognoseindikator vorgesehen sein, der, wenn er gesetzt ist, anzeigt, dass die genommene Verzweigung korrekt prognostiziert worden ist. Andernfalls kann der Indikator gelöscht werden, um anzuzeigen, dass die Verzweigung falsch prognostiziert worden ist. Natürlich können zusätzliche Indikatoren und andere Informationen in diesen Registern vorgesehen sein.
  • In einigen Ausführungsformen kann ein Spitze-des-Stapels-(Top-Of-Stack – TOS)-Zeiger zur Aufzeichnung einer letzten Verzweigung einen Zeiger auf das MSR in dem LBR-Stapel speichern, welches die jüngste aufgezeichnete Verzweigung, den jüngsten aufgezeichneten Interrupt oder die jüngste aufgezeichnete Ausnahme enthält.
  • Wie unten beschrieben werden wird, kann in einigen Ausführungsformen ein Fehlerbereinigungs-Speicher-(DS)-Mechanismus BTMs in einem Verzweigungsspurspeicher (Branch Trace Store – BTS) speichern, welcher Teil eines gegebenen Bereichs einer Speicherhierarchie, wie beispielsweise eines Hardwarepuffers, eines Caches oder eines Systemspeichers, sein kann. Wenn das BTS-Flag in dem Fehlerbereinigungs-Steuerungs-MSR gesetzt ist, wird in einer Ausführungsform eine Verzweigungsaufzeichnung in dem BTS-Puffer in dem DS-sicheren Gebiet gespeichert, wann immer eine genommene Verzweigung, ein Interrupt oder eine Ausnahme detektiert wird.
  • In einigen Ausführungsformen kann ein Filtern von Aufzeichnungen letzter Verzweigungen mittels eines LBR-Auswahlregisters realisiert werden, welches Felder zur Verfügung stellen kann, um die Bedingungen von Teilmengen von Verzweigungen zu spezifizieren, welche nicht in dem LBR erfasst werden. Beispielsweise kann dieses Register Felder zum Filtern von Verzweigungen enthalten, die auf vorbestimmten Privilegebenen erfolgen, etc.
  • Daher enthält jede Verzweigungsaufzeichnung in einer Ausführungsform zwei lineare Adressen, welche die „Von”- und „Zu”-Instruktionszeiger für eine Verzweigung, einen Interrupt oder eine Ausnahme darstellen. Die Inhalte der Von- und Zu-Adressen können abhängig von der Quelle der Verzweigung differieren. Wenn die Aufzeichnung für eine genommene Verzweigung ist, ist die „Von”-Adresse die Adresse der Verzweigungsinstruktion und die „Zu”-Adresse ist die Zielinstruktion der Verzweigung. Wenn die Aufzeichnung für einen Interrupt ist, ist die „Von”-Adresse der Rückkehrinstruktionszeiger (Return Instruction Pointer – RIP), der für den Interrupt gespeichert ist, und die „Zu”-Adresse ist die Adresse der ersten Instruktion in der Interrupt-Handler-Routine. Der RIP ist die lineare Adresse der nächsten auszuführenden Instruktion beim Zurückkehren von dem Interrupt-Handler. Wenn die Aufzeichnung für eine Ausnahme ist, ist die „Von”-Adresse die lineare Adresse der Instruktion, welche bewirkt, dass die Ausnahme erzeugt wird, und die „Zu”-Adresse ist die Adresse der ersten Instruktion in der Ausnahme-Handler-Routine.
  • Nunmehr Bezug nehmend auf 2 ist ein Blockdiagramm eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt ist, kann ein Prozessorkern 100 ein mehrstufiger Out-Of-Order-Prozessor mit Pipeline sein. Der Prozessorkern 100 ist mit einer relativ vereinfachten Ansicht in 2 gezeigt, um verschiedene Merkmale, die im Zusammenhang mit einem Benachrichtigen über eine Verzweigungsaufzeichnung verwendete Merkmale gemäß einer Ausführungsform der vorliegenden Erfindung darzustellen. Darüber hinaus ist zu verstehen, dass, wie oben beschrieben worden ist, ein Prozessor eine Hardwareunterstützung für TM-Transaktionen zur Verfügung stellen kann oder nicht.
  • Zum Zwecke der Darstellung sei angenommen, dass der Kern 100 eine derartige Hardwareunterstützung enthält. Allerdings kann in einigen Ausführungsformen, welche eine in LBRs gespeicherte Transaktionsstatusinformation verwenden, sogar in Abwesenheit einer derartigen Hardwareunterstützung eine Analyse einer Transaktionsausführung erfolgen. Auf diese Weise kann ein Verständnis dessen, welche Verzweigungen während einer Transaktion erfolgen, ob eine Verzweigung eine Transaktion dazu veranlasst, abzubrechen, etc., gewonnen werden. Dann können eine Fehlerbereinigung, eine Optimierung, ein Profiling oder andere Aktivitäten mit dieser Information erfolgen.
  • Wie in 2 gezeigt ist, enthält der Kern 100 Front-End-Einheiten 110, welche dazu verwendet werden können, auszuführende Instruktionen abzuholen und sie für eine spätere Verwendung in dem Prozessor vorzubereiten. Beispielsweise können die Front-End-Einheiten 110 eine Fetch-Einheit 101, einen Instruktions-Cache 103 und einen Instruktions-Dekodierer 105 enthalten. In einigen Implementierungen können die Front-End-Einheiten 110 ferner einen Spurcache zusammen mit einem Mikrocodespeicher sowie einem Mikrooperationsspeicher enthalten. Die Fetch-Einheit 101 kann Makroinstruktionen beispielsweise von einem Speicher oder einem Instruktionscache 103 abholen, und sie dem Instruktions-Dekodierer 105 zuführen, um sie in Grundelemente, d. h. in Mikrooperationen zur Ausführung durch den Prozessor zu dekodieren.
  • Zwischen die Front-End-Einheiten 110 und die Ausführungseinheiten 120 ist ein Instruktionszuteiler 115 gekoppelt, welcher als eine Out-Of-Order-Logik in Out-Of-Order-Implementierungen implementiert sein kann, um die Mikroinstruktionen zu empfangen und sie für eine Ausführung vorzubereiten. Im größeren Detail kann der Instruktionszuteiler 115 verschiedene Puffer zum Zuweisen verschiedener Ressourcen, die für eine Ausführung benötigt werden, sowie zum Bereitstellen einer Umbenennung von logischen Registern auf Speicherorte innerhalb verschiedener Registerdateien, wie beispielsweise einer Registerdatei 130 und einer erweiterten Registerdatei 135, enthalten. Die Registerdatei 130 kann separate Registerdateien für Ganzzahl- und Gleitpunkt-Operationen enthalten. Die erweiterte Registerdatei 135 kann einen Speicher für vektorgroße Einheiten, z. B. 256 oder 512 Bits pro Register zur Verfügung stellen.
  • Wie weiter in 2 gesehen wird, kann der Prozessor 100 eine Menge von MSRs 125 enthalten. Wie oben beschrieben worden ist, können verschiedene Typen von modellspezifischen Informationen in derartigen Registern gespeichert werden. In der Ausführungsform der 2 ist eine Menge von LBRs 128 gezeigt, welche, wie oben beschrieben wurde, eine Information hinsichtlich Verzweigungen, die während einer Ausführung eines Codes genommen wurden, speichern können. Diese oder ähnliche Register können ferner eine Information hinsichtlich anderer Ausführungsereignisse, wie beispielsweise Interrupts, Traps, Ausnahmen, etc., enthalten.
  • Verschiedene Ressourcen können in den Ausführungseinheiten 120 vorhanden sein, einschließlich beispielsweise verschiedener Ganzzahl-, Gleitpunkt- und Einzelinstruktion-Mehrfachdaten-(Single Instruction Multiple Data – SIMD)-Logikeinheiten, und anderer spezialisierter Hardware. Beispielsweise können derartige Ausführungseinheiten eine oder mehrere Arithmetiklogik-Einheiten (ALUs) 122 enthalten. Zusätzlich können Ausführungseinheiten ferner eine Leistungsüberwachungseinheit (Performance Monitoring Unit – PMU) 124 enthalten. In verschiedenen Ausführungsformen kann die PMU 124 dazu verwendet werden, ein Beziehen von verschiedenen Informationen, beispielsweise Profiling-Zähler, Informationen in MSRs, etc., zu steuern. Hier kann in bestimmten Implementierungen die PMU 124 oder eine andere derartige Logik dazu verwendet werden, ein Aufzeichnen einer Information, einschließlich einer Information hinsichtlich einer Transaktionsausführung in dem LBR 128 zu steuern, und ferner eine derartige Information für eine weitere Verwendung zu beziehen. Ergebnisse können einer Retirement-Logik, nämlich einem Reorder-Puffer (ROB) 140 bereitgestellt werden. In größerem Detail kann der ROB 140 verschiedene Anordnungen und Logik enthalten, um eine Information, die mit Instruktionen, die ausgeführt werden, verknüpft ist, zu empfangen. Diese Information wird dann durch den ROB 140 untersucht, um festzustellen, ob die Instruktionen auf gültige Weise zurückgezogen werden können und Ergebnisdaten an den Architekturzustand des Prozessors übergeben werden können, oder ob eine oder mehrere Ausnahmen aufgetreten sind, die ein korrektes Zurückziehen der Instruktionen verhindern. Natürlich kann der ROB 140 andere Operationen, die mit dem Zurückziehen verknüpft sind, handhaben.
  • Wie in 2 gezeigt ist, ist der ROB 140 an eine Cache 150 gekoppelt, welcher in einer Ausführungsform ein Low-Level-Cache (z. B. ein L1-Cache) sein kann, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist. Wie gesehen wird, kann der Cache 150 in einer Ausführungsform einen Verzweigungsspurpuffer 152 enthalten, der eine Verzweigungsinformation, die beispielsweise von den LBRs 128 empfangen wurde, speichern kann. Beispielsweise kann die PMU 124 die Erzeugung und das Senden von Verzweigungszielnachrichten von dem LBR 128 an den Verzweigungsspurpuffer 152 steuern. Von dort kann auf die Information beispielsweise mittels eines Profiler-Optimierers oder ähnlichem zugegriffen werden, um eine Analyse der Information hinsichtlich der Transaktionsausführung gemäß einer Ausführungsform der vorliegenden Erfindung zu ermöglichen. Die Ausführungseinheiten 120 können auch direkt mit dem Cache 150 gekoppelt sein. Während sie auf dieser hohen Ebene in der Ausführungsform der 2 dargestellt ist, ist zu verstehen, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist.
  • 3 ist ein Blockdiagramm eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung, welcher Transaktionsspeicherzugriffsanforderungen in Hardware ausführen kann. Einen Kern, wie beispielsweise einen Kern 206 verwendend, können Transaktionsstatusindikatoren für LBRs gesetzt werden, wobei eine von einer Hardware des Kerns bezogene Information verwendet wird. Wie in 3 gezeigt ist, kann der Prozessorkern 206 eine Fetch-Einhut 202 zum Abholen von Instruktionen zur Ausführung durch den Kern 206 enthalten. Der Kern 206 kann auch eine Dekodiereinheit 204 zum Dekodieren der abgeholten Instruktion enthalten. Beispielsweise kann die Dekodiereinheit 204 die abgeholte Instruktion in eine Mehrzahl von uops dekodieren.
  • Zusätzlich kann der Kern 206 eine Schedule-Einheit 207 enthalten. Die Schedule-Einheit 207 kann verschiedene Operationen durchführen, die mit dem Speichern dekodierter (beispielsweise von der Dekodiereinheit 204 empfangener) Instruktionen verknüpft sind, bis die Instruktionen bereit zum Zuteilen sind, beispielsweise bis alle Quellwerte einer dekodierten Instruktion verfügbar geworden sind. In einer Ausführungsform kann die Schedule-Einheit 207 dekodierte Instruktionen an eine oder mehrere Ausführungseinheiten 208 zur Ausführung einplanen und/oder ausgeben (oder zuteilen). Die Ausführungseinheit 208 kann eine Speicherausführungseinheit, eine Ganzzahlausführungseinheit, eine Gleitpunktausführungseinheit oder andere Ausführungseinheiten enthalten. Eine Retirement-Einheit 210 kann ausgeführte Instruktionen zurückziehen, nachdem sie übergeben worden sind. In einer Ausführungsform kann ein Zurückziehen der ausgeführten Instruktionen bewirken, dass ein Prozessorzustand von der Ausführung der Instruktionen übergeben wird, physische Register, die von den Instruktionen verwendet worden sind, de-alloziert werden, etc.
  • Ein Speicherordnungspuffer (Memory Order Buffer – MOB) 218 kann einen Ladepuffer, einen Speicherpuffer und eine Logik zum Speichern anhängiger Speicheroperationen, die nicht geladen wurden oder in einen Speicher zurückgeschrieben wurden, enthalten. In verschiedenen Ausführungsformen kann ein Kern einen lokalen Cache, z. B. einen privaten Cache, wie beispielsweise einen Cache 216, enthalten, der eine oder mehrere Cachezeilen 224 (z. B. Cachezeilen 0 bis W) enthalten kann, und durch eine Cachelogik 239 verwaltet wird. In einer Ausführungsform kann jede Zeile des Caches 216 ein Transaktionslesebit 226 und/oder ein Transaktionsschreibbit 228 für jeden Thread, der auf dem Kern 206 ausgeführt wird, enthalten. Die Bits 226 und 228 können gesetzt oder gelöscht werden, um einen (Lade- und/oder Schreib-)Zugriff auf die entsprechende Cachezeile durch eine Transaktionsspeicherzugriffsanforderung anzuzeigen. Während in der Ausführungsform der 3 jede Cachezeile 224 derart dargestellt ist, dass sie ein jeweiliges Bit 226 und 228 aufweist, ist anzumerken, dass andere Konfigurationen möglich sind. Beispielsweise kann ein Transaktionslesebit 226 (oder ein Transaktionsschreibbit 228) einem Auswahlbereich des Cache 216, wie beispielsweise einem Cacheblock oder einem anderen Bereich des Cache 216, entsprechen. Die Bits 226 und/oder 228 können auch in anderen Orten als dem Cache 216 gespeichert sein. Eine Information in einer derartigen Hardware kann daher dazu verwendet werden, verschiedene Indikatoren für die LBRs zu setzen.
  • Um bei dem Ausführen von TM-Operationen zu unterstützen, kann der Kern 206 einen Transaktionstiefenzähler 230 enthalten, um einen Wert zu speichern, der der Anzahl von Transaktionsspeicherzugriffsanforderungen, die nicht übergeben verbleiben, entspricht. Beispielsweise kann der in dem Zähler 230 gespeicherte Wert die Verschachtelungstiefe von mehreren Transaktionsspeicherzugriffsanforderungen, die dem gleichen Thread entsprechen, anzeigen. In einem Fall können sich mehrere Transaktionsspeicherzugriffsanforderungen ergeben, wenn eine Transaktion innerhalb einer anhängigen Transaktion (beispielsweise mittels eines Bibliothekenaufrufs oder einer anderen verschachtelten Prozedur) initiiert wird. Der Zähler 230 kann als ein beliebiger Typ einer Speichervorrichtung, wie beispielsweise als ein Hardwareregister oder eine in einem Speicher (z. B. dem Systemspeicher oder dem Cache 216) gespeicherte Variable implementiert sein. Der Kern 206 kann auch eine Transaktionstiefenzählerlogik 232 zum Aktualisieren des in dem Zähler 230 gespeicherten Werts enthalten. Der Kern 206 kann eine Transaktionskontrollpunktlogik 234 zum Setzen eines Kontrollpunktes (oder zum Speichern) des Zustandes verschiedener Komponenten des Kerns 206 und eine Transaktionswiederherstellungslogik 236 zum Wiederherstellen des Zustandes verschiedener Komponenten des Kerns 206, beispielsweise auf einen Abbruch einer gegebenen Transaktion hin, enthalten. Zusätzlich kann der Kern 206 ein oder mehrere zusätzliche Register 240 enthalten, welche verschiedenen Transaktionsspeicherzugriffsanforderungen entsprechen, wie beispielsweise ein Transaktionsstatus- und -steuerungsregister (TXSR), einen Transaktionsinstruktionszeiger (TRIP) (der beispielsweise ein Instruktionszeiger auf eine Instruktion am Anfang (oder unmittelbar vor) der entsprechenden Transaktion sein kann) und/oder einen Transaktionsstapelzeiger (TXSP) (der beispielsweise ein Stapelzeiger zu dem Kopf eines Stapels, der verschiedene Zustande einer oder mehrerer Komponenten des Kerns 206 speichert, sein kann). Um ein Erfassen einer Transaktionsinformation für Verzweigungen zu ermöglichen, können auch MSRs 250 vorhanden sein, welche zusätzlich zu einer Verzweigungsinformation eine Transaktionsstatusinformation, wie beispielsweise einen Transaktionsanwesenheitsindikator und einen Transaktionsabbruchindikator, speichern können.
  • Nunmehr Bezug nehmend auf 4 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. In der Ausführungsform der 4 kann ein Verfahren 300 dazu verwendet werden, eine Information in einem LBR-Aufzeichnungsregister gemäß einer Ausführungsform der vorliegenden Erfindung zu belegen. Beispielsweise kann das Verfahren 300 implementiert sein, wobei eine Prozessorlogik, wie beispielsweise eine Logik einer PMU, etc. verwendet wird. Wie gesehen wird, kann das Verfahren 300 damit beginnen, dass festgestellt wird, ob ein Abbruch während einer Programmausführung erfolgt (Diamant 310). Diese Feststellung eines Abbruchs kann durch eine Analyse des internen Zustands während der Transaktion erfolgen, welcher auf falsch gesetzt wird, wenn entweder eine Transaktion eine Ende-der-Transaktion-Markierung (die eine Instruktion sein kann) übergibt oder wenn eine Transaktion abbricht. Es ist anzumerken, dass ein Abbruch nicht ein Zustand ist, sondern ein Ereignis, das einen Sprung von wo auch immer der aktuelle Ausführungsfluss ist, zu dem Ort des Abbruch-Handlers bewirkt.
  • Wenn bei dem Diamant 310 festgestellt wurde, dass ein Abbruch erfolgt ist, geht die Steuerung zu Block 320 über, bei dem ein nächster LBR-Eintrag zugewiesen werden kann. Wie oben beschrieben worden ist, können verschiedene Typen von Verzweigungsaufzeichnungseinträgen möglich sein. Beispielsweise kann ein einziges Register nur eine Zielinformation enthalten, ein Registerpaar kann eine Quell- und eine Zielinformation speichern, usw. Daher können in einigen Ausführungsformen mehrere Verzweigungsadressen diesem Eintrag hinzugefügt werden. Insbesondere können eine Quell- und eine Zieladresse gespeichert werden (es ist anzumerken, dass die Zieladresse für den Abbruch-Handler sein kann). Wie bei Block 330 gezeigt ist, können zusätzlich auch ein Transaktions- und ein Abbruchindikator für diesen Eintrag gesetzt werden, wodurch angezeigt wird, dass ein Abbruch einer anhängigen Transaktion erfolgt ist.
  • Die Steuerung geht als nächstes zu dem Block 340 über, bei welchem die nächste ausgeführte Instruktion genommen werden kann. Wie gesehen wird, bewirkt dies, dass das Verfahren 300 erneut mit Hinblick auf ein Feststellen eines Abbruchs beginnt, wie oben beschrieben worden ist. Wenn statt dessen diesmal angenommen wird, das bei dem Diamant 310 festgestellt wird, dass ein Abbruch nicht erfolgt ist, geht die Steuerung statt dessen zu dem Diamant 350 über, wo festgestellt werden kann, ob eine Verzweigung erfolgt ist. Wie oben beschrieben worden ist, können derartige Verzweigungen für gegebenen Instruktionstypen, wie beispielsweise Sprünge, Aufrufe, oder ähnliches, erfolgen. Wenn keine Verzweigung erfolgt, schließt das Verfahren mit Hinblick auf diese Instruktion und die Steuerung geht zu Block 340 zu der nächsten ausgeführten Instruktion über.
  • Wenn immer noch Bezug nehmend auf 4 statt dessen festgestellt wird, dass eine gegebene Instruktion eine Verzweigungsinstruktion ist, können verschiedene Informationen gespeichert werden. Insbesondere kann, wie in 4 gezeigt ist, bei Block 360 ein nächster LBR-Eintrag zugewiesen werden, und eine Verzweigungsadressinformation in dem Eintrag gespeichert werden.
  • Als nächstes kann festgestellt werden, ob die Verzweigung während einer Transaktion erfolgt ist (Diamant 370). Beispielsweise kann in einer Ausführungsform ein interner Prozessorstatus „in Transaktion” auf wahr gesetzt werden, wenn eine Instruktion ausgeführt wird, welche den Start einer Transaktion bedeutet. Falls nein, geht die Steuerung zu dem oben beschriebenen Block 340 über (es ist auch zu verstehen, dass hier sowohl der Transaktions- als auch der Abbruchindikator gelöscht werden können).
  • Wenn statt dessen bei dem Diamant 370 festgestellt wurde, dass die Verzweigung während einer Ausführung einer Transaktion erfolgt ist, geht die Steuerung zu Block 380 über, bei dem ein Transaktionsindikator des LBR-Eintrags gesetzt werden kann, um anzuzeigen, dass die Verzweigung während einer Transaktionsausführung erfolgt ist. Die Steuerung geht dann zu dem oben beschriebenen Block 340 über. Während sie mit dieser speziellen Implementierung in der Ausführungsform der 4 gezeigt ist, ist zu verstehen, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist.
  • Nunmehr Bezug nehmend auf 5 ist ein Flussdiagramm eines Verfahrens zum Verwenden von Verzweigungsaufzeichnungen gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt ist, kann ein Verfahren 400 durch verschiedene Logik, wie beispielsweise einen Fehlerbereiniger, einen Analysator, einen Optimierer oder ähnliches implementiert sein. Das Verfahren 400 kann damit beginnen, dass Aufzeichnungen einer letzten Verzweigung in einen Verzweigungsspurpuffer gespeichert werden (Block 410). Beispielsweise kann in einer gegebenen Implementierung eine begrenzte Anzahl von MSR-Paaren vorhanden sein, um Aufzeichnungen letzter Verzweigungen zu speichern. Wenn diese Paare gefüllt worden sind, kann eine Logik, wie beispielsweise eine PMU oder eine dedizierte LBR-Logik, in Reaktion auf ein Steuerungsbit eines Steuerungsregisters oder ähnlichem BTMs erzeugen, um diese Information an den Puffer zu senden. Diese Aufzeichnungen können dann von dem Puffer bezogen werden (Block 420). Beispielsweise kann ein Optimierer oder eine andere derartige Logik diese Aufzeichnungen beziehen.
  • Basierend auf der Information in den Aufzeichnungen können Verzweigungen, die innerhalb des Zusammenhangs einer oder mehrerer Transaktionen erfolgen, basierend auf den Transaktionsindikatoren identifiziert werden, wobei immer noch Bezug auf 5 genommen wird. Beispielsweise sei angenommen, dass ein erster Eintrag einen gelöschten Transaktionsindikator aufweist und dass ein folgender Eintrag einen gesetzten Transaktionsindikator aufweist, so bedeutet dies, dass dieser zweite Eintrag die erste Verzweigung innerhalb des Transaktionsgebietes ist. Sei statt dessen angenommen, dass der erste Eintrag einen gesetzten Transaktionsindikator aufweist und dass der zweite Eintrag einen gelöschten Transaktionsindikator aufweist, so bedeutet dies, dass der erste Eintrag die letzte Verzweigung innerhalb eines Transaktionsgebietes war. Wieder annehmend, dass alle Einträge in einer Menge von Aufzeichnungen in der Analyse einen gelöschten Transaktionsindikator aufweisen, zeigt dies an, dass keine der Verzweigungen während einer Transaktionsausführung erfolgt ist, während statt dessen, falls alle derartigen Transaktionsindikatoren gesetzt sind, dies anzeigt, dass alle Verzweigungen in dem Zusammenhang einer TM-Transaktion erfolgt sind.
  • Immer noch Bezug nehmend auf 5 können als nächstes bei Block 440 Verzweigungen, die als Teil eines abgebrochenen Transaktionsgebiets identifiziert worden sind, identifiziert werden. Insbesondere kann eine derartige Information basierend auf einer Kombination der Transaktionsindikatoren und der Abbruchindikatoren bestimmt werden. Insbesondere zeigt ein erster Eintrag, dessen Abbruchindikator gesetzt ist, an, dass der Abbruch vor diesem LBR-Eintrag erfolgt ist. Dieser Information entsprechend kann eine Verzweigungsrückspur erzeugt werden. Diese Information kann beispielsweise dazu verwendet werden, den Code zu optimieren (Block 450). Annehmend, dass ein Codeabschnitt eine Verzweigung enthält, welche die Transaktion zum Abbruch veranlasst, kann ein Optimierer bewirken, dass dieser Code modifiziert wird, um zu bewirken, dass diese Verzweigung nicht genommen wird, oder die Verzweigung zu modifizieren, um einen Transaktionsabbruch bei einer zukünftigen Ausführung des Codesegments zu vermeiden. Natürlich sind andere Verwendungen dieser Transaktionsstatusinformation möglich, wie beispielsweise ein Verständnis, ob und bei welcher Instruktion innerhalb eines Fehlerbereinigungswerkzeugs abgebrochen wurde.
  • Aufgrund der Art der Transaktionen ist bei einem Abbruch kein architektureller sichtbarer Zustand für die äußere Welt freigelegt. Diese Transaktionsinformation erlaubt eine Rekonstruktion eines ansonsten unsichtbaren und unbekannten Programmflusses bis zu dem Abbruchort. Daher ermöglichen Ausführungsformen ein Verwenden von den in den LBR-Registern gespeicherten Informationen bei einer Erzeugung einer Ausführungsrückspur. Diese Ausführungsrückspur kann dann sowohl online als auch offline verwendet werden. Beispielsweise kann die Ausführungsrückspur von einem Fehlerbereinigungswerkzeug verwendet werden, um eine Inspektion eines Codeflusses innerhalb der TM-Transaktion zu erlauben. Oder ein Offlineanalysewerkzeug kann die Ausführungsrückspur dazu verwenden, eine Post-Mortem-Codeflussinspektion zu erlauben. Während sie mit dieser bestimmten Implementierung in der Ausführungsform der 5 gezeigt ist, ist zu verstehen, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist.
  • Ausführungsformen können in vielen verschiedenen Systemtypen implementiert sein. Nunmehr Bezug nehmend auf 6 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 6 gezeigt ist, ist ein Multiprozessorsystem 500 ein Punkt-zu-Punkt-Verbindungssystem und enthält einen ersten Prozessor 570 und einen zweiten Prozessor 580, die mittels einer Punkt-zu-Punkt-Verbindung 550 gekoppelt sind. Wie in 6 gezeigt ist, kann jeder der Prozessoren 570 und 580 ein Mehrkernprozessor sein, einschließlich eines ersten und eines zweiten Prozessorkerns (d. h. Prozessorkerne 574a und 574b und Prozessorkerne 584a und 584b), obwohl potentiell viel mehr Kerne in den Prozessoren vorhanden sein können. Derartige Kerne können LBR-Register gemäß einer Ausführungsform der vorliegenden Erfindung enthalten, um eine Analyse von Verzweigungen, die innerhalb von TM-Transaktionen erfolgen, zu ermöglichen.
  • Immer noch Bezug nehmend auf 6 enthält der erste Prozessor 570 ferner einen Speichercontrollerhub (Memory Controller Hub – MCH) 572 und Punkt-zu-Punkt-(P-P)-Schnittstellen 576 und 578. Auf ähnliche Weise enthält der zweite Prozessor 580 einen MCH 582 und P-P-Schnittstellen 586 und 588. Wie in 6 gezeigt ist, koppeln die MCHs 572 und 582 die Prozessoren an jeweilige Speicher, nämlich einen Speicher 532 und einen Speicher 534, welche Bereiche eines Hauptspeichers (z. B. eines Dynamic Random Access Memory (DRAN)) sein können, welcher lokal an den jeweiligen Prozessoren angebracht ist. Der erste Prozessor 570 und der zweite Prozessor 580 können mit einem Chipsatz 590 mittels P-P-Verbindungen 552 bzw. 554 gekoppelt sein. Wie in 6 gezeigt ist, enthält der Chipsatz 590 P-P-Schnittstellen 594 und 598.
  • Darüber hinaus enthält der Chipsatz 590 eine Schnittstelle 592, um den Chipsatz 590 mit einer High-Performance-Graphik-Engine 538 durch eine P-P-Verbindung zu koppeln. Der Chipsatz 590 kann wiederum mit einem ersten Bus 516 mittels einer Schnittstelle 596 gekoppelt sein. Wie in 6 gezeigt ist, können verschiedene Eingabe-Ausgabe-(I/O)-Vorrichtungen 514 mit dem ersten Bus 516 gekoppelt sein, zusammen mit einer Bus-Bridge 518, welche den ersten Bus 516 mit einem zweiten Bus 520 koppelt. Verschiedene Vorrichtungen können mit dem zweiten Bus 520 gekoppelt sein, einschließlich beispielsweise einer Tastatur/Maus 522, Kommunikationsvorrichtungen 526 und einer Datenspeichereinheit 528, wie beispielsweise einem Plattenlaufwerk oder einer anderen Massenspeichervorrichtung, welche in einer Ausführungsform Code 530 enthalten kann. Darüber hinaus kann eine Audio-I/O-Vorrichtung 524 mit dem zweiten Bus 520 gekoppelt sein.
  • Ausführungsformen können in Code implementiert sein, und können auf einem Speichermedium gespeichert sein, welches darauf gespeicherte Instruktionen aufweist, die dazu verwendet werden können, ein System dazu zu programmieren, die Instruktionen auszuführen. Das Speichermedium kann einen beliebigen Typ von Platte, einschließlich Floppy-Disks, optischen Platten, optischen Platten, Solid State Drives (SSDs), Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magneto-optischen Platten, Halbleitervorrichtungen, wie beispielsweise Nur-Lese-Speichern (ROMs), Speichern mit wahlfreiem Zugriff (RAMs), wie beispielsweise dynamischen Speichern mit wahlfreiem Zugriff (DRAMs), statischen Speichern mit wahlfreien Zugriff (SRAMs), löschbaren programmierbaren Nur-Lese-Speichern (EPROMs), Flashspeichern, elektrisch löschbaren programmierbaren Nur-Lese-Speichern (EEPROMs), magnetischen oder optischen Karten oder einem beliebigen anderen Typ von Medien, welcher zum Speichern elektronischer Instruktionen geeignet ist, enthalten, ist aber nicht darauf beschränkt.
  • Während die vorliegende Erfindung mit Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, werden Fachleute daraus verschiedene Modifikationen und Variationen erkennen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Modifikationen und Variationen, wie sie in den wahren Geist und Umfang der vorliegenden Erfindung fallen, abdecken.

Claims (22)

  1. Einrichtung, welche Folgendes umfasst: einen Prozessor, der eine Ausführungseinheit und zumindest ein Register für eine Aufzeichnung einer letzten Verzweigung (Last Branch Record – LBR) zum Speichern einer Quell- und/oder Zieladressinformation einer Verzweigung, die während einer Programmausführung genommen wurde, enthält, wobei das zumindest eine LBR-Register ferner einen Transaktionsindikator zum Anzeigen, ob die Verzweigung während einer Transaktionsspeicher-(TM)-Transaktion genommen wurde, enthält.
  2. Einrichtung nach Anspruch 1, bei der das zumindest eine LBR-Register ferner dazu dient, einen Abbruchindikator zum Anzeigen, ob ein Abbrechen der TM-Transaktion erfolgt ist, bevor die Verzweigung genommen wurde, zu speichern.
  3. Einrichtung nach Anspruch 2, die ferner eine Logik zum Speichern der Quell- und/oder Zieladressinformation, des Transaktionsindikators und des Abbruchindikators in dem zumindest einen LBR-Register umfasst.
  4. Einrichtung nach Anspruch 1, die ferner ein Abbruchtransaktionsregister zum Speichern einer ersten Adressinformation einer Instruktion, welche das Abbrechen der TM-Transaktion bewirkt, und einer zweiten Adressinformation eines Handlers zum Empfangen einer Steuerung in Antwort auf das Abbrechen umfasst.
  5. Einrichtung nach Anspruch 1, die ferner einen Verzweigungsspurpuffer (BTB) umfasst, um eine Information aus dem zumindest einen LBR-Register zu speichern, wobei das zumindest eine LBR-Register eine Mehrzahl von LBR-Registerpaaren enthält.
  6. Einrichtung nach Anspruch 5, die weiter einen Optimierer umfasst, um eine Ausführungsrückspur für die TM-Transaktion, die zumindest teilweise auf der in dem BTB gespeicherten Information basierend erhalten wurde, zu verwenden.
  7. Einrichtung nach Anspruch 1, die ferner ein Fehlerbereinigungswerkzeug umfasst, um eine Inspektion eines Codeflusses innerhalb der TM-Transaktion mittels Verwendung einer Ausführungsrückspur der TM-Transaktion basierend auf einer in dem zumindest einen LBR-Register gespeicherten Information zu erlauben.
  8. Einrichtung nach Anspruch 1, die ferner ein Analysetool umfasst, um eine Post-Mortem-Inspektion eines Codeflusses der TM-Instruktion mittels Verwendung einer Ausführungsrückspur der TM-Transaktion basierend auf einer in dem zumindest einen LBR-Register gespeicherten Information zu ermöglichen.
  9. Verfahren, welches Folgendes umfasst: Einfügen einer Verzweigungsadressinformation in einen Eintrag einer Aufzeichnung einer letzten Verzweigung (Last Branch Record – LBR) eines Prozessors, wenn eine Verzweigung während einer Programmausführung genommen wird, Schreiben eines Transaktionsindikators des LBR-Eintrags, wenn die Verzweigung während einer Ausführung einer Transaktionsspeicher-(TM)-Transaktion genommen wird und andernfalls nicht Schreiben des Transaktionsindikators, und Schreiben eines Abbruchindikators des LBR-Eintrags, wenn die Verzweigung nach einem Abbrechen der TM-Transaktion erfolgt, und andernfalls nicht Schreiben des Abbruchindikators.
  10. Verfahren nach Anspruch 9, ferner umfassend ein Verwenden einer Transaktionszustandsinformation des Prozessors, um festzustellen, ob die Verzweigung innerhalb der TM-Transaktion auftritt.
  11. Verfahren nach Anspruch 9, ferner umfassend ein Speichern einer Information aus einer Mehrzahl von LBR-Einträgen in einen Verzweigungsspurpuffer eines Cachespeichers des Prozessors.
  12. Verfahren nach Anspruch 11, ferner umfassend ein Identifizieren einer oder mehrerer Verzweigungen innerhalb der TM-Transaktion basierend auf einem oder mehreren Transaktionsindikatoren, die in dem Verzweigungsspurpuffer gespeichert sind.
  13. Verfahren nach Anspruch 12, ferner umfassend ein Identifizieren einer oder mehrerer Verzweigungen, die während eines Gebietes der TM-Transaktion, die abgebrochen ist, genommen wurden, basierend auf einem oder mehreren in dem Verzweigungsspurpuffer gespeicherten Abbruchindikatoren.
  14. Verfahren nach Anspruch 13, ferner umfassend ein Optimieren von Code des Gebiets basierend auf der Identifizierung der genommenen Verzweigungen.
  15. System, welches Folgendes umfasst: einen Prozessor, aufweisend eine Ausführungseinheit und eine Mehrzahl von Registerpaaren für eine Aufzeichnung einer letzten Verzweigung (Last Branch Record – LBR), wovon jedes dazu dient, eine Quell- und eine Zieladressinformation einer während einer Programmausführung genommenen Verzweigung zu speichern, wobei jedes der LBR-Registerpaare ferner einen Transaktionsindikator, um anzuzeigen, ob die Verzweigung während einer Transaktionsspeicher-(TM)-Transaktion genommen wurde, und einen Abbruchindikator, um anzuzeigen, ob ein Abbruch der TM-Transaktion aufgetreten ist, bevor die Verzweigung genommen wurde, enthält, und einen mit dem Prozessor gekoppelten Dynamic Random Access Memory (DRAM).
  16. System nach Anspruch 15, bei dem der Prozessor eine Hardwareunterstützung für die TM-Transaktion enthält.
  17. System nach Anspruch 16, bei dem die Hardwareunterstützung einen Cachespeicher mit einer Mehrzahl von Einträgen enthält, wovon jeder zum Speichern von Transaktionsmetadaten hinsichtlich der TM-Transaktion dient.
  18. System nach Anspruch 15, bei dem der Prozessor ferner eine Logik enthält, um die Quell- und Zieladressinformation, den Transaktionsindikator und den Abbruchindikator in der Mehrzahl von LBR-Registerpaaren zu speichern.
  19. System nach Anspruch 15, bei dem der Prozessor ferner ein Abbruchtransaktionsregister zum Speichern einer ersten Adressinformation einer Instruktion, welche das Abbrechen der TM-Transaktion bewirkt, und einer zweiten Adressinformation eines Handlers zum Empfangen einer Steuerung in Antwort auf das Abbrechen enthält.
  20. System nach Anspruch 15, bei dem der Prozessor ferner einen Cachespeicher enthält, um einen Verzweigungsspurpuffer (BTB) zur Speicherung einer Information aus der Mehrzahl von LBR-Registerpaaren zu speichern.
  21. System nach Anspruch 20, das ferner eine Logik umfasst, um ein Signal an die Mehrzahl von LBR-Registerpaaren auszugeben, um zu bewirken, dass Inhalte der Mehrzahl von LBR-Registerpaaren in den BTB geschrieben werden.
  22. System nach Anspruch 15, das ferner einen Optimierer umfasst, um eine zumindest teilweise auf der in den LBR-Registerpaaren gespeicherten Information basierend erhaltene Ausführungsrückspur für die TM-Transaktion zu verwenden.
DE112011105042.9T 2010-07-28 2011-07-28 Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher Active DE112011105042B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/845,554 US8479053B2 (en) 2010-07-28 2010-07-28 Processor with last branch record register storing transaction indicator
US12/845,554 2010-07-28
PCT/US2011/045797 WO2012016085A2 (en) 2010-07-28 2011-07-28 Last branch record indicators for transactional memory

Publications (2)

Publication Number Publication Date
DE112011105042T5 true DE112011105042T5 (de) 2014-01-02
DE112011105042B4 DE112011105042B4 (de) 2020-12-03

Family

ID=45527938

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011105042.9T Active DE112011105042B4 (de) 2010-07-28 2011-07-28 Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher

Country Status (8)

Country Link
US (4) US8479053B2 (de)
KR (1) KR101423480B1 (de)
CN (1) CN103154908B (de)
DE (1) DE112011105042B4 (de)
GB (1) GB2504858B (de)
IN (1) IN2013CN00694A (de)
TW (1) TWI468937B (de)
WO (1) WO2012016085A2 (de)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US20130013899A1 (en) * 2011-07-06 2013-01-10 International Business Machines Corporation Using Hardware Transaction Primitives for Implementing Non-Transactional Escape Actions Inside Transactions
US20130205284A1 (en) * 2012-02-02 2013-08-08 Dhruva Chakrabarti Ownership acquire policy selection
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
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
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
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
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8880959B2 (en) * 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9268598B2 (en) 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
US9182986B2 (en) 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US9519586B2 (en) 2013-01-21 2016-12-13 Qualcomm Incorporated Methods and apparatus to reduce cache pollution caused by data prefetching
US9535744B2 (en) 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
US9244724B2 (en) * 2013-08-15 2016-01-26 Globalfoundries Inc. Management of transactional memory access requests by a cache memory
EP3039608B1 (de) 2013-08-28 2018-07-04 McAfee, LLC Hardware- und software-ausführungsprofilierung
US9442853B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9442775B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9305167B2 (en) 2014-05-21 2016-04-05 Bitdefender IPR Management Ltd. Hardware-enabled prevention of code reuse attacks
US10049211B1 (en) 2014-07-16 2018-08-14 Bitdefender IPR Management Ltd. Hardware-accelerated prevention of code reuse attacks
GB2533416A (en) * 2014-12-19 2016-06-22 Advanced Risc Mach Ltd Monitoring utilization of transactional processing resource
GB2533650B (en) * 2014-12-23 2021-07-21 Advanced Risc Mach Ltd Debugging data processing transactions
US10007549B2 (en) * 2014-12-23 2018-06-26 Intel Corporation Apparatus and method for a profiler for hardware transactional memory programs
US11048516B2 (en) * 2015-06-27 2021-06-29 Intel Corporation Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
GB2548845B (en) 2016-03-29 2019-11-27 Imagination Tech Ltd Handling memory requests
US10600141B2 (en) * 2016-09-23 2020-03-24 Nvidia Corporation Monitoring execution in a graphics processing unit
US10140056B2 (en) * 2016-09-27 2018-11-27 Intel Corporation Systems and methods for differentiating function performance by input parameters
US20180211046A1 (en) * 2017-01-26 2018-07-26 Intel Corporation Analysis and control of code flow and data flow
CN107506638B (zh) * 2017-08-09 2020-10-16 南京大学 一种基于硬件机制的内核控制流异常检测方法
US10445211B2 (en) * 2017-08-28 2019-10-15 Microsoft Technology Licensing, Llc Logging trace data for program code execution at an instruction level
CN108681500B (zh) * 2018-04-28 2021-09-07 格兰菲智能科技有限公司 具有事务记录能力的系统和事务记录方法
US11354440B1 (en) * 2019-06-21 2022-06-07 NortonLifeLock Inc. Analyzing and mitigating privacy issues on a computing device using cookie generation flows
WO2021035006A1 (en) * 2019-08-20 2021-02-25 Northrop Grumman Systems Corporation Simd controller and simd predication scheme

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658557B1 (en) 2000-05-25 2003-12-02 Advanced Micro Devices, Inc. Synthesizing the instruction stream executed by a microprocessor from its branch trace data
JP4362096B2 (ja) * 2004-09-30 2009-11-11 富士通株式会社 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体
US8813052B2 (en) * 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded 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
US7930695B2 (en) 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
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
US8296749B2 (en) * 2007-12-28 2012-10-23 Intel Corporation Program translation and transactional memory formation
US8078850B2 (en) 2008-04-24 2011-12-13 International Business Machines Corporation Branch prediction technique using instruction for resetting result table pointer

Also Published As

Publication number Publication date
US10073719B2 (en) 2018-09-11
CN103154908B (zh) 2015-11-25
TW201224749A (en) 2012-06-16
GB201314780D0 (en) 2013-10-02
GB2504858B (en) 2018-06-20
CN103154908A (zh) 2013-06-12
DE112011105042B4 (de) 2020-12-03
US20120030518A1 (en) 2012-02-02
WO2012016085A2 (en) 2012-02-02
US8782382B2 (en) 2014-07-15
KR20130041295A (ko) 2013-04-24
US20130179668A1 (en) 2013-07-11
IN2013CN00694A (de) 2015-07-03
GB2504858A (en) 2014-02-12
TWI468937B (zh) 2015-01-11
US8479053B2 (en) 2013-07-02
WO2012016085A3 (en) 2012-05-31
US9354878B2 (en) 2016-05-31
US20160232041A1 (en) 2016-08-11
KR101423480B1 (ko) 2014-07-25
US20140258695A1 (en) 2014-09-11

Similar Documents

Publication Publication Date Title
DE112011105042B4 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
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
DE10297856B4 (de) Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt
DE602005005726T2 (de) Verbreitung eines Thread-IDs in einem Multithreadpipelineprozessor
DE112006001698T5 (de) Grundfunktionen zum Verbessern von Thread-Level Spekulation
US9558118B2 (en) Tracing mechanism for recording shared memory interleavings on multi-core processors
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE112011100715T5 (de) Hardware-hilfs-thread
DE102010052680A1 (de) Ein Befehl, um einen Prozessor-Wartezustand zu ermöglichen
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE102007054057A1 (de) Mechanismus zum Detektieren und Vorhersagen eines kritischen Abschnitts zur Hardware-Lock-Elision
DE102012216592A1 (de) Präfix-Computeranweisung zur Erweiterung der Anweisungsfunktionalität
DE102010053088A1 (de) Sammeln und Streuen mehrerer Datenelemente
DE102012216571A1 (de) Nutzung einer architekturdefinierten letztverwendungs-operandenangabe in einem computersystem-operandenressourcenpool
US9697040B2 (en) Software replayer for transactional memory programs
DE102013224137A1 (de) Anweisungs-Kategorisierung für Vorauslaufen-Operation
DE102013219859A1 (de) Selektives Vergiften von Daten während Vorauslaufen
CN107003897B (zh) 监控事务处理资源的利用率
CN107111488B (zh) 调试数据处理事务
DE3740762A1 (de) Datenverarbeitungssystem mit einer externen schnittstelle
DE102013021996A1 (de) Wiederholung von Speichertransaktionen während der Behandlung von Speicherzugriffsfehlern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R073 Re-establishment requested
R074 Re-establishment allowed
R074 Re-establishment allowed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0009300000

R074 Re-establishment allowed
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: MEDIATEK INC., TW

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