DE112010003492T5 - Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung - Google Patents

Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung Download PDF

Info

Publication number
DE112010003492T5
DE112010003492T5 DE112010003492T DE112010003492T DE112010003492T5 DE 112010003492 T5 DE112010003492 T5 DE 112010003492T5 DE 112010003492 T DE112010003492 T DE 112010003492T DE 112010003492 T DE112010003492 T DE 112010003492T DE 112010003492 T5 DE112010003492 T5 DE 112010003492T5
Authority
DE
Germany
Prior art keywords
transaction
aig
memory
instruction
instructions
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
DE112010003492T
Other languages
English (en)
Other versions
DE112010003492B4 (de
Inventor
Thomas Jr. HELLER
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112010003492T5 publication Critical patent/DE112010003492T5/de
Application granted granted Critical
Publication of DE112010003492B4 publication Critical patent/DE112010003492B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions

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

Abstract

Ein auf einem Rechner ausgeführtes Verfahren zur Verwendung durch ein Transaktionsprogramm zum Verwalten des Speicherzugriffs auf einen gemeinsam genutzten Speicherplatz für Transaktionsdaten eines ersten Prozessstrangs, wobei der erste Prozessstrang und ein zweiter Prozessstrang auf den gemeinsam genutzten Speicherplatz zugreifen können. Es wird eine Folge von Anweisungen ausgeführt, um eine Transaktion des ersten Prozessstrangs auszuführen, wobei mit einer Anweisung aus der Folge von Anweisungen begonnen wird. Es wird festgestellt, ob die eine Anweisung Teil einer aktiven atomaren Anweisungsgruppe (AIG) von der Transaktion des ersten Prozessstrangs zugehörigen Anweisungen ist. Es werden eine Zwischenspeicherstruktur und eine Transaktionstabelle lokalisiert, die gemeinsam für Einträge während einer aktiven AIG-Betriebsart sorgen, wenn die eine Anweisung Teil einer aktiven AIG ist. Die nächste Anweisung wird infolge der Feststellung, dass die eine Anweisung nicht Teil einer aktiven AIG ist, in einer normalen Ausführungsbetriebsart ausgeführt.

Description

  • Hintergrund
  • Diese Erfindung betrifft allgemein die Verarbeitung in einer Rechnerumgebung und insbesondere ein Rechnersystem mit optimierter Unterstützung für Transaktionsspeicher.
  • Aktuelle Mehrprozessor-Rechnersysteme bzw. mehrere Prozessstränge gleichzeitig ausführende Rechensysteme (multiprocessor and multithreaded computing systems) erlauben eine Skalierung der Leistungsfähigkeit einer einzelnen Software-Anwendung auf ein Vielfaches der möglichen Leistungsfähigkeit einer Anwendung, die nur einen einzelnen Prozessstrang ausführen kann (single threaded application). Aktuelle Software- bzw. Hardware-Systeme ermöglichen die parallele Verarbeitung mehrerer Ausführungsprozessstränge. Software-Anwendungen können zum Steuern der Erzeugung mehrerer parallel ausgeführter Prozessstränge vorhandene Prozessstrang-Bibliotheken (thread libraries) wie die POSIX® Pthread-Bibliothek verwenden. Die Verwendung mehrerer Prozessstränge funktioniert gut für Anwendungen, die mit einfach aufgeteilten Aufgaben und Daten arbeiten; zum Steuern des Zugriffs auf die wenigen gemeinsam genutzten Datenstrukturen können undifferenzierte Sperren (course grain locks) eingesetzt werden, um selten auftretende Konflikte zwischen den Datenaktualisierungen mehrerer Prozessstränge zu verhindern.
  • Viele Software-Anwendungen enthalten Datenstrukturen, die von mehreren Prozesssträngen gemeinsam genutzt werden müssen, wobei die gemeinsam genutzten Datenstrukturen häufig gleichzeitig geprüft und aktualisiert werden. Diese Anwendungen benötigen bei Verwendung einer großen Anzahl von Prozesssträngen zusätzliche Abänderungen zum Erreichen einer guten Skalierung. Anwendungen, die mehrere Ausführungsprozessstränge verwenden, die gleichzeitig auf gemeinsam genutzte Datenstrukturen zugreifen, erfordern die Anwendung spezialisierter Datensperrungsroutinen zum Erzeugen eines zuverlässigen Ergebnisses, das keine Systemblockaden bzw. beschädigte Daten mit sich bringt. Die meisten bestehenden mehrere Prozessstränge gleichzeitig ausführenden Anwendungen in dieser Kategorie setzen zum Erreichen einer hohen Leistungsfähigkeit und eines fehlerfreien Betriebs differenzierte Software-Sperren (fine grained software locks) ein. Das Schreiben von hochleistungsfähigen, mehrere Prozessstränge gleichzeitig ausführenden Programmen, die differenzierte Software-Sperren einsetzen, ist äußerst schwierig und erfordert fachmännische Programmierfähigkeiten. Der Mangel dieser Fähigkeiten in der Software-Industrie schränkt die Herstellung von mehrere Prozessstränge gleichzeitig ausführenden Anwendungen, welche die Verwendung von gemeinsam genutzten Datenstrukturen erfordern, möglicherweise ein und somit auch die Nützlichkeit von mehrere Prozessstränge gleichzeitig ausführenden Rechnersystemen bzw. Mehrprozessor-Rechnersystemen für bestimmte Anwendungsklassen, darunter viele Formen der Transaktionsverarbeitung.
  • Es wurden verschiedene „Transaktionsspeicher”-Systeme vorgeschlagen und gebaut, um ein einfacheres Programmiermodell für das Erstellen von mehrere Prozessstränge gleichzeitig ausführenden Anwendungen bereitzustellen, die den Zugriff auf gemeinsam genutzte Datenstrukturen steuern. Diese Systeme gestatten es einer auf einem Ausführungsprozessstrang laufenden Software, optimistisch anzunehmen, dass gemeinsam genutzte Datenstrukturen ohne Konflikt mit den Zugriffen und Aktualisierungen anderer Ausführungsstränge aktualisiert werden können. Die spekulativen Speicheraktualisierungen bleiben „schwebend”, bis das Transaktionsspeichersystem bestätigt, dass keine Konflikte mit Speicherzugriffen von anderen Prozesssträngen aufgetreten sind. Wenn Konflikte zwischen den gespeicherten Zugriffen von mehreren Prozesssträngen erkannt werden, muss das Transaktionsspeichersystem in der Lage sein, die unerledigten spekulativen Aktualisierungen zu verwerfen.
  • Kurze Zusammenfassung
  • Bei einer beispielhaften Ausführungsform handelt es sich um ein auf einem Rechner ausgeführtes Verfahren zur Verwendung durch ein Transaktionsprogramm zum Verwalten des Speicherzugriffs auf einen gemeinsam genutzten Speicherplatz für Transaktionsdaten eines ersten Prozessstrangs, wobei der erste Prozessstrang und ein zweiter Prozessstrang auf den gemeinsam genutzten Speicherplatz zugreifen können. Das Verfahren beinhaltet das Ausführen einer Folge von Anweisungen auf einem Rechnersystem, um eine Transaktion des ersten Prozessstrangs auszuführen, wobei mit einer Anweisung aus der Folge von Anweisungen begonnen wird. Auf dem Rechnersystem wird festgestellt, ob die eine Anweisung Teil einer aktiven atomaren Anweisungsgruppe (AIG, atomic instruction group) von der Transaktion des ersten Prozessstrangs zugehörigen Anweisungen ist. Es werden eine Zwischenspeicherstruktur und eine Transaktionstabelle lokalisiert, die gemeinsam für Einträge während einer aktiven AIG-Betriebsart sorgen. Das Lokalisieren findet infolge der Feststellung statt, dass die eine Anweisung Teil einer aktiven AIG ist. Ein Eintrag enthält einen in der Zwischenspeicherstruktur gespeicherten alten Datenzustand und in der Transaktionstabelle gespeicherte Steuerungsinformationen. Sämtliche durch Anweisungen der aktiven AIG geprüften bzw. abgeänderten Speicherplätze bleiben schwebend, bis das Rechnersystem anzeigt, dass die Speicherplätze festzuschreiben sind. Die nächste Anweisung wird infolge der Feststellung, dass die eine Anweisung nicht Teil einer aktiven AIG ist, in einer normalen Ausführungsbetriebsart auf dem Rechnersystem ausgeführt.
  • Bei einer weiteren beispielhaften Ausführungsform handelt es sich um ein Rechnerprogrammprodukt zur Verwendung durch ein Transaktionsprogramm zum Verwalten des Speicherzugriffs auf einen gemeinsam genutzten Speicherplatz für Transaktionsdaten eines ersten Prozessstrangs, wobei der erste Prozessstrang und ein zweiter Prozessstrang auf den gemeinsam genutzten Speicherplatz zugreifen können. Das Rechnerprogrammprodukt beinhaltet ein durch einen Verarbeitungsschaltkreis lesbares, physisches Speichermedium, auf dem Anweisungen zur Ausführung durch den Verarbeitungsschaltkreis zur Durchführung eines Verfahrens gespeichert sind. Das Verfahren beinhaltet das Ausführen einer Folge von Anweisungen, um eine Transaktion des ersten Prozessstrangs auszuführen, wobei mit einer Anweisung aus der Folge von Anweisungen begannen wird. Es wird festgestellt, ob die eine Anweisung Teil einer aktiven AIG von der Transaktion des ersten Prozessstrangs zugehörigen Anweisungen ist. Es werden eine Zwischenspeicherstruktur und eine Transaktionstabelle lokalisiert, die gemeinsam für Einträge während einer aktiven AIG-Betriebsart sorgen. Das Lokalisieren findet infolge der Feststellung statt, dass die eine Anweisung Teil einer aktiven AIG ist. Ein Eintrag enthält einen in der Zwischenspeicherstruktur gespeicherten alten Datenzustand und in der Transaktionstabelle gespeicherte Steuerungsinformationen. Sämtliche durch Anweisungen der aktiven AIG geprüften bzw. abgeänderten Speicherplätze bleiben schwebend, bis das Rechnersystem anzeigt, dass die Speicherplätze festzuschreiben sind. Die nächste Anweisung wird infolge der Feststellung, dass die eine Anweisung nicht Teil einer aktiven AIG ist, in einer normalen Ausführungsbetriebsart ausgeführt.
  • Bei einer weiteren beispielhaften Ausführungsform handelt es sich um ein System zur Verwendung durch ein Transaktionsprogramm zum Verwalten des Speicherzugriffs auf einen gemeinsam genutzten Speicherplatz für Transaktionsdaten eines ersten Prozessstrangs in einem Rechnersystem, wobei der erste Prozessstrang und ein zweiter Prozessstrang auf den gemeinsam genutzten Speicherplatz zugreifen können. Das System beinhaltet einen Rechnerspeicher und einen Prozessor, der mit dem Rechnerspeicher Daten austauscht. Der Prozessor beinhaltet ein Anweisungsabrufelement zum Abrufen von Anweisungen aus dem Speicher sowie ein oder mehrere Ausführungselemente zum Ausführen der abgerufenen Anweisungen. Das Rechnersystem ist in der Lage, ein Verfahren durchzuführen. Das Verfahren beinhaltet das Ausführen einer Folge von Anweisungen, um eine Transaktion des ersten Prozessstrangs auszuführen, wobei mit einer Anweisung aus der Folge von Anweisungen begonnen wird. Es wird festgestellt, ob die eine Anweisung Teil einer aktiven AIG von der Transaktion des ersten Prozessstrangs zugehörigen Anweisungen ist. Es werden eine Zwischenspeicherstruktur und eine Transaktionstabelle lokalisiert, die gemeinsam für Einträge während einer aktiven AIG-Betriebsart sorgen. Das Lokalisieren findet infolge der Feststellung statt, dass die eine Anweisung Teil einer aktiven AIG ist. Ein Eintrag enthält einen in der Zwischenspeicherstruktur gespeicherten alten Datenzustand und in der Transaktionstabelle gespeicherte Steuerungsinformationen. Sämtliche durch Anweisungen der aktiven AIG geprüften bzw. abgeänderten Speicherplätze bleiben schwebend, bis das Rechnersystem anzeigt, dass die Speicherplätze festzuschreiben sind. Die nächste Anweisung wird infolge der Feststellung, dass die eine Anweisung nicht Teil einer aktiven AIG ist, in einer normalen Ausführungsbetriebsart ausgeführt.
  • Zusätzliche Eigenschaften und Vorteile werden durch die Techniken der vorliegenden Erfindung realisiert. Andere Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und als Teil der beanspruchten Erfindung angesehen. Ein besseres Verständnis der Erfindung mit Vorteilen und Eigenschaften ergibt sich aus der Beschreibung und den Zeichnungen.
  • Kurze Beschreibung der verschiedenen Ansichten der Zeichnungen
  • Es wird nun Bezug auf die Zeichnungen genommen, wobei gleiche Elemente in den diversen FIGUREN gleich nummeriert sind:
  • 1 veranschaulicht ein Rechnersystem mit optimiertem Transaktionsspeicher, das durch eine beispielhafte Ausführungsform der vorliegenden Erfindung umgesetzt werden kann;
  • 2 veranschaulicht Transaktionstabellen in realem Systemspeicher, die durch eine beispielhafte Ausführungsform umgesetzt werden können;
  • 3 veranschaulicht einen Ladevorgangsverarbeitungs-Ablaufplan, der durch eine beispielhafte Ausführungsform umgesetzt werden kann;
  • 4 veranschaulicht einen Speichervorgangsverarbeitungs-Ablaufplan, der durch eine beispielhafte Ausführungsform umgesetzt werden kann;
  • 5 veranschaulicht einen Festschreibvorgangsverarbeitungs-Ablaufplan, der durch eine beispielhafte Ausführungsform umgesetzt werden kann;
  • 6 veranschaulicht einen Rückabwicklungsverarbeitungs-Ablaufplan, der durch eine beispielhafte Ausführungsform umgesetzt werden kann;
  • 7 veranschaulicht spezielle Anweisungen und eine atomare Anweisungsgruppe (AIG) von in einer verschachtelten AIG verwendeten Anweisungen, die durch eine beispielhafte Ausführungsform umgesetzt werden können;
  • 8 veranschaulicht einen verallgemeinerten Ablaufplan, der den Ablauf des Decodierens und des Ausführens von Anweisungen in einer beispielhaften Ausführungsform zeigt;
  • 9 veranschaulicht einen Speichervorgangs-Ablaufplan für alte Datenzustände, der durch eine beispielhafte Ausführungsform umgesetzt werden kann; und
  • 10 veranschaulicht ein Rechnerprogrammprodukt, das durch eine beispielhafte Ausführungsform umgesetzt werden kann.
  • Ausführliche Beschreibung
  • Eine beispielhafte Ausführungsform der vorliegenden Erfindung bezieht sich auf ein Transaktionsspeichersystem, das eine Datenzwischenspeicherstruktur (z. B. einen Hardware-Puffer) mit einer auf Protokollen beruhenden Struktur (z. B. eine Softwaretabelle) kombiniert, um spekulative Transaktionsdaten zu speichern. Eine beispielhafte Ausführungsform sorgt dafür, dass „alte Datenzustände” in dem Zwischenspeicher gespeichert werden, und beseitigt die Notwendigkeit, „alte Datenzustände” in die auf Protokollen beruhende Struktur zu verlagern. Falls die alten Datenzustände jedoch nicht in der Datenzwischenspeicherstruktur gespeichert werden können (z. B. wenn diese voll ist), sorgt eine beispielhafte Ausführungsform dafür, dass die alten Datenzustände in der auf Protokollen beruhenden Struktur gespeichert werden.
  • Beispielhafte Ausführungsformen stellen ein Rechnersystem bereit, das eine Kombination aus einem an jedem Inkrement von realem Systemspeicher angebrachten „Privat-zu-Transaktions-”(PTRAN-)Merker („private-to-transaction” (PTRAN) tag), einem Protokoll über spekulative Lade- und Speichervorgänge und einer Datenzwischenspeicherstruktur verwendet, die den spekulativen Lade- und Speichervorgängen zugehörige alte Datenzustände speichert, um eine verbesserte Umsetzung eines Transaktionsspeichersystems bereitzustellen. Eine beispielhafte Ausführungsform verwendet ein Protokoll, bei dem das zusätzliche Kennzeichnungs-Bit als PTRAN-Merker eingesetzt wird und jedem Inkrement realen Systemspeichers zugehörig ist. Es wird Hardware bereitgestellt, um Konflikte zwischen den Speicherzugriffen durch auf mehreren Ausführungsprozesssträngen laufende Transaktionen schnell zu erkennen. Die in einer beispielhaften Ausführungsform der vorliegenden Erfindung beinhaltete Verwendung des Merkers in dem Speicher und zugehöriger Konflikterkennungshardware stellt ein wesentlich schnelleres Transaktionsspeichersystem mit im Vergleich zu vorhandenen Systemen wesentlich geringerem Verwaltungsaufwand bereit. Die Komplexität einer beispielhaften Ausführungsform ist geringer als in Versuchen nach dem Stand der Technik, zusätzliche Zwischenspeicher-Kohärenz-Zustände für das Erkennen von Konflikten zu verwenden, insbesondere bei Systemen mit einer großen Anzahl von Prozessoren und zugehörigen Anschlüssen.
  • Eine beispielhafte Ausführungsform der vorliegenden Erfindung verwendet eine Kombination aus dem Zwischenspeicher und der Hauptspeicheranordnung des Rechnersystems zum Speichern der spekulativen Daten (darunter sowohl ein alter Datenzustand als auch Steuerungsinformationen) und kann sehr lange Transaktionen unterstützen. Eine beispielhafte Ausführungsform verwendet den Zwischenspeicher zum Speichern von alten Datenzuständen und die Hauptspeicheranordnung (hierin auch Hauptspeicher genannt) zum Speichern von den spekulativen Lade- und Speichervorgängen zugehörigen Transaktions- und Adressinformationen (z. B. Steuerungsinformationen). Außerdem wird die Hauptspeicheranordnung dafür verwendet, jegliche überlaufende alte Datenzustände zu speichern, die nicht in den für die alten Datenzustände reservierten Bereich des Zwischenspeichers (z. B. einen Puffer) passen. Der hierin verwendete Begriff „alter Datenzustand” betrifft die ursprünglichen nichtspekulativen Daten in Speicherplätzen, welche die Ziele der Speichervorgangsanweisungen innerhalb einer Transaktion sind. Eine beispielhafte Ausführungsform stellt die Möglichkeit bereit, die Adresse eines neuen Speicherzugriffs für gewöhnliche Fälle ohne einen langen Suchprozess zu überprüfen. Ebenso stellt dies eine Verbesserung im Vergleich zu nur Software verwendenden Transaktionsspeichersystemen dar, da die Konflikterkennung und Verwendung des Merkers in dem Speicher einen Teil des Software-Verwaltungsaufwands beseitigt, der mit dem Verfolgen des spekulativen Zustands von Transaktionen einhergeht. Sie stellt auch die Möglichkeit bereit, Speicherkonflikte sehr detailliert (bis auf Einzel-Byte Ebene) zu erkennen, im Gegensatz zu Software-Systemen nach dem Stand der Technik, die Aktualisierungen für ganze Software-Objekte verfolgen, die mehrere hundert oder tausend Bytes umfassen können. Bestehende Software-Systeme geben entweder häufig zu viele mögliche Datenkonflikte an oder verursachen Verzögerungen bei sehr langen Softwarepfaden, wenn sie versuchen, die Aktualisierungen für Einzelkomponenten von Software-Objekten zu verfolgen. Ein weiterer Vorteil der Beseitigung der für das Lesen und Schreiben in dem Hauptspeicher erforderlichen Bandbreite wird durch Bereitstellung eines Zwischenspeicherplatzes zum Speichern alter Datenzustände realisiert.
  • Es wurden, wie durch die US-Patentschrift mit der Nummer 7 536 517 (nachfolgend das „'517er-Patent” genannt) veranschaulicht, Transaktionsspeichersysteme vorgeschlagen, welche die Verwendung von Software-Eintragungsdatensätzen lehrt, die Speicherplätzen zugehörig sind, auf die von Transaktionen zugegriffen wurde. Das in dem '517er-Patent beschriebene System verwendet auch einen „Versionswert” in dem „Eintragungsdatensatz”. 3 des '517er-Patents beinhaltet einen Schritt „lokalisiere Eintragungsdatensatz des Speicherplatzes”. Der die 3 beschreibende Text führt das Beispiel an, in dem der Eintragungsdatensatz Teil eines Software-Objekts an der Speicheradresse ist, auf die Bezug genommen wird, und durch Verwendung einer „Software-Transaktionsspeicher-Schnittstelle” erzeugt wird. Das '517er-Patent verwendet jedem Eintragungsdatensatz zugehörige Versionsnummern und muss Fälle bearbeiten, in denen die Versionsnummer die durch den Eintragungsdatensatz maximal unterstützte Zahl überschreitet. Nachdem man die Einzelheiten einer beispielhaften Ausführungsform erfahren hat, wird man im Nachhinein erkennen, dass diese Eigenschaften der jüngsten Entwicklungen bei Transaktionsspeichersystemen nicht benötigt werden und verbessert werden können.
  • Wie bei der von David A. Wood in seinem Artikel mit dem Titel „An Overview of Hardware Alternatives" (Transactional Memory Workshop, 8. April 2005) zusammengefassten Entwicklung schneller Entwicklungen von Rechnersystemen dargelegt, schlugen Chang und Mergen von IBM früher, und mittlerweile vor langer Zeit, die Verwendung eines jedem Segment des virtuellen Speichers zugehörigen Sperrbit vor (beschrieben in „801 Storage: Architecture and Programming”). Ihr System stellte eine Möglichkeit zum Erkennen von gleichzeitig ablaufenden Zugriffen auf Speicherplätze durch mehrere Prozessstränge bereit, wobei jedoch die Gesamtanzahl von gleichzeitig ablaufenden Prozesssträngen, die bei aktivem Transaktionssperrmechanismus auf jedem einzelnen virtuellen Speichersegment laufen konnten, beschränkt wurde. Lange virtuelle Speicherseitentabellen, die von Chang und Mergen zur Ausführung von gleichzeitig ablaufenden Prozesssträngen benötigt werden, bedeuten für alle virtuellen Speicher nutzenden Ausführungsprozessstränge eine Leistungseinbuße, nicht nur für diejenigen, die Transaktionen ausführen, so dass die Vorschläge von Chang und Mergen eine Anekdote nach dem Stand der Technik wurde, wie Woods bemerkte: „Niemand scheint das Erlernte zu berücksichtigen”. Eine beispielhafte Ausführungsform der vorliegenden Erfindung verwendet eine von den virtuellen Speicherseitentabellen des Systems getrennte „Transaktionstabelle” in Kombination mit einer Datenzwischenspeicherstruktur zum Speichern von den spekulativen Lade- und Speichervorgängen zugehörigen Informationen.
  • Woods wusste nicht, dass in der Chang und Mergen zur Verfügung stehenden IBM-Betriebseinrichtung in Yorktown laufend Laborentwicklungen in Bezug auf Transaktionsspeichersysteme durchgeführt wurden, darunter das Speichersystem, das in der US-Patentschrift mit der Nummer 7 350 034 (nachfolgend das „'034er-Patent” genannt), eingereicht am 20. Juni 2005 mit dem Titel „Architecture Support of Best-Effort Atomic Transactions for Multiprocessor Systems” beschrieben ist.
  • Das ' 034 er-Patent beschreibt ein Transaktionsspeichersystem, das sich auf die Verwendung von „Zwischenspeichern als Puffer für Daten, auf die atomare Transaktionen zugreifen” („caches as buffers for data accessed by atomic transactions” konzentriert. Das '034er-Patent lehrt, das Fehlschlagen einer Transaktion zu erzwingen, wenn das System einen „Pufferüberlauf” erkennt, und schlägt nicht vor, wie der Fall zu behandeln ist, wenn spekulative Daten aus dem Zwischenspeicher gewiesen werden. Ein Pufferüberlauf entsteht, wenn zu viele Lade- bzw. Speichervorgänge für Transaktionen dieselbe Zwischenspeicher-Kongruenzklasse anpeilen. Der Prozentsatz von Transaktionen, die den Zwischenspeicher überlaufen lassen und fehlschlagen ist proportional zu der Anzahl von in einer Transaktion enthaltenen Lade- und Speichervorgängen. Lange Transaktionen schlagen häufiger fehl.
  • Es wurden andere Systeme vorgeschlagen, die einen Zwischenspeicher verwenden, um ein Konflikterkennungsschema umzusetzen und spekulative Daten zu erfassen, die zu einem Überlaufen des Zwischenspeichers führen. Eine beispielhafte Ausführungsform der vorliegenden Erfindung ist zur Konflikterkennung nicht in erster Linie auf Datenzwischenspeicherzustände angewiesen. Die erforderlichen spezialisierten Zwischenspeicherzustände führen zu einer unerwünschten Zunahme der Komplexität und erschweren auch das Hinzufügen der benötigten Erkennungs- und Isolierungsmechanismen zu bestehenden Mehrprozessor-Zwischenspeicher-Kohärenz-Ausführungen. Trotzdem wurden neben dem in dem ' 034 er-Patent beschriebenen Ansatz viele Versuche unternommen, den Zwischenspeicher auszunutzen. Ein Ansatz ist die Verwendung eines „Vorabbildungsprotokolls” („before-image log”) und eines Zwischenspeicher-Kohärenz-Zustands zur Umsetzung eines Konflikterkennungsschemas. Ein anderer Ansatz wird von Ananian u. a. in ihrem Dokument mit dem Titel „Unbounded Transactional Memory" (Research Abstracts 2006, CSAIL Publications and Digital Archive) beschrieben, das ein Transaktionsspeichersystem beschreibt, das zur Erfassung spekulativer Daten, die zu einem Überlaufen von Datenzwischenspeichern führen, eine einzelne „nicht sortierte, linear angeordnete Datenstruktur” („unsorted linear array data structure”) verwendet. Sie verwenden ein zusätzliches Bit pro Zwischenspeichersatz, das „O”-Bit zum Anzeigen, ob dieser Satz „ein Überlaufen verursacht” hat, und ein anderes Bit pro Eintrag in den Zwischenspeicher, das „T”-Bit zum Anzeigen, dass der Eintrag spekulative Daten enthält. Die linear angeordnete Datenstruktur stellt die Fähigkeit bereit, längere Transaktionen zu unterstützen, stellt jedoch nicht die Fähigkeit der beispielhaften Ausführungsformen der vorliegenden Erfindung zum schnellen Erkennen bereit. Die lineare Anordnung von Ananian muss nach jedem Zwischenspeicherzugriff durchsucht werden, der den „das Überlaufen verursachenden” Satz anpeilt. Dies kann für Transaktionen, die häufig ein Überlaufen verursachen, ein langwieriger Prozess sein. Rajwar, Herlihy und Lai wenden in ihrem Dokument mit dem Titel „Virtualizing Transactional Memory" (2005 IEEE) einen ähnlichen Ansatz wie Ananian an. Rajwar u. a. verwenden als Hauptmechanismus zum Verfolgen des Transaktionen zugehörigen spekulativen Zustands ebenfalls einen Datenzwischenspeicher. Aus den Zwischenspeichern zwangsweise entfernte spekulative Daten werden in die Transaktions-Adressdatentabelle (XADT, transaction address data table) im Überlaufbereich in dem virtuellen Speicher verlagert. Das Erkennen eines möglichen Konflikts mit einer Adresse, die Teil der XADT ist, erfordert ein langsames lineares Durchsuchen der XADT. Rajwar beschreibt die Verwendung von Filtern zur Beseitigung einiger dieser Durchsuchungen, aber es gibt viele Fälle, in denen noch immer eine Durchsuchung durchgeführt werden muss.
  • Neben den oben zusammengefassten Entwicklungen auf dem Gebiet wurden viele Software-Schnittstellen und Abänderungen von Befehlssätzen für die Unterstützung von Transaktionsspeicher vorgeschlagen. Das Dokument „Architectural Semantics for Practical Transactional Memory" (McDonald u. a., Computer Systems Laboratory, Stanford University, 2006) vergleicht einige der Vorschläge und stellt Bezüge zu vielen anderen her und wird hierin durch Bezugnahme in vollem Umfang aufgenommen.
  • Viele Software-Schnittstellen und Abänderungen von Befehlssätzen wurden für die Unterstützung von Transaktionsspeicher vorgeschlagen. Beispielhafte Ausführungsformen der vorliegenden Erfindung können in Kombination mit jeder beliebigen davon verwendet werden, um hochleistungsfähige Transaktionsspeicherprozesse bereitzustellen, ohne eine nennenswerte Zunahme der Hardware- bzw. Software-Komplexität zu verursachen. Eine beispielhafte Ausführungsform wird für die IBM PowerPC®-Architektur beschrieben, wobei jeder Fachmann denselben Ansatz auf jede beliebige andere Architektur wie die IBMzSeries®, IBM pSeries® mit den P3-, P4- bzw. P5-Prozessoren anwenden könnte, und sogar das IBM System 38 und dessen AS/400® die Unterstützung durch eine beispielhafte Ausführungsform der vorliegenden Erfindung nutzen können, sowie andere Rechnersysteme wie das Sun Microsystems SPARC® und die Intel® IA-32 usw. Jeder Fachmann könnte eine beispielhafte Ausführungsform zur Verwendung mit anderen Schnittstellen zur Anwendungsprogrammierung (APIs, application programming interfaces) ausdehnen, die für andere spezialisierte Versionen von Transaktionsspeicherausführungen erzeugt werden können.
  • Eine beispielhafte Ausführungsform der vorliegenden Erfindung verwendet ein oder mehrere, allen Speicherplatzen zugehörige Hardware-Bits und nicht nur diejenigen, die aktuell Teil einer aktiven Transaktion sind. Eine beispielhafte Ausführungsform verwendet das oder die zusätzlichen) Hardwarebits) zur Bereitstellung einer wesentlich schnelleren Ausführung von Transaktionen, als mit dem in dem '517 er-Patent beschriebenen Prozess erreichbar ist. Eine beispielhafte Ausführungsform verwendet eine Datenzwischenspeicherstruktur zum Speichern von alten Datenzuständen in Verbindung mit einer verbesserten Transaktionstabelle als Protokoll, um die Speicherauslastung zu optimieren, und stellt ein System bereit, das weniger Speicher verwendet, als durch andere Systeme wie dem in dem '517er-Patent beschriebenen verwendet würde, und noch eine weitere beispielhafte Ausführungsform kann für diese anderen Systeme entwickelte Anwendungen ausführen. Eine beispielhafte Ausführungsform stellt für jedes Speicher-Inkrement ein oder mehrere PTRAN-Bits bereit. In der aktuellen Ausführungsform wird kein indirektes Verfahren zum ”Lokalisieren” des PTRAN-Bit benötigt. Eine beispielhafte Ausführungsform stellt eine wesentlich schnellere Anzeige von möglichen Konflikten bereit, da es sich bei dem PTRAN-Bit um einen direkt ansprechbaren Teil des zu kennzeichnenden Speicherplatzes handelt. Eine beispielhafte Ausführungsform benötigt keine wie in dem '517er-Patent beschriebene Schnittstelle und erzielt seinen Vorteil durch Verwendung von Hardware und Firmware zum Aktualisieren und Zurücksetzen des PTRAN-Bit. Eine beispielhafte Ausführungsform benötigt keine Anwendungs-Software, um den Zustand des/der PTRAN-Bits) zu kennen, obwohl man eine direkte Schnittstelle bereitstellen kann, falls dies erwünscht ist. Eine beispielhafte Ausführungsform ist ebenfalls für eine kurze Festschreibungsverarbeitungszeit optimiert. Eine beispielhafte Ausführungsform erfordert keine Verwendung einer Versionsnummer für jeden Speicherplatz.
  • Ein Vorteil einer beispielhaften Ausführungsform besteht darin, dass sie eine „Transaktionstabelle” verwendet, die getrennt von den virtuellen Speicherseitentabellen des Systems ist. Hierdurch werden die Verarbeitung sehr großer Transaktionen ermöglicht und eine Konflikterkennung bis auf Einzel-Byte-Ebene bereitgestellt. Eine beispielhafte Ausführungsform weist keine Beschränkung der Anzahl von gleichzeitig ablaufenden Prozesssträngen auf, die gleichzeitig auf Speicherplätze in demselben virtuellen Speichersegment zugreifen können. Eine beispielhafte Ausführungsform führt die Konflikterkennung für physikalische Speicheradressen (bzw. reale Adressen) durch und beschränkt gleichzeitige Zugriffe nur mit der Granularität dieser Konflikterkennung. Diese Granularität kann für verschiedene Ausführungen beispielhafter Ausführungsformen unterschiedlich sein, aber üblicherweise die Größenordnung von Bytes aufweisen. Wenn das System von Chang und Mergen versucht, viele gleichzeitig abkaufende Prozessstränge zu verwenden, könnte dieses System keine gleichartigen Vorteile bereitstellen, ohne äußerst große virtuelle Seitentabellenformate zu verwenden und folglich eine Leistungseinbuße zu verursachen. Eine beispielhafte Ausführungsform der vorliegenden Erfindung verursacht diese Leistungseinbuße nicht. Ein weiterer Vorteil einer beispielhaften Ausführungsform besteht darin, dass spekulative Lade- und Speichervorgängen zugehörige alte Datenzustände in einer sich in dem Zwischenspeicher befindlichen Datenzwischenspeicherstruktur gespeichert werden, wodurch die für das Verlagern der alten Datenzustände in die Transaktionstabelle benötigte Bandbreite bzw. die dafür benötigten Taktzyklen eingespart werden. Wenn die Datenzwischenspeicherstruktur voll ist, werden die alten Datenzustände zur Unterstützung der Datenzwischenspeicherstruktur in der Transaktionstabelle gespeichert.
  • Wenden wir uns nun den Zeichnungen näher zu, so ist ersichtlich, dass es in 1 ein Rechnersystem gibt, das eine beispielhafte Ausführungsform der vorliegenden Erfindung veranschaulicht, die einen oder mehrere über ein Anschlusselement (110) mit einer physikalischen Speicheranordnung (120) verbundene Mikroprozessoren (100, 101, 102) aufweist. Die Mikroprozessoren (100, 101, 102) beinhalten einen Zwischenspeicher 104, und die Zwischenspeicher 104 beinhalten eine Zwischenspeicherstruktur 106 zum Speichern von den Transaktionen zugehörigen alten Datenzuständen. In einer beispielhaften Ausführungsform handelt es sich bei der Zwischenspeicherstruktur 106 um einen 32 Zeilen Zwischenspeicher enthaltenden Hardware-Puffer. Es können auch andere Zwischenspeicherstrukturen und eine andere Anzahl von Zeilen durch beispielhafte Ausführungsform realisiert und auf der Grundlage von Kriterien wie Anwendungs- und Systemanforderungen ausgewählt werden. Die physikalische Speicheranordnung speichert Transaktionsdaten (121) und PTRAN-Merkers (122), die jedem Inkrement realen Systemspeichers zugehörig sind. Das Anschlusselement (110) kann als gemeinsam genutzter Bus oder Kreuzschienenschalter ausgeführt sein. Eine beispielhafte Ausführungsform findet auch für Systeme Anwendung, die jedes beliebige andere Schema zum Anschluss von physikalischem Speicher an ein Mehrprozessorsystem anwendet, das auf einem oder mehreren Chips umgesetzt sein kann. Der Speicher könnte in kleinere Abschnitte eingeteilt und über private Verbindungen an jeden der Chips der Zentraleinheit (CPU) verteilt werden, wie es in einigen den POWER4®-Mikroprozessor verwendenden IBM Systemen bzw. in Amdahls auf AMD Opteron® beruhenden Servern der Fall ist. Die Mikroprozessoren und Speichersteuereinheiten können sich gemeinsam auf einem einzelnen Silizium-Chip befinden oder über mehrere Chips verteilt sein.
  • Der physikalische Speicher des Rechnersystems ist in n Inkremente eingeteilt. Für jedes der n Inkremente werden ein oder mehrere jedem Inkrement realen Systemspeichers zugehörige (PTRAN-)Bits bereitgestellt. Eine beispielhafte Ausführungsform gestattet die Wahl einer beliebigen Größe des Speicherinkrements, und die beste Wahl hängt von Arbeitslastkennwerten, Hardwarekosten sowie in dem Zielsystem verwendeten Datenzwischenspeicherstrukturen ab. In der veranschaulichten Ausführungsform wird ein Inkrement mit 16 Bytes verwendet. Das bzw. die PTRAN-Bit(s) werden zur Anzeige dessen verwendet, ob ein Dateneintrag in dem Speicher Teil des spekulativen Speicherzustands einer nicht abgeschlossenen Transaktion ist, die derzeit in dem System aktiv ist.
  • Spezielle neue Anweisungen (BEGINNE_AIG, BEENDE_AIG), wie durch die verschachtelte AIG-Code-Sequenz in 7 veranschaulicht, werden verwendet, um den Anfang bzw. das Ende einer Gruppe von Anweisungen zu kennzeichnen. Die zwischen den speziellen neuen Anweisungen ausgeführten Anweisungen werden „atomare Anweisungsgruppe” (AIG) genannt, wie durch in 7 gezeigte AIG-Anweisungen veranschaulicht wird (Anweisung A0, Anweisung A1, Anweisung A2). Wenn ein Prozessor Anweisungen ausführt, die Teil einer AIG sind, werden zusätzliche Zugriffsregeln angewendet. Alle durch die AIG-Gruppe von Anweisungen geänderten Speicherplätze werden in dem Speicher auf atomare Weise aktualisiert. Die Aktualisierungen der Speicherplätze werden „schwebend” gehalten, bis der Prozessor und/oder die Software-Anwendung anzeigen, dass sie „festzuschreiben” sind. Alle Aktualisierungen werden entweder unverzüglich in den „normalen” Speicher festgeschrieben oder verworfen. Die Ergebnisse werden verworfen, wenn eine Hardware und/oder Software einen Konflikt zwischen den Speicherzugriffen mehrerer gleichzeitig in dem Mehrprozessorsystem ausgeführter AIGs erkennt. Eine beispielhafte Ausführungsform stellt eine Möglichkeit für die Hardware bereit, mögliche Konflikte zwischen den Speicherzugriffen mehrerer AIGs schnell zu erkennen. Obwohl eine beispielhafte Ausführungsform zur Kennzeichnung der Grenzen einer Transaktion spezielle neue Anweisungen verwendet, könnte jedes beliebige andere Verfahren zur Kennzeichnung einer Gruppe von auf atomare Art zu aktualisierenden Speicherplätzen verwendet werden. Eine beispielhafte Ausführungsform ist kompatibel mit jeder beliebigen Anzahl von Software-Schnittstellen, die zur Umsetzung eines Transaktionsspeichersystems verwendet werden kann. Eine beispielhafte Ausführungsform kann für jedes beliebige System, das versucht, eine atomare Aktualisierung mehrerer Speicherplätze bereitzustellen, dieselbe schnelle Konflikterkennung bereitstellen. Eine beispielhafte Ausführungsform findet auch für Systeme Anwendung, welche die Grenzen einer Anweisungsgruppe auf jede beliebige andere Art kennzeichnet, darunter durch einen Kompilierer erzeugte, an anderen Anweisungen angebrachte Hinweise oder interne, durch internen Mikrocode bzw. Millicode erzeugte Mikroprozessorbefehle.
  • Bei einem PTRAN-Merker (122) handelt es sich um ein oder mehrere einem Inkrement in dem Speicher zugehörige Bits, das für sämtliche durch Anweisungen, die Teil einer AIG sind, verursachte Speicherzugriffe gesetzt wird. Ein Prozessor prüft das Bit vor dem Versuch, es zu setzen; dadurch wird die schnelle Erkennung von möglichen Konflikten mit anderen, gleichzeitig in anderen Prozesssträngen ausgeführten AIGs ermöglicht. Das Setzen des Bit kann durch einen Arbeitsschritt „Prüfen und Setzen” (TS, „test and set”) der IBM z/Architektur oder jeden beliebigen anderen gleichwertigen Arbeitsschritt erreicht werden, der eine atomare Aktualisierung in einem mehrere Prozessstränge gleichzeitig ausführenden System bzw. einem Mehrprozessorsystem ermöglicht.
  • Wenden wir uns nun 2 zu, so ist ersichtlich, dass Transaktionstabellen (230, 231) als Teil des realen Systemspeichers (220) (hierin auch „Hauptspeicher” genannt) erzeugt werden, der hier als physikalischer Speicher (120) dargestellt ist. Die Transaktionstabellen (230, 231) könnten ebenfalls in logischen oder virtuellen Speichern erzeugt werden. Es kann jedes System zum Abbilden des logischen Systemspeichers auf den physikalischen Systemspeicher verwendet werden, und es sind zahlreiche Beispiele im Fachgebiet bekannt, die verwendet werden können wie die in der IBM zSeries, IBM pSeries, Sun Microsystems SPARC, Intels IA-32 usw. Ein Eintrag wird in die Transaktionstabelle vorgenommen, wenn Anweisungen, die Teil einer AIG sind, zur Prüfung bzw. Aktualisierung eines Speicherplatzes führen. Eine Prozessstrangkennung (203, 213) ist jeder Transaktionstabelle (230, 231) zugehörig. Ein nächstes Eintragsregister (202, 212) wird als Index in der Transaktionstabelle (230, 231) verwendet und zeigt an, welcher Eintrag als Nächstes zu schreiben ist. Ein Tabellenursprung (201, 211) zeigt die Adresse des ersten Eintrags in der Transaktionstabelle (230, 231) für dessen Prozessstrang (203, 213) an. Die Transaktionstabelle (230, 231) wird dazu verwendet, Zusatzinformationen über die einfachen Informationen hinaus zu speichern, die dem/den PTRAN-Merker-Bit(s) zugehörig sind, die dem geprüften bzw. aktualisierten Speicherplatz zugehörig sind. Diese Zusatzinformationen beziehen sich auf den einer AIG zugehörigen spekulativen Zustand. In einer veranschaulichten, hierin beschriebenen Ausführungsform einer IBM zSeries bzw. pSeries CPU (100, 101, 102) wird ein einzelnes PTRAN-Bit verwendet. In diesem Fall enthält die Kombination aus Transaktionstabelle (230, 231)) und Zwischenspeicherstruktur (106) sämtliche Zusatzinformationen über den spekulativen Zustand (z. B. enthält die Kombination Einträge in einer aktiven AIG-Betriebsart), weshalb das PTRAN-Bit lediglich anzeigt, dass eine physikalische Adresse mit einer AIG einhergeht. Dies ist für die Transaktionstabelle A (230) als Adresse (240), Transaktionsinformationskennung (241) sowie alte bzw. neue Daten (242) dargestellt. Wie hierin beschrieben, enthält die Transaktionstabelle A (230) nur dann die alten Daten, wenn die Zwischenspeicherstruktur (106) die alten Daten nicht speichern kann. Dies kann geschehen, wenn die Zwischenspeicherstruktur (106) voll wird. Auf diese Weise wird die Transaktionstabelle A (230) zur Unterstützung der Zwischenspeicherstruktur (106) zum Speichern der alten Datenzustände verwendet. Andere Ausführungsformen können zusätzliche PTRAN-Bits verwenden, die von Hardware bzw. Software dazu verwendet werden können, die Verarbeitung bestimmter Ereignisse zu beschleunigen, die mit der Verarbeitung von AIGs bzw. den spekulativen Zuständen eines beliebigen anderen Transaktionsspeichersystems einhergehen. Die Kombination aus der Verwendung lediglich eines einzelnen Bit in dem Speicher und der Verknüpfung dieses Bit mit einer vollständigeren Beschreibung der Transaktionszustände in den Transaktionstabellen in Kombination mit der Zwischenspeicherstruktur stellt ein Transaktionsspeichersystem bereit, das einen äußerst geringen Hardware-Verwaltungsaufwand erfordert, ohne die von Software-Transaktionsspeichersystemen nach dem Stand der Technik bekannten Leistungseinbußen zu verursachen.
  • Wenden wir uns erneut 2 zu, so ist ersichtlich, dass ein Eintrag zum Beispiel in der Transaktionstabelle A (230) die in einer AIG geprüfte bzw. aktualisierte Adresse (240), ein Transaktionsinformationsfeld (241) und ein Datenfeld (242) enthält. Eine Speichervorgangsanweisung, die Teil einer AIG ist, führt dazu, dass das System die „alten” Datenwerte und den alten Datenzustand für diese Adresse von dem ursprünglichen Speicherplatz in die Zwischenspeicherstruktur (106) kopiert, und die neuen spekulativen Daten werden in dem Hauptspeicherplatz (z. B. dem physikalischen Speicher (120)) gespeichert. Wenn die Zwischenspeicherstruktur (106) den alten Datenzustand nicht speichern kann, wird er in der Transaktionstabelle in dem Datenfeld (242) gespeichert.
  • Eine beispielhafte Ausführungsform kann dazu gebracht werden, die in der Zwischenspeicherstruktur (106) gespeicherten neuen Werten zu verwenden, falls dies gewünscht ist. Das Speichern der alten Datenwerte in die Zwischenspeicherstruktur (106) ermöglicht es, das System für den Fall zu optimieren, wenn die meisten Transaktionen erfolgreich sind. Die alten Daten können schnell verworfen werden, wenn sie nicht mehr benötigt werden bzw. wenn eine Transaktion dauerhaft in den Speicher festgeschrieben wird, indem die Hinweisadresse der Zwischenspeicherstruktur (106) geändert wird oder indem die Inhalte der Zwischenspeicherstruktur (106) gelöscht werden. Das Transaktionsinformationsfeld 241 eines Transaktionstabelleneintrags enthält jede Transaktionsinformation, die zum Treffen von ausführlichen Entscheidungen über den Bedarf, einen Transaktionsfehler zu verursachen, benötigt wird. Es weist ebenfalls Bestimmungen für Zusatzinformationen auf, um eine wirksame Unterstützung von verschachtelten Transaktionen, virtualisierten Transaktionen oder anderen Erweiterungen der Transaktionsspeicherarchitektur zu ermöglichen. In einer beispielhaften Ausführungsform enthält das Transaktionsinformationsfeld (241) einen Hinweis darauf, ob es sich bei dem Speicherzugriff der zugehörigen Adresse (240) um einen ladeartigen Zugriff oder einen speicherartigen Zugriff gehandelt hat. Das Transaktionsinformationsfeld (241) kann auch anzeigen, ob die Adresse von mehreren AIGs in dem System gemeinsam genutzt wird.
  • 3 zeigt einen Ladevorgangsverarbeitungs-Ablaufplan für die Aktionen des Verfolgens eines spekulativen Zustands unter Verwendung des PTRAN-Bit und der Transaktionstabellen. Wenn ein Prozessor einen ladeartigen Zugriff versucht, wird zunächst eine Entscheidung (310) getroffen, um festzustellen, ob die Ladezugriffsadresse Teil einer AIG ist und ob die besonderen Speicherzugriffsregeln für AIG-Zugriffe Anwendung finden. Falls nicht, findet die normale Verarbeitung Anwendung, und es folgt der Arbeitsschritt einer normalen Ladevorgangsverarbeitung (320). Ob es sich bei einem ladeartigen Zugriff um einen Teil einer AIG handelt, kann in dem Entscheidungsprozessschritt (310) auf viele verschiedene Arten festgestellt werden. In der Prozessor-Pipeline bzw. in Lade-/Speicherungs-Einheiten kann ein Betriebsart-Bit gesetzt werden, um anzuzeigen, dass eine besondere AIG-Betriebsart aktiv ist. Die Betriebsart kann Teil des physikalischen Zustands des Prozessors oder des logischen Zustands eines virtuellen Prozessors sein. Falls die besondere Betriebsart nicht aktiv ist, wird der Ladevorgang als normaler Ladevorgang behandelt (320).
  • Ein „Außerkraftsetzen” dieser „aktiven AIG-Betriebsart” kann bereitgestellt werden. Das Außerkraftsetzen könnte dem logischen Speichersegment bzw. der logischen Speicherseite zugehörig sein, welche die Zieladresse enthält. Ein Außerkraftsetzen zwingt das System dazu, die Speicheranfrage normal zu behandeln, obwohl die Anfrage Teil einer AIG ist. Wenn das Außerkraftsetzen aktiv ist, führt das Ergebnis der Entscheidung (310) zur Ausführung einer normalen Verarbeitung (320). Angenommen, eine AIG ist aktiv und das Außerkraftsetzen ist inaktiv, dann wird das zugehörige PTRAN-Bit in einem Überprüfungsschritt (330) überprüft. Eine Ladeanweisung innerhalb einer AIG erkennt den Zustand des PTRAN-Bit bei der Überprüfung. Wenn das PTRAN-Bit bereits gesetzt ist (330), liegt der Grund möglicherweise in Aktionen eines anderen Prozessstrangs, der auf demselben Prozessor oder einem anderen Prozessor ausgeführt wird. Wenn in dem Überprüfungsschritt 330 herausgefunden wird, dass das PTRAN-Bit nicht gesetzt ist (340), setzt der Prozessor das PTRAN-Bit und notiert den Zugriff in der Transaktionstabelle (230) für die aktive AIG durch Hinzufügen zu der Transaktionstabelle in dem Block „Setze PTRAN” (340), und dann kann das Ausführen des Ladevorgangs fortgesetzt werden (360). Falls das PTRAN-Bit bereits gesetzt ist, wird die diesen möglichen Konflikt verursachende Adresse mit den bereits in der Transaktionstabelle des Prozessors eingetragenen Adressen verglichen. Wenn das PTRAN-Bit bei Prüfung in dem Überprüfungsblock (330) durch einen anderen Ladevorgang bereits früher in derselben AIG gesetzt wurde, ist es bereits Teil der AIG, wie geprüft und festgestellt wurde (350), und dann kann das Ausführen des Ladevorgangs fortgesetzt werden (360). Jede Transaktionstabelle (230, 231) enthält die Adressen für eine bestimmte AIG. Gleichermaßen enthält die Zwischenspeicherstruktur (106) in einer beispielhaften Ausführungsform alte Datenzustände für eine bestimmte AIG. In einer beispielhaften Ausführungsform entspricht jede Zwischenspeicherstruktur (106) einer Transaktionstabelle, und derselbe Index wird zum Speichern der alten Datenzustände und der Steuerungsinformationen verwendet, die jeder in der AIG verfolgten Anweisung zugehörig sind. Entsprechend wird die Adresse für den Ladevorgang nicht in der Transaktionstabelle des Prozessors gefunden, wenn die Adresse noch nicht Teil der AIG war, wie geprüft und festgestellt wurde (350), und der Prozessor überprüft in einem Feststellungsschritt für gemeinsame Nutzung durch mehrere AIGs (370), ob die Adresse für die gemeinsame Nutzung durch mehrere AIGs freigegeben ist. Wenn die Adresse aktuell nicht für die gemeinsame Nutzung durch mehrere AIGs freigegeben ist, kann der Prozessor während des Feststellungsschritts, ob eine gemeinsame Nutzung durch mehrere AIGs gestattet ist (370), anderen Prozessoren in dem System signalisieren, einen „gemeinsamen AIG-Zugriff” für diese Adresse anzufordern. Ein gemeinsamer Zugriff kann gewährt werden, wenn keine andere AIG in dem System spekulativ in den Speicherplatz geschrieben hat. Wenn kein gemeinsamer Zugriff gewährt wird, schlägt die AIG fehl (380), andernfalls (390) werden die Ladevorgangsadresse zu der Transaktionstabelle (230) hinzugefügt und das Transaktionsinformationsfeld (241) aktualisiert, um anzuzeigen, dass es sich bei der Adresse um einen Ladevorgangszugriff handelt, der von mehreren AIGs in dem System gemeinsam genutzt wird.
  • Der Speichervorgangsverarbeitungs-Ablaufplan in 4 zeigt die Aktionen des Verarbeitens eines Speichervorgangs, der Teil einer AIG ist. Wenn ein Prozessor einen speicherungsartigen Zugriff versucht, wird zunächst eine Speichervorgangsentscheidung (400) getroffen, um festzustellen, ob der Zugriff Teil einer AIG ist und ob die besonderen Speicherzugriffsregeln für AIG-Zugriffe Anwendung finden. Die Betriebsart des Prozessors wird durch ein gleichartiges Verfahren überprüft wie vorher für Ladevorgangszugriffe beschrieben. Wenn die besondere Betriebsart, unter der die besonderen Zugriffsregeln für AIG Anwendung finden, nicht aktiv ist, wird der Speichervorgang als normaler Speichervorgang behandelt (440). Angenommen, eine AIG ist aktiv, dann wird das zugehörige PTRAN-Bit in dem Speichervorgangsprozess-Überprüfungsblock überprüft (410). Wenn das PTRAN-Bit noch nicht gesetzt ist, werden das PTRAN-Bit in dem Speichervorgangs-Transaktionsschritt gesetzt (450) und der Transaktionstabelle (230) ein neuer Eintrag hinzugefügt. Die „alten Daten” werden in die Zwischenspeicherstruktur (106) verlagert, die Adresse wird in den neuen Eintrag (240) geschrieben, und das Transaktionsinformationsfeld (241) wird aktualisiert. Wie nachfolgend in Bezug auf 9 beschrieben, wird der alte Datenzustand in dem Datenfeld (242) der Transaktionstabelle gespeichert, wenn die Zwischenspeicherstruktur (106) nicht in der Lage ist, den alten Datenzustand zu speichern. Das Transaktionsinformationsfeld (241) wird gekennzeichnet, um anzuzeigen, dass der diesem Eintrag zugehörige Zugriff ein speicherungsartiger Zugriff war. Die neuen Speichervorgangsdaten werden nach Abschluss des Setzens des PTRAN-Bit in den Speicher geschrieben. Wenn die Überprüfung des PTRAN-Bit (410) ergibt, dass das Bit bereits gesetzt war, wird eine Entscheidung (420) auf der Grundlage der Frage getroffen, ob die aktuelle Speichervorgangsadresse bereits Teil einer auf dem Prozessor aktiven AIG ist. Die Transaktionstabelle (230) für den Prozessor wird untersucht, und wenn festgestellt wird, dass die Adresse in der Transaktionstabelle existiert, wird das Transaktionsinformationsfeld (241) für den Eintrag überprüft, und es wird eine Entscheidung über einen Eintrag bezüglich gemeinsamen Zugriffs (460). Wenn das Transaktionsinformationsfeld (241) anzeigt, dass es sich bei dem Eintrag um einen Eintrag bezüglich ladeartigen Zugriffs handelt, der von mehreren AIGs geteilt wird, schlägt die Transaktion fehl (430), während andernfalls das Transaktionsinformationsfeld (241) für den zugehörigen Eintrag aktualisiert wird, um einen speicherungsartigen Zugriff anzuzeigen, und die Speicherung wird verarbeitet (470).
  • Wenden wir uns nun dem Festschreibungs-Ablaufplan in 5 zu, so ist ersichtlich, dass eine beispielhafte Ausführungsform eine Reihe von Aktionen enthält, die ausgeführt werden, nachdem die letzte Anweisung in einer AIG verarbeitet wurde und die gesamte Gruppe bereit ist, dauerhaft in den Speicher „festgeschrieben” zu werden, wie anfangs in einem Prüfschritt (500) festgelegt wurde. Andernfalls fährt die Verarbeitung in der AIG-Betriebsart fort (550). Eine AIG wird in den Speicher festgeschrieben, wenn die Verarbeitung der Lade- und Speichervorgänge der AIG gemäß der Ablaufpläne aus 3 und 4 nicht zu einem Fehlschlagen einer Transaktion führt. Im Falle eines Erfolgs der AIG stellt die Überprüfung (500) fest, dass die letzte Anweisung in einer AIG verarbeitet wurde, und die gesamte Gruppe ist bereit dafür, dauerhaft in den Speicher „festgeschrieben” zu werden. Dann werden die Transaktionstabelle untersucht (510, 520) und jeder Eintrag für die festzuschreibende AIG gelesen und deren zugehöriges PTRAN-Bit in dem Speicher während des Feststellens des Transaktionstabellen-Festschreibschritts (530) zurückgesetzt.
  • Eine spezialisierte Hardware-Maschine (hardware engine) kann zum Durchführen dieses Festschreibungsvorgangs verwendet werden. Eine Kombination aus Prozessorzwischenspeichern, Mehrprozessor-Kohärenz-Aktionen und einer beispielhaften Ausführungsform kann verwendet werden, um Software mit der Illusion bereitzustellen, dass alle Speicheraktualisierungen für eine einzelne AIG gleichzeitig stattfinden, auch wenn die Hauptspeicheranordnungen nicht gleichzeitig aktualisiert werden. Während der Festschreibungsverarbeitung wird mit dem Rücksetzen der PTRAN-Bits so lange, fortgefahren, bis festgestellt wurde, dass der letzte gültige Eintrag in der Transaktionstabelle erreicht wurde (530). An diesem Punkt wird die AIG als festgeschrieben angesehen, und die Ausführung durch die Maschine wird deshalb abgeschlossen (540).
  • Einige Zustände verhindern den Abschluss einer AIG. Diese Zustände können während der Ladevorgangsverarbeitung während der Ausführung einer AIG erkannt werden (380) bzw. während der Speichervorgangsverarbeitung während der Ausführung einer AIG (430). Es gibt viele andere mögliche Prozessorzustände, die zum Abbruch der Verarbeitung einer AIG führen können.
  • Zu diesen gehören in dem System erkannte Fehlerzustände sowie andere Zustände, deren korrekte Verarbeitung durch einen Prozessor erhebliche zusätzliche Unterstützung durch Hardware erfordern würde. Viele Transaktionsspeicherarchitekturen nach dem Stand der Technik enthalten Regeln zum Abbrechen von Transaktionen und für eine anschließende Wiederholung. Software-Konstrukte nach dem Stand der Technik können zusammen mit einer beispielhaften Ausführungsform verwendet werden, um die Notwendigkeit zu beseitigen, für das Umgehen mit allen möglichen Sonderfällen Hardware bereitstellen zu müssen. Ein einfaches Beispiel ist der Fall einer Unterbrechung eines Zeitgebers mitten in der Verarbeitung einer AIG. Die Unterbrechung kann dazu führen, dass der Prozessor viel Zeit damit verbringt, Code zu verarbeiten, der nicht Teil der teilweise ausgeführten AIG ist. Es mag nicht wünschenswert sein, dass der Prozessor die AIG während dieser Zeit aktiv hält. Das System kann bei Auftreten einer Unterbrechung eines Zeitgebers einen Transaktionsfehlschlag für jede beliebige aktuell ausgeführte AIG erzwingen. Ein gleichartiger Ansatz kann für jedes beliebige andere Sonderfallereignis angewendet werden, das in dem Prozessor auftritt.
  • Transaktionsfehlschläge bzw. erzwungene Wiederholungen werden gemäß dem Prozess aus dem in 6 gezeigten Rückabwicklungsverarbeitungs-Ablaufplan für das Verarbeiten von „Rückabwicklungsvorgängen” bearbeitet. Wenden wir uns nun 6 zu, so ist ersichtlich, dass das Nichtvorhandensein eines Transaktionsfehlschlagzustands (600) es dem Prozessor gestattet, in der aktiven AIG-Betriebsart fortzufahren (650). Eine beispielhafte Ausführungsform wendet eine „eifrige” Richtlinie in Bezug auf das Erkennen von Transaktionsfehlschlägen und das Auslösen von Transaktions-Rückabwicklungsvorgängen an. Ebenso kann eine beispielhafte Ausführungsform in Systemen eingesetzt werden, die bis zum Ende einer Transaktion warten, bevor sie die für einen Rückabwicklungsvorgang benötigten Aktionen durchführen. Die als Teil einer AIG ausgeführten Speicheraktualisierungen werden entweder gleichzeitig in den normalen Hauptspeicher festgeschrieben (5) oder in einem „Rückabwicklungsvorgangs”-Arbeitsschritt verworfen (620 bis 640).
  • Bei Vorfinden eines Fehlers auf Grund eines Transaktionsfehlschlagzustands (600) werden mehrere Zusatzschritte benötigt (610, 620). Schritte zum Rückabwickeln der Einträge aus der Verarbeitung der Transaktionstabelle sorgen dafür, dass die Transaktionstabelle (230) und die Zwischenspeicherstruktur (106) für die AIG untersucht werden und sämtliche alte Daten (bzw. alte Datenzustände) zurück in die in dem Eintrag angezeigte Hauptspeicheradresse (240) geschrieben werden. Das PTRAN-Bit für die zugehörige Adresse wird zurückgesetzt. Die Rückabwicklungsverarbeitung (620) wird fortgeführt, bis der letzte gültige Eintrag in der Tabelle verarbeitet wurde (630). Nach Verarbeitung des letzten gültigen Eintrags ist der Rückabwicklungsvorgang abgeschlossen (640). Die an diesem Punkt von dem Prozessor durchgeführten Aktionen unterscheiden sich beruhend auf verschiedenen Software-Architekturen für Transaktionsspeicher. Es kann jede in den Grundlagen beschriebene Transaktionsspeicherarchitektur verwendet werden. In einigen Fällen wird die Durchführung der AIG von Anfang an wiederholt. In anderen Fällen werden besondere Software-Steuerungsprogramme aufgerufen, um mit dem Transaktionsfehlschlag umzugehen. Eine beispielhafte Ausführungsform kann mit jeder dieser verschiedenen Architekturen verwendet werden.
  • Eine beispielhafte Ausführungsform unterstützt die Ausführung von „verschachtelten” Transaktionen. Wie in 7 gezeigt, kann eine zweite AIG innerhalb des Umfangs der ersten AIG enthalten sein. Jede Anweisung der Sonderanweisung BEGINNE_AIG (7) führt dazu, dass das System eine Transaktionstabelle (230) erzeugt und der AIG die Tabelle zuordnet. Entscheidungen darüber, ob eine Speicheradresse zu einer AIG gehört (350), können die innere AIG (A) oder eine Kombination aus innerer und äußerer AIG (A & B) beinhalten. Die Anweisung der Sonderanweisung END-AIG (7) beendet die Transaktionssequenz, wobei jedoch wie gezeigt eine Sequenz für eine spezifische Transaktion (Transaktion B) innerhalb einer anderen Sequenz (Transaktion A) verschachtelt sein kann. Die Verwendung mehrerer Transaktionstabellen (230) kann dazu eingesetzt werden, viele verschachtelte Architekturen für Transaktionsspeicher zu unterstützen. Mehrere Versionen der „alten Daten” bzw. der alten Datenzustände können in einer beliebigen Anzahl von Zwischenspeicherstrukturen (106) bzw. Transaktionstabellen (230) in jeder beliebigen Verschachtelungstiefe gespeichert werden. Transaktionsspeichersysteme nach dem Stand der Technik, die davon abhängen, dass Datenzwischenspeicher spekulative Zustände speichern, sind nicht in der Lage, eine gleichartige Unterstützung für verschachtelte Transaktionen bereitzustellen, ohne den Zwischenspeicherverzeichnissen zusätzliche Zustandsinformationen hinzuzufügen und ohne dem Zwischenspeicher-Kohärenz-Protokoll zusätzliche Komplexität hinzuzufügen. Die Unterstützung von Verschachtelungen in Systemen nach dem Stand der Technik würde die Hardware-Komplexität für diese Ausführungsformen erheblich erhöhen. Eine beispielhafte Ausführungsform kann auch so erweitert werden, dass sie eine kombinierte Transaktionstabellen-/Zwischenspeicherstruktur enthält, die Einträge sowohl aus der inneren AIG (Anweisung B0, Anweisung B1) als auch aus der äußeren AIG (Anweisung A0, Anweisung A1, Anweisung A2) beinhaltet. Diese kombinierte Transaktionstabellen-/Zwischenspeicherstruktur kann an Stelle der einzelnen Transaktionstabellen bzw. Zwischenspeicherstrukturen oder zusätzlich zu den einzelnen Transaktionstabellen bzw. Zwischenspeicherstrukturen verwendet werden.
  • Es gibt viele zusätzliche Hardware-Eigenschaften, die beispielhaften Ausführungsformen hinzugefügt werden können, um die Verarbeitung der Bearbeitung der Transaktionstabellen sowie des Setzens und Zurücksetzens des/der PTRAN-Bit(s) zu beschleunigen. Da das PTRAN-Bit Teil der Hauptspeicherdaten ist, kann es in den normalen Datenzwischenspeichern des Systems zwischengespeichert werden. Die Transaktionstabellen sind ebenfalls Teil des Hauptspeichers und können auch zwischengespeichert werden. Der Begriff „Hauptspeicher”, wie er hierin verwendet wird, bezieht sich auf eine Anordnung von DRAM-Speicher-Chips. Zusätzliche Steuerungsinformationen können den Datenzwischenspeichern hinzugefügt werden, um anzuzeigen, ob eine spezifische Adresse für einen „gemeinsamen AIG-Zugriff” freigegeben wurde, wodurch es in einigen Fällen nicht mehr nötig ist, die Transaktionstabelle zu durchsuchen.
  • Die Funktionen oben beschriebener beispielhafter Ausführungsformen der vorliegenden Erfindung können als Software, Firmware oder Hardware, nebst einer Kombination aus Software und Firmware realisiert werden.
  • 8 zeigt den Ablauf des Decodierens und des Ausführens von Anweisungen in einem Rechnersystem, das eine beispielhafte Ausführungsform verwendet. Eine beispielhafte Ausführungsform verwendet eine Anweisung BEGINNE_AIG, um den Anfang einer AIG anzuzeigen, und eine Anweisung BEENDE_AIG, um das Ende einer AIG anzuzeigen. Es kann jedes beliebige andere geeignete Verfahren zum Kennzeichnen des Anfangs bzw. Endes einer Gruppe von Anweisungen verwendet werden. Die Anweisungen bzw. Kennzeichnungen können von Programmierern in einer höheren Programmiersprache explizit in den Code eingefügt oder durch Kompilierer bzw. Übersetzungsprogramme als Umsetzung von höheren Sperrfunktionen hinzugefügt werden. Die Anweisungen bzw. Kennzeichnungen können durch einen Bibliotheksfunktionsaufruf hinzugefügt werden oder in einem speziellen Ereignis in einer Laufzeitumgebung enthalten sein. Die Anweisungen bzw. Kennzeichnungen können durch Firmware oder Hardware bzw. einer Kombination daraus als Reaktion auf das Decodieren einer bestimmten Folge von Anweisungen oder das Empfangen eines speziellen Befehls zum Eintreten in eine neue Ausführungsbetriebsart erzeugt werden.
  • Eine beispielhafte Ausführungsform kennzeichnet den Anfang einer AIG nach dem Decodieren einer Anweisung (800). Wenn festgestellt wird, dass eine Anweisung BEGINNE_AIG decodiert wurde (805), tritt der Prozessor in eine neue Ausführungsbetriebsart, der AIG-BETRIEBSART, ein (815), während die Anweisung andernfalls normal ausgeführt wird (810) und die Verarbeitung mit der nächsten Anweisung fortfährt (800).
  • Vor dem Eintritt in die AIG-BETRIEBSART wird der zweckgestaltete (architected) Zustand des Prozessors auf dieselbe Art gespeichert, wie ein üblicher Programmaufruf in der IBM Z-Series-Architektur bearbeitet wird. Es kann jeder gleichartige Zustandsspeicherungsmechanismus für jede andere Prozessorarchitektur angewendet werden. Der Prozessor kann direkt in diesen gespeicherten Zustand zurückkehren, falls die AIG fehlschlägt, oder er kann nach Aufruf einer Reihe von anderen Fehlerbearbeitungsroutinen in diesen Zustand zurückkehren. In der AIG-BETRIEBSART läuft das Decodieren von Anweisungen weiter (820). Wenn ein Lade- bzw. Speichervorgang decodiert wird (825), wird eine spezielle Bearbeitung dieser Lade- bzw. Speichervorgänge benötigt (840). Die für das Verarbeiten eines Ladevorgangs innerhalb einer AIG benötigten Schritte sind in 3 beschrieben, und die für einen Speichervorgang innerhalb einer AIG sind in 4 beschrieben. Nach dem Verarbeiten von Lade- bzw. Speichervorgängen in einer AIG wird festgestellt (850), ob es einen wie in den Beschreibungen der 3 und 4 beschriebenen AIG-Fehlschlag gab. Wenn es einen Fehlschlag gibt, werden spezielle Steuerungsprogramme aufgerufen (860). Die Aktionen der speziellen Steuerungsprogramme für Transaktionsfehlschläge können je nach der Architektur des die beispielhafte Ausführungsform verwendenden Systems variieren. Viele Verfahren zum Behandeln von Transaktionsfehlschlägen wurden nach dem Stand der Technik beschrieben, und jede von diesen könnte für diesen Zweck verwendet werden. Die möglichen Verfahren beinhalten das Wiederholen der Transaktion von Anfang an, bis eine festgelegte Anzahl von Versuchen erreicht wird, das Warten auf eine Änderung des den Fehlschlag verursachenden Zustands, das Aufrufen spezialisierter Software-Routinen zum Lösen von Konflikten zwischen Prozesssträngen usw. Diese möglichen Fehlschlagsteuerungsprogramme können ein Rückabwickeln der den Fehlschlag verursachenden AIG erfordern (860). Wenn kein Fehlschlag festgestellt wurde, wird ermittelt, ob der Lade- bzw. Speichervorgang die letzte Anweisung der AIG war (855). Wenn es sich bei der Anweisung um die letzte Anweisung in der AIG handelt, wird die AIG unter Verwendung des in 5 beschriebenen Prozesses festgeschrieben (865). Der Prozessor beendet dann die AIG-Betriebsart und fährt mit der nächsten sequenziellen Anweisung nach der AIG fort (800).
  • Das Decodieren von Anweisungen, die keine Lade- bzw. Speichervorgange innerhalb einer AIG betreffen, erfordert nicht unbedingt eine spezielle Verarbeitung (830). Wenn es sich bei der Anweisung um keine lade- bzw. speicherungsartige Anweisung handelt, wird festgestellt, ob es sich bei der Anweisung um eine andere BEGINNE_AIG handelt (830). Verschachtelte AIG-Anweisungen erfordern eine spezielle Bearbeitung (835). Der Stand der Technik kennt viele verschiedene Wege zum Bearbeiten von verschachtelten Transaktionen. Eine beispielhafte Ausführungsform kann dazu verwendet werden, jede beliebige von diesen zu unterstützen. Das Steuerungsprogramm für verschachtelte AIGs in einer beispielhaften Ausführungsform fügt die Anweisungen der „inneren” AIG der „äußeren” AIG hinzu und erzeugt so eine größere einzelne AIG. Andere Ausführungsformen der Erfindung können verschiedene Verarbeitungsregeln für Lade- bzw. Speichervorgänge bereitstellen, die Teil einer inneren verschachtelten Transaktion sind, sowie spezielle Regeln für das Festschreiben und das Handhaben von Fehlschlägen von inneren verschachtelten Transaktionen. Wenn festgestellt wird, dass die Anweisung keine BEGINNE_AIG ist, wird die Anweisung ausgeführt (845) und als Nächstes festgestellt (855), ob es sich bei der Anweisung um die letzte Anweisung der AIG handelt. Die bevorzugte Ausführungsform verwendet das Decodieren einer Anweisung BEENDE_AIG, um anzuzeigen, dass die letzte Anweisung einer AIG erreicht wurde. Wenn die letzte Anweisung der AIG erreicht wurde, wird die AIG in den Speicher festgeschrieben und der Prozessor beendet die AIG-BETRIEBSART (865).
  • 9 veranschaulicht einen Speichervorgangs-Ablaufplan für alte Datenzustände, der durch eine beispielhafte Ausführungsform umgesetzt werden kann. Bei Block 902 wird eine Anfrage erhalten (z. B. von Block 450 in 4), einen alten, einer AIG zugehörigen Datenzustand in die Zwischenspeicherstruktur (106) zu schreiben.
  • Wie bereits beschrieben, befindet sich die Zwischenspeicherstruktur (106) in dem Zwischenspeicher (104); dies sorgt für einen schnellen Datenzugriff beim Schreiben und Lesen der alten Datenzustände. In einer beispielhaften Ausführungsform handelt es sich bei der Zwischenspeicherstruktur (106) um einen Hardware-Puffer, wobei durch beispielhafte Ausführungsformen jedoch auch andere Software- und/oder Hardware-Ausführungen realisiert werden können. In einer beispielhaften Ausführungsform entspricht ein Hardware-Puffer einer Transaktionstabelle (230, 231), und für jede Transaktionstabelle (230, 231) ist ein (logischer oder physikalischer) Puffer realisiert. In dieser Ausführungsform kann das nächste Eintragsregister für die Transaktionstabelle (230, 231) durch die entsprechenden Puffer zum Speichern (und Abrufen) der alten Datenzustände verwendet werden. In einer anderen beispielhaften Ausführungsform wird ein Puffer von mehreren Transaktionstabellen (230, 231) zum Speichern der alten Datenzustände verwendet. In dieser Ausführungsform werden ein separater Index für den Puffer sowie eine Korrelation zwischen alten Datenzuständen und Adressen in einer Transaktionstabelle (230, 231) gepflegt.
  • Bei Block 904 wird festgestellt, ob der alte Datenzustand in dem Puffer gespeichert werden kann. In der in 9 abgebildeten Ausführungsform kann der alte Datenzustand nicht in dem Puffer gespeichert werden, wenn der Puffer voll ist. In einer beispielhaften Ausführungsform wird ein Bit in der Steuerungsstruktur des Zwischenspeichers dazu verwendet, anzuzeigen, dass der Puffer voll ist. Wenn der Puffer voll ist, wird Block 908 ausgeführt, und der alte Datenzustand wird an der Stelle in die Transaktionstabelle geschrieben, die durch das nächste Eintragsregister (202, 212) angezeigt wird (d. h. dieselbe Zeile in der Transaktionstabelle wie die entsprechende Adresse). In der Überschrift der Transaktionstabelle wird ein Bit gesetzt, um anzuzeigen, dass sich der alte Datenzustand in der Transaktionstabelle befindet.
  • Wenn der Puffer nicht voll ist, wie in Block 904 festgestellt, wird mit der Verarbeitung bei Block 906 fortgefahren. Bei Block 906 wird der alte Datenzustand in den Puffer geschrieben.
  • In der in 9 abgebildeten Ausführungsform weist jede Transaktionstabelle einen entsprechenden Puffer auf, und der alte Datenzustand wird an der Stelle in den Puffer geschrieben, die durch das nächste Eintragsregister (202, 212) angezeigt wird. In der Transaktionstabelle wird ein Bit gesetzt, um anzuzeigen, ob sich der alte Datenzustand in dem Puffer oder dem Datenfeld 242 der Transaktionstabelle befindet.
  • Technische Auswirkungen und Vorteile beinhalten ein Hochgeschwindigkeits-Transaktionsspeichersystem mit wesentlich weniger Verwaltungsaufwand als bestehende Systeme. Außerdem werden Bandbreitenanforderungen und Verarbeitungszeiten durch Bereitstellung eines Zwischenspeicherplatzes zum Speichern von alten, spekulativen Lade- bzw. Speichervorgängen zugehörigen Datenzuständen verringert. Ferner werden die Systemzuverlässigkeit und -verfügbarkeit durch Verwendung einer Transaktionstabelle in dem Hauptspeicher zur Unterstützung des Zwischenspeichers für den Fall, dass die Zwischenspeicherstruktur voll wird, verbessert.
  • Die hierin verwendete Terminologie dient lediglich dem Zweck des Beschreibens bestimmter Ausführungsformen und soll die Erfindung nicht einschränken. Die Verwendung der Singularform ”ein”, ”eine” bzw. ”der”, ”die”, ”das” hierin soll ebenfalls die Pluralformen einschließen, es sei denn, der Kontext gibt klar etwas Anderweitiges an. Es wird ferner darauf hingewiesen, dass die Begriffe „umfassen” und/oder „umfassend”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von aufgeführten Eigenschaften, ganzen Zahlen, Schritten, Arbeitsschritten, Elementen und/oder Komponenten festlegen, jedoch nicht das Vorhandensein bzw. das Hinzufügen von einer oder mehreren anderen Zahlen, Schritten, Arbeitsschritten, Elementen, Komponenten und/oder Gruppen daraus ausschließen.
  • Die entsprechenden Strukturen, Materialien, Schritte und Entsprechungen aller Mittel bzw. Step-plus-function-Elemente in den nachfolgenden Ansprüchen sollen jede beliebige Struktur, jedes beliebige Material bzw. jeden beliebigen Schritt zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen wie spezifisch beansprucht beinhalten. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung aufgeführt soll jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die Erfindung in der beschriebenen Form. Für Fachleute werden viele Abänderungen und Abweichungen ersichtlich sein, ohne von dem Umfang und dem Geist der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erläutern und um es anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Abänderungen, die für eine bestimmte vorgesehene Verwendung geeignet sind, zu verstehen.
  • Der Fachmann wird verstehen, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Rechnerprogrammprodukt ausgeführt werden können. Entsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, im Speicher befindlicher Software, Mikro-Code, etc.) oder einer Software- und Hardware-Aspekte kombinierenden Ausführungsform annehmen, die hierin alle allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet sein können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines auf einem oder mehreren durch einen Rechner lesbaren Medien annehmen, die durch einen Rechner lesbaren Programmcode enthalten.
  • Es kann jede Kombination aus einem oder mehreren durch einen Rechner lesbaren Medien verwendet werden. Bei dem durch einen Rechner lesbaren Medium kann es sich um ein durch einen Rechner lesbares Signalmedium oder ein durch einen Rechner lesbares Speichermedium handeln. Bei einem durch einen Rechner lesbaren Medium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine Vorrichtung oder eine Einheit oder jede geeignete Kombination daraus handeln, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (eine nicht erschöpfende Liste) des durch einen Rechner lesbaren Speichermediums gehören die folgenden: eine elektrische Verbindung mit einem oder mehreren Drähten, eine tragbare Rechnerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher [CD-ROM], eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination daraus. In dem Kontext dieses Dokuments kann es sich bei einem durch einen Rechner lesbaren Medium um jedes beliebige physikalische Medium handeln, das ein Programm enthalten bzw. speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen verwendet wird.
  • Ein durch einen Rechner lesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem durch einen Rechner lesbarem Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Form aus einer Vielfalt an Formen annehmen, darunter elektromagnetisch, optisch bzw. jede geeignete Kombination daraus, jedoch nicht darauf beschränkt. Bei einem durch einen Rechner lesbaren Signalmedium kann es sich um ein durch einen Rechner lesbares Medium handeln, das kein durch einen Rechner lesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterleiten bzw. transportieren kann.
  • Auf einem durch einen Rechner lesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter drahtlos, drahtgebunden, Lichtwellenleiter-Kabel, HF usw. oder jede geeignete Kombination daraus, jedoch nicht darauf beschränkt.
  • Rechnerprogrammcode für das Ausführen der Arbeitsschritte für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o. ä. sowie herkömmliche prozeduraler Programmiersprachen wie die „C”-Programmiersprache oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Rechner des Benutzers, teilweise auf dem Rechner des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Rechner des Benutzers und teilweise auf einem entfernt angeordneten Rechner oder vollständig auf dem entfernt angeordneten Rechner oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Rechner mit dem Rechner des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Rechner hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Diensteanbieters).
  • Aspekte der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Funktionsschaubilder von Verfahren, Vorrichtungen (Systemen) und Rechnerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Funktionsschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Funktionsschaubildern durch Rechnerprogrammanweisungen ausgeführt werden können. Diese Rechnerprogrammanweisungen können dem Prozessor eines Universalrechners, eines Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Rechners bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Funktionsschaubilder festgelegten Funktionen/Schritte erzeugt.
  • Diese Rechnerprogrammanweisungen können auch auf einem durch einen Rechner lesbaren Medium gespeichert sein, das einen Rechner oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass die auf dem durch einen Rechner lesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt herstellen, darunter Anweisungen, welche die in dem Block bzw. den Blöcken des Ablaufplans und/oder der Schaubilder festgelegten Funktion/den Schritt umsetzen.
  • Die Rechnerprogrammanweisungen können auch auf einen Rechner oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten geladen werden, um die Ausführung einer Reihe von Prozessschritten auf dem Rechner, der anderen programmierbaren Vorrichtung bzw. der anderen Einheiten zu verursachen, um einen auf einem Rechner ausgeführten Prozess zu erzeugen, so dass die auf dem Rechner oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Verfahren zur Umsetzung der in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Funktionsschaubilder festgelegten Funktionen/Schritte erzeugen.
  • Wie oben beschrieben, können Ausführungsformen in der Form von auf einem Rechner ausgeführten Prozessen und Vorrichtungen zum Ausführen dieser Prozesse ausgeführt sein. In beispielhaften Ausführungsformen ist die Erfindung in durch einen oder mehrere Netzwerkelemente ausgeführtem Rechnerprogrammcode ausgeführt. Ausführungsformen beinhalten ein wie in 10 abgebildetes Rechnerprogrammprodukt 900 auf einem durch einen Rechner verwendbaren Medium 1002 mit Rechnerprogrammcode-Logik 1004, die Anweisungen enthält, die auf physikalischen Medien als Herstellungsprodukt enthalten sind. Beispielhafte Herstellungsprodukte für das durch einen Rechner verwendbare Medium 1002 können Floppy-Disketten, CD-ROMs, Festplattenlaufwerke, Flash-Laufwerke mit universellem seriellen Bus (USB) oder jedes andere beliebige durch einen Rechner lesbare Speichermedium sein, wobei ein Rechner eine Vorrichtung zur Ausführung der Erfindung wird, wenn die Rechnerprogrammcode-Logik 1004 in den Rechner geladen und durch diesen ausgeführt wird. Ausführungsformen beinhalten zum Beispiel Rechnerprogrammcode-Logik 1004, sei sie in einem Speichermedium gespeichert, in einen Rechner geladen und/oder durch diesen ausgeführt oder über ein Übertragungsmedium übertragen, wie zum Beispiel über elektrische Verdrahtung bzw. Verkabelung, durch Lichtwellenleiter oder über elektromagnetische Strahlung, wobei ein Rechner eine Vorrichtung zur Ausführung der Erfindung wird, wenn die Rechnerprogrammcode-Logik 1004 in den Rechner geladen und durch diesen ausgeführt wird. Bei Umsetzung auf einem Universal-Mikroprozessor konfigurieren die Segmente der Rechnerprogrammcode-Logik 1004 den Mikroprozessor so, dass er spezifische Logikschaltungen erzeugt.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Funktionsschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen der Systeme, Verfahren und Rechnerprogrammprodukte gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan bzw. den Blockschaltbildern bzw. Funktionsschaubildern ein Modul, ein Segment oder einen Teil eines Codes darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) umfassen. Es sei auch bemerkt, dass in einigen alternativen Ausführungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden können. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner zu bemerken, dass jeder Block der Ablaufpläne und/oder der Blockschalt- bzw. Funktionsschaubilder sowie Kombinationen aus Blöcken in den Ablaufplänen und/oder den Blockschalt- bzw. dem Funktionsschaubildern durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder durch Kombinationen aus Spezial-Hardware and Rechneranweisungen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 7536517 [0023, 0030]
    • US 7350034 [0025, 0026, 0027]
  • Zitierte Nicht-Patentliteratur
    • David A. Wood in seinem Artikel mit dem Titel „An Overview of Hardware Alternatives” (Transactional Memory Workshop, 8. April 2005) [0024]
    • Ananian u. a. in ihrem Dokument mit dem Titel „Unbounded Transactional Memory” (Research Abstracts 2006, CSAIL Publications and Digital Archive) [0027]
    • Rajwar, Herlihy und Lai wenden in ihrem Dokument mit dem Titel „Virtualizing Transactional Memory” (2005 IEEE) [0027]
    • „Architectural Semantics for Practical Transactional Memory” (McDonald u. a., Computer Systems Laboratory, Stanford University, 2006) [0028]

Claims (8)

  1. Verfahren zur Verwendung durch ein Transaktionsprogramm zum Verwalten eines Speicherzugriffs auf einen gemeinsam genutzten Speicherplatz für Transaktionsdaten eines ersten Prozessstranges, wobei der erste Prozessstrang und ein zweiter Prozessstrang auf den gemeinsam genutzten Speicherplatz zugreifen können, wobei das Verfahren die folgenden Schritte umfasst: Ausführen einer Folge von Anweisungen auf einem Rechnersystem, um eine Transaktion des ersten Prozessstrangs auszuführen, wobei mit einer Anweisung aus der Folge von Anweisungen begonnen wird; Feststellen auf dem Rechnersystem, ob die eine Anweisung Teil einer aktiven atomaren Anweisungsgruppe (AIG) von der Transaktion des ersten Prozessstrangs zugehörigen Anweisungen ist; Lokalisieren einer Zwischenspeicherstruktur und einer Transaktionstabelle, die gemeinsam für Einträge während einer aktiven AIG-Betriebsart sorgen, wobei das Lokalisieren infolge der Feststellung stattfindet, dass die eine Anweisung Teil einer aktiven AIG ist, wobei ein Eintrag einen alten, in der Zwischenspeicherstruktur gespeicherten Datenzustand sowie in der Transaktionstabelle gespeicherte Steuerungsinformationen enthält und sämtliche durch Anweisungen der aktiven AIG geprüfte bzw. abgeänderte Speicherplätze schwebend bleiben, bis das Rechnersystem anzeigt, dass die Speicherplätze festgeschrieben werden sollen; und Ausführen einer nächsten Anweisung in einer normalen Ausführungsbetriebsart auf dem Rechnersystem infolge der Feststellung, dass die eine Anweisung nicht Teil einer aktiven AIG ist.
  2. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Empfangen einer Anforderung zum Speichern des alten Datenzustands; Feststellen, ob der alte Datenzustand in der Zwischenspeicherstruktur oder der Transaktionstabelle gespeichert werden soll, Speichern des alten Datenzustands in der Zwischenspeicherstruktur infolge der Feststellung, dass der alte Datenzustand in der Zwischenspeicherstruktur gespeichert werden soll; und Speichern des alten Datenzustands in der Transaktionstabelle infolge der Feststellung, dass der alte Datenzustand in der Zwischenspeicherstruktur gespeichert werden soll.
  3. Verfahren nach Anspruch 2, das ferner Folgendes umfasst: Empfangen einer Anforderung zum Speichern von Steuerungsinformationen; und Speichern der Steuerungsinformationen in der Transaktionstabelle.
  4. Verfahren nach Anspruch 1, bei dem die Steuerungsinformationen eine physikalische Adresse und einen Privat-zu-Transaktions-(PTRAN-)Merker enthalten.
  5. Verfahren nach Anspruch 1, bei dem sich die Transaktionstabelle in einem Hauptspeicher befindet.
  6. Verfahren nach Anspruch 1, bei dem sich die Zwischenspeicherstruktur in dem Zwischenspeicher befindet.
  7. System, das Mittel umfasst, die angepasst sind, sämtliche Schritte des Verfahrens nach einem der vorhergehenden Verfahrensansprüche auszuführen.
  8. Rechnerprogramm, das Anweisungen zum Ausführen sämtlicher Schritte des Verfahrens nach einem der vorhergehenden Verfahrensansprüche bei Ausführung des Rechnerprogramms auf einem Rechnersystem umfasst.
DE112010003492.3T 2009-08-31 2010-08-24 Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung Active DE112010003492B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/550,844 2009-08-31
US12/550,844 US8566524B2 (en) 2009-08-31 2009-08-31 Transactional memory system with efficient cache support
PCT/EP2010/062302 WO2011023679A1 (en) 2009-08-31 2010-08-24 Transactional memory system with efficient cache support

Publications (2)

Publication Number Publication Date
DE112010003492T5 true DE112010003492T5 (de) 2012-09-20
DE112010003492B4 DE112010003492B4 (de) 2019-04-25

Family

ID=43037842

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010003492.3T Active DE112010003492B4 (de) 2009-08-31 2010-08-24 Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung

Country Status (6)

Country Link
US (3) US8566524B2 (de)
JP (1) JP2013503379A (de)
CN (1) CN102483704B (de)
DE (1) DE112010003492B4 (de)
GB (1) GB2484881B (de)
WO (1) WO2011023679A1 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8209499B2 (en) * 2010-01-15 2012-06-26 Oracle America, Inc. Method of read-set and write-set management by distinguishing between shared and non-shared memory regions
US20130205284A1 (en) * 2012-02-02 2013-08-08 Dhruva Chakrabarti Ownership acquire policy selection
US9870384B2 (en) * 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
CN102722401B (zh) * 2012-04-25 2014-07-09 华中科技大学 一种硬件事务内存系统中的伪相联多版本数据管理方法
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9015419B2 (en) 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9430166B2 (en) 2012-08-10 2016-08-30 International Business Machines Corporation Interaction of transactional storage accesses with other atomic semantics
US9977683B2 (en) * 2012-12-14 2018-05-22 Facebook, Inc. De-coupling user interface software object input from output
US9384037B2 (en) * 2013-03-14 2016-07-05 Intel Corporation Memory object reference count management with improved scalability
US9197520B2 (en) * 2013-03-15 2015-11-24 Microsoft Technology Licensing, Llc Methods and computer program products for transaction analysis of network traffic in a network device
GB2516092A (en) * 2013-07-11 2015-01-14 Ibm Method and system for implementing a bit array in a cache line
GB2516091A (en) * 2013-07-11 2015-01-14 Ibm Method and system for implementing a dynamic array data structure in a cache line
US10015049B2 (en) 2014-02-13 2018-07-03 Sap Se Configuration of network devices in a network
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
US9588893B2 (en) 2014-11-10 2017-03-07 International Business Machines Corporation Store cache for transactional memory
US9436608B1 (en) 2015-02-12 2016-09-06 International Business Machines Corporation Memory nest efficiency with cache demand generation
US10210200B2 (en) 2015-10-01 2019-02-19 Futurewei Technologies, Inc. Action-based routing of a transaction in an online transaction processing system
US10255071B2 (en) * 2015-10-14 2019-04-09 International Business Machines Corporation Method and apparatus for managing a speculative transaction in a processing unit
US9514006B1 (en) 2015-12-16 2016-12-06 International Business Machines Corporation Transaction tracking within a microprocessor
CN107025130B (zh) 2016-01-29 2021-09-03 华为技术有限公司 处理节点、计算机系统及事务冲突检测方法
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10831489B2 (en) * 2018-08-23 2020-11-10 International Business Machines Corporation Mechanism for completing atomic instructions in a microprocessor
US11349715B2 (en) * 2019-02-01 2022-05-31 Arista Networks, Inc. Method and system for consistent policy enforcement through fabric offloading
US11614937B1 (en) * 2021-12-30 2023-03-28 Apple Inc. Accelerator circuit for mathematical operations with immediate values table
CN117472803B (zh) * 2023-12-28 2024-03-29 北京微核芯科技有限公司 原子指令执行方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350034B2 (en) 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7536517B2 (en) 2005-07-29 2009-05-19 Microsoft Corporation Direct-update software transactional memory

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3686641A (en) 1970-09-30 1972-08-22 Burroughs Corp Multiprogram digital processing system with interprogram communication
US5428761A (en) 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
JPH0695898A (ja) 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
JP2500101B2 (ja) 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
US5438761A (en) * 1993-09-16 1995-08-08 Krumszyn; Luba M. Rotatable carpenter's level
WO1996027157A1 (fr) 1995-02-28 1996-09-06 Ntt Data Communications Systems Corporation Systeme associatif decentralise et traitements de journaux et de reprise dans celui-ci
US5701432A (en) 1995-10-13 1997-12-23 Sun Microsystems, Inc. Multi-threaded processing system having a cache that is commonly accessible to each thread
US5963922A (en) 1996-02-29 1999-10-05 Helmering; Paul F. System for graphically mapping related elements of a plurality of transactions
US5974438A (en) 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US6035379A (en) 1997-01-09 2000-03-07 Microsoft Corporation Transaction processing for user data employing both logging and shadow copying
US5946711A (en) 1997-05-30 1999-08-31 Oracle Corporation System for locking data in a shared cache
DE19750916A1 (de) 1997-11-17 1999-05-20 Roche Diagnostics Gmbh Verbessertes Verfahren zum Nachweis von PSA-ACT-Komplexen
US6205519B1 (en) 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6209066B1 (en) 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US6360220B1 (en) 1998-08-04 2002-03-19 Microsoft Corporation Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries
US6874065B1 (en) 1999-02-26 2005-03-29 Hewlett-Packard Development Company, L.P. Cache-flushing engine for distributed shared memory multi-processor computer systems
US6360231B1 (en) 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US7000234B1 (en) 2000-01-20 2006-02-14 Sun Microsystems, Inc. Maintaining a double-ended queue as a linked-list with sentinel nodes and delete flags with concurrent non-blocking insert and remove operations using a double compare-and-swap primitive
US6651146B1 (en) 2000-02-24 2003-11-18 International Business Machines Corporation Method and apparatus for managing access contention to a linear list without the use of locks
US7017160B2 (en) 2000-04-18 2006-03-21 Sun Microsystems, Inc. Concurrent shared object implemented using a linked-list with amortized node allocation
WO2001082057A2 (en) 2000-04-18 2001-11-01 Sun Microsystems, Inc. Lock-free implementation of concurrent shared object with dynamic node allocation and distinguishing pointer value
US6611906B1 (en) 2000-04-30 2003-08-26 Hewlett-Packard Development Company, L.P. Self-organizing hardware processing entities that cooperate to execute requests
US6748505B1 (en) 2000-07-11 2004-06-08 Intel Corporation Efficient system bus architecture for memory and register transfers
US7117502B1 (en) 2000-11-10 2006-10-03 Sun Microsystems, Inc. Linked-list implementation of a data structure with concurrent non-blocking insert and remove operations
US6779049B2 (en) 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6879981B2 (en) 2001-01-16 2005-04-12 Corigin Ltd. Sharing live data with a non cooperative DBMS
US6738837B1 (en) 2001-02-02 2004-05-18 Cradle Technologies, Inc. Digital system with split transaction memory access
US7346632B2 (en) 2001-02-22 2008-03-18 International Business Machines Corporation Mechanism for executing nested transactions in an execution environment supporting flat transactions only
US6895585B2 (en) 2001-03-30 2005-05-17 Hewlett-Packard Development Company, L.P. Method of mixed workload high performance scheduling
US6880071B2 (en) 2001-04-09 2005-04-12 Sun Microsystems, Inc. Selective signalling of later reserve location memory fault in compound compare and swap
US6848033B2 (en) 2001-06-07 2005-01-25 Hewlett-Packard Development Company, L.P. Method of memory management in a multi-threaded environment and program storage device
US20030066056A1 (en) 2001-09-28 2003-04-03 Petersen Paul M. Method and apparatus for accessing thread-privatized global storage objects
US7120762B2 (en) 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US6981110B1 (en) 2001-10-23 2005-12-27 Stephen Waller Melvin Hardware enforced virtual sequentiality
WO2003038683A1 (en) 2001-11-01 2003-05-08 Verisign, Inc. Transactional memory manager
JP3884990B2 (ja) 2002-04-26 2007-02-21 富士通株式会社 マルチプロセッサ装置
US7328316B2 (en) 2002-07-16 2008-02-05 Sun Microsystems, Inc. Software transactional memory for dynamically sizable shared data structures
US9052944B2 (en) 2002-07-16 2015-06-09 Oracle America, Inc. Obstruction-free data structures and mechanisms with separable and/or substitutable contention management mechanisms
KR200311611Y1 (ko) 2003-02-04 2003-05-01 김이도 성기능 보조링
US7269694B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring loads to support transactional program execution
US6862664B2 (en) 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US6938130B2 (en) 2003-02-13 2005-08-30 Sun Microsystems Inc. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US7089374B2 (en) 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
US7584474B2 (en) 2003-02-25 2009-09-01 Bea Systems, Inc. Systems and methods for transaction chaining
US7178062B1 (en) 2003-03-12 2007-02-13 Sun Microsystems, Inc. Methods and apparatus for executing code while avoiding interference
US6922658B2 (en) * 2003-03-31 2005-07-26 International Business Machines Corporation Method and system for testing the validity of shared data in a multiprocessing system
US7395278B2 (en) 2003-06-30 2008-07-01 Microsoft Corporation Transaction consistent copy-on-write database
US7587615B2 (en) 2003-09-12 2009-09-08 International Business Machines Corporation Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions
US20050086446A1 (en) 2003-10-04 2005-04-21 Mckenney Paul E. Utilizing software locking approach to execute code upon failure of hardware transactional approach
GB0325788D0 (en) 2003-11-05 2003-12-10 Ibm Memory allocation
EP1542143A1 (de) 2003-12-12 2005-06-15 Sap Ag System und Verfahren für die Datenverarbeitung
US7904663B2 (en) 2003-12-18 2011-03-08 International Business Machines Corporation Secondary path for coherency controller to interconnection network(s)
US20050216625A1 (en) 2004-03-09 2005-09-29 Smith Zachary S Suppressing production of bus transactions by a virtual-bus interface
US7187062B2 (en) * 2004-04-14 2007-03-06 Avago Technologies Wireless Ip (Singapore) Pte. Ltd. Coupler detector
US7552317B2 (en) * 2004-05-04 2009-06-23 Sun Microsystems, Inc. Methods and systems for grouping instructions using memory barrier instructions
US8544020B1 (en) 2004-09-14 2013-09-24 Azul Systems, Inc. Cooperative preemption
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
US7657883B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7577657B2 (en) 2005-03-18 2009-08-18 Microsoft Corporation System and method for updating objects in a multi-threaded computing environment
US7716645B2 (en) 2005-06-10 2010-05-11 International Business Machines Corporation Using atomic sets of memory locations
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7415580B2 (en) * 2005-08-01 2008-08-19 Hewlett-Packard Development Company, L.P. System for determining the position of an element in memory
US8799882B2 (en) 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US7792805B2 (en) 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US20070300238A1 (en) 2006-06-21 2007-12-27 Leonidas Kontothanassis Adapting software programs to operate in software transactional memory environments
US7502897B2 (en) 2006-06-28 2009-03-10 Intel Corporation Object based conflict detection in a software transactional memory
US9798590B2 (en) 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution
US7689788B2 (en) 2007-01-23 2010-03-30 Sun Microsystems, Inc. System and method for executing transactions
US8321637B2 (en) 2007-05-14 2012-11-27 International Business Machines Corporation Computing system with optimized support for transactional memory
US8117403B2 (en) 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US8688920B2 (en) 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US8078807B2 (en) 2007-12-27 2011-12-13 Intel Corporation Accelerating software lookups by using buffered or ephemeral stores

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350034B2 (en) 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7536517B2 (en) 2005-07-29 2009-05-19 Microsoft Corporation Direct-update software transactional memory

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Architectural Semantics for Practical Transactional Memory" (McDonald u. a., Computer Systems Laboratory, Stanford University, 2006)
Ananian u. a. in ihrem Dokument mit dem Titel "Unbounded Transactional Memory" (Research Abstracts 2006, CSAIL Publications and Digital Archive)
David A. Wood in seinem Artikel mit dem Titel "An Overview of Hardware Alternatives" (Transactional Memory Workshop, 8. April 2005)
Rajwar, Herlihy und Lai wenden in ihrem Dokument mit dem Titel "Virtualizing Transactional Memory" (2005 IEEE)

Also Published As

Publication number Publication date
CN102483704A (zh) 2012-05-30
GB2484881A (en) 2012-04-25
US8667231B2 (en) 2014-03-04
US20140047186A1 (en) 2014-02-13
CN102483704B (zh) 2015-08-26
US20110055483A1 (en) 2011-03-03
JP2013503379A (ja) 2013-01-31
GB2484881B (en) 2016-10-19
WO2011023679A1 (en) 2011-03-03
US8566524B2 (en) 2013-10-22
US20130046937A1 (en) 2013-02-21
DE112010003492B4 (de) 2019-04-25
GB201203473D0 (en) 2012-04-11
US8738862B2 (en) 2014-05-27

Similar Documents

Publication Publication Date Title
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
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
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE10296989B4 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE102013201767B4 (de) Übersetzungs-Adresse-Zwischenspeicher für einen Mikroprozessor
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE112005002402B4 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
US8095750B2 (en) Transactional memory system with fast processing of common conflicts
US8321637B2 (en) Computing system with optimized support for transactional memory
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE112009005006T5 (de) Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
DE112011101364T5 (de) Fehlerbehebung in Multithread-Code
DE112018000848T5 (de) Registerkontextwiederherstellung auf der Grundlage der Wiedergewinnung von Umbenennungsregistern
DE112015000294T5 (de) Wiederherstellen von Hardware-Transaktionen
DE102007054057A1 (de) Mechanismus zum Detektieren und Vorhersagen eines kritischen Abschnitts zur Hardware-Lock-Elision
DE102012023574A1 (de) Verfahren, Vorrichtung und System zum Effizienten Verarbeiten von mehreren Abbildungen virtueller Adressen bei der transaktionalen Abarbeitung
DE102013204521A1 (de) Transaktionsverwaltung für Datenbanksysteme
DE112013003079T5 (de) Anweisungen für Transaktionsbeginn/-ende
DE102013206423A1 (de) Multithread-transaktionale-Speicherkohärenz
DE102020132140A1 (de) Pipelines für sichere Multithread-Ausführung
DE102021116489A1 (de) Verwaltung von Prefetch-Anfragen auf Basis von Stream-Informationen für zuvor erkannte Streams
DE102020132893A1 (de) Vorrichtungen, verfahren und systeme für einen duplikationsbeständigen on-die-prefetcher für unregelmässige daten

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final