DE102007048507A1 - Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers - Google Patents

Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers Download PDF

Info

Publication number
DE102007048507A1
DE102007048507A1 DE200710048507 DE102007048507A DE102007048507A1 DE 102007048507 A1 DE102007048507 A1 DE 102007048507A1 DE 200710048507 DE200710048507 DE 200710048507 DE 102007048507 A DE102007048507 A DE 102007048507A DE 102007048507 A1 DE102007048507 A1 DE 102007048507A1
Authority
DE
Germany
Prior art keywords
cache
transaction
state
lines
invalid
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
DE200710048507
Other languages
English (en)
Other versions
DE102007048507B4 (de
Inventor
Blaine D. Ft. Collins Gaither
Judson E. Ft. Collins Veazey
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102007048507A1 publication Critical patent/DE102007048507A1/de
Application granted granted Critical
Publication of DE102007048507B4 publication Critical patent/DE102007048507B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es ist ein Verfahren zum Bereitstellen eines Transaktionsspeichers beschrieben. Ein Cache-Kohärenzprotokoll wird einem Cache-Speicher, der Cache-Lines umfasst, auferlegt, wobei jede Leitung sich in entweder einem Modifiziert-Zustand, einem Eigen-Zustand, einem Exklusiv-Zustand, einem Gemeinschaftlich-Zustand oder einem Ungültig-Zustand befindet. Auf eine Einleitung einer ersten Transaktion hin, die auf zumindest eine der Cache-Lines zugreift, wird gewährleistet, dass jede der Leitungen entweder gemeinschaftlich oder ungültig ist. Während der Transaktion wird, ansprechend auf eine externe Anforderung nach einer beliebigen Cache-Linie in dem Modifiziert-, Eigen- oder Exklusiv-Zustand, jede Leitung in dem Modifiziert- oder Eigen-Zustand für ungültig erklärt, ohne die Leitung in einen Hauptspeicher zu schreiben. Auch wird jede Exklusiv-Line auf entweder den Gemeinschaftlich- oder Ungültig-Zustand degradiert, und die Transaktion wird abgebrochen.

Description

  • Die Verwendung mehrerer Prozessoren, die Operationen parallel in einem Computersystem ausführen, ist schon seit langem als ein Mittel zum Vergrößern von Rechenleistung und Durchsatz des Systems anerkannt. Um korrekte und wiederholbare Ergebnisse in einem derartigen System erzeugen zu können, muss jedoch eine Kommunikation zwischen den verschiedenen Prozessoren in einer gesteuerten Art und Weise stattfinden. Um diese Kommunikation zu ermöglichen, greifen die Prozessoren oft auf dieselben Datenspeicherorte in einem gemeinschaftlich verwendeten Speicherraum zu, um Nachrichten und andere Daten zwischen denselben zu übertragen, sowie um auf andere von diesen Prozessoren gemeinschaftlich verwendete Daten zuzugreifen und dieselben möglicherweise zu modifizieren. Bei einem Beispiel benötigt unter Umständen jeder dieser Prozessoren einen „atomaren" Lese-Modifizier-Schreib-Zugriff auf einen oder mehrere dieser Speicherorte, um eine Verfälschung oder Beeinträchtigung der Daten in diesen Orten zu vermeiden. Mit anderen Worten, unter Umständen muss jeder der Prozessoren mehrere Operationen an einem bestimmten Datum durchführen ohne dabei einem anderen Prozessor Zugriff auf dieselben Orte zu gewähren.
  • In manchen Computersystemen wurden hardwareintensive Grundelemente, die als „Sperren" („Locks") bezeichnet sind, wie z. B. Binärsemaphore, Zähllocks oder Spinlocks (Warteschleifen) eingesetzt, um einen gesteuerten Zugriff auf von diesen Prozessoren gemeinschaftlich verwendete Daten bereitzustellen. In der Regel besitzt ein Prozessor, der erfolgreich auf ein Lock oder ein ähnliches Grundelement zugreift, einen unterbrechungsfreien Zugang auf einen oder mehrere durch das Lock geschützte Speicherorte, bis der Prozessor entscheidet, das Lock freizugeben. Während Locks beim Steuern eines Zugriffs auf von den Sensoren gemeinschaftlich verwendete Daten wirksam sind, implementieren Locks im Wesentlichen ein Blockierschema, was bedeutet, dass andere Prozessoren, die auf dieselben Daten zugreifen müssen, vorübergehend angehalten werden, während ein anderer Prozessor das Lock besitzt, was sich negativ auf die Systemleistung auswirkt. Auch der Betrag von Granularität der gemeinschaftlich verwendeten Daten, die durch ein oder mehrere Locks geschützt sind, wirkt sich auf den Betrag von Blockierung aus. Zum Beispiel ist unter erhöhter Granularität, bei der jeder Lock eine relativ kleine Datenmenge schützt, der Betrag an diesen Locks zugeordnetem Mehraufwand vergrößert, jedoch der Betrag an Konkurrenz für ein beliebiges einzelnes Lock verringert. Demgegenüber hat eine niedrige Granularität, bei der jedes Lock mehr Daten schützt, zur Folge, dass weniger Locks implementiert werden, bewirkt jedoch auch eine höhere Konkurrenz für jedes Lock. Diese Blockierung oder Konkurrenz verschlimmert sich, wenn der Prozessor mit dem Lock ausfällt. Andere mit Locks einhergehende wohlbekannte Übel, wie z. B. eine Systemblockade (Deadlock), eine Permanent-Aktivitäts-Blockade (Lifelock) sowie eine Prioritätsumkehrung sind ebenfalls problematisch. Ferner vergrößert die Verwendung von Locks oft unnötigen Mehraufwand beträchtlich, da die Wahrscheinlichkeit, dass zwei oder mehr Prozessoren zu einem beliebigen Zeitpunkt auf den gleichen gemeinschaftlich verwendeten Speicherort zugreifen, in den meisten Computersystemen relativ niedrig ist.
  • Um diese Probleme anzugehen, wurde das Konzept eines Transaktionsspeichers entwickelt. Statt ein Hardwareblockierschema einzusetzen, nutzt der Transaktionsspeicher einen optimistischeren, softwareorientierten Ansatz. Im Allgemeinen führt ein Prozessor eine Reihe von Operationen, als eine „Transaktion" bezeichnet, an einem oder mehreren Speicherorten ohne Rücksicht auf die Aktionen anderer Prozessoren zögerlich aus, so dass an diesem Punkt keine Blockierung stattfindet. Gleichzeitig zeichnet der Prozessor die Operationen in einem Protokoll auf. Nach den notwendigen Operationen „validiert" oder verifiziert der Prozessor dann, dass keine anderen Prozessoren auf dieselben gemeinschaftlich verwendeten Daten zugegriffen haben. Falls nicht, werden sämtliche an den Daten vorgenommenen Veränderungen „festgeschrieben" oder dauerhaft gemacht. Andernfalls kann es sein, dass ein Konflikt stattgefunden hat, was es erforderlich macht, dass der Prozessor sämtliche der einhergehenden Speicheränderungen rückgängig macht und die Transaktion abbricht. In diesem Fall steht es dem Prozessor in der Regel frei, die Transaktion umgehend erneut zu versuchen.
  • Auch wenn davon ausgegangen wird, dass ein softwarebasierter Transaktionsspeicher eine wirksame und effiziente Alternative zu derzeitigen hardwarebasierten Blockierschemata ist, so fällt hier doch in der Regel ein beträchtlicher Betrag an Software-Mehraufwand an, was somit einige der Vorteile, die ein Transaktionsspeicher liefert, beeinträchtigt.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren sowie ein Cache-Speichersystem zum Bereitstellen eines Transaktionsspeichers mit verbesserten Charakteristika zu schaffen.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 sowie durch eine Cache-Speichersystem gemäß Anspruch 11 oder 21 gelöst.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm eines Cache-Speichersystems zum Bereitstellen eines Transaktionsspeichers gemäß einem Ausführungsbeispiel der Erfindung;
  • 2 mögliche Zustände einer Cache-Line in einem typischen Cache-Speicher des Stands der Technik;
  • 3 ein Flussdiagramm eines Verfahrens zum Bereitstellen eines Transaktionsspeichers gemäß einem Ausführungsbeispiel der Erfindung;
  • 4 ein Blockdiagramm von Datenstrukturen, die in einem Verfahren zum Bereitstellen eines Transaktionsspeichers einsetzbar sind, gemäß einem weiteren Ausführungsbeispiel der Erfindung; und
  • 5 ein Flussdiagramm eines Verfahrens zum Bereitstellen eines Transaktionsspeichers, der die Datenstrukturen gemäß 4 einsetzt, gemäß einem weiteren Ausführungsbeispiel der Erfindung.
  • 1 veranschaulicht ein Ausführungsbeispiel der Erfindung: ein Cache-Speichersystem 100, das einen Cache-Speicher 104 und eine zugeordnete Cache-Steuerung 102 umfasst. Der Cache-Speicher 104 umfasst eine Anzahl von Cache-Lines (Cache-Zeilen) 106, von denen jede eine Kopie von Daten fassen kann, die sich in einem gewissen Abschnitt eines Hauptspeichers (nicht gezeigt) befinden. In der Regel ist der Cache-Speicher 104 ein kleinerer und schnellerer Speicher als der Hauptspeicher, was es ermöglicht, dass ein mit dem Cache-Speicher 104 gekoppelter Prozessor schneller und effizienter auf Daten zugreifen kann. Bei einem Ausführungsbeispiel besitzt jede Cache-Line 106 die Kapazität zum Fassen mehrerer adressierbarer Speicherorte des Hauptspeichers. Die Cache-Steuerung 102 ist konfiguriert, um den Cache-Speicher 104 zu steuern, um eine oder mehrere der Cache-Lines 106 als einen Transaktionsspeicher einzusetzen, wie es nachfolgend noch ausführlicher erklärt ist.
  • Das Cache-Speichersystem 100 kann in einer Anzahl von Computersystemarchitekturen eingesetzt werden. Zum Beispiel kann jeder von mehreren Prozessoren einen Cache-Speicher 104 und eine zugeordnete Cache-Steuerung 102 umfassen, wobei jeder der Prozessoren durch seinen Cache 104 mit einem Hauptspeicher gekoppelt ist. In einer weiteren Implementierung kann ein symmetrisches Multiprozessorsystem (SMP-System; SMP = symmetric multiprocessor) mehrere Prozessoren umfassen, von denen jeder einen Cache-Speicher 104, eine Cache-Steuerung 102 und einen Primärspeicher umfasst. Jeder Primärspeicher besteht aus einem Abschnitt eines Hauptspeichers, auf den durch jeden beliebigen der Prozessoren in dem SMP-System zugegriffen werden kann. Viele andere Mehrprozessorsysteme, bei denen in jeden Prozessor ein Cache-Speicher eingegliedert ist, können ebenfalls Nutzen aus einer Anwendung des Cache-Speichersystems und der Verfahren, die nachfolgend ausführlicher beschrieben sind, ziehen.
  • Die Cache-Steuerung 102 auferlegt dem Cache-Speicher 104 ein Cache-Kohärenzprotokoll. Gemäß dem Cache-Kohärenzprotokoll befindet sich jede Cache-Line 106 in einem bestimmten „Zustand", der sich im Zeitverlauf abhängig von Zugriffen auf die Daten in der zugeordneten Cache-Line 106 ändern kann. Bei einem Ausführungsbeispiel ist das Cache-Kohärenzprotokoll ein MOESI-Protokoll (MOESI = Modified-Owned-Exclusive-Shared-Invalid = Modifiziert-Eigen-Exklusiv-Gemeinschaftlich-Ungültig), das nach den verschiedenen Zuständen, die jede der Cache-Lines 106 annehmen kann, benannt ist.
  • Der Zustandssatz 200 eines MOESI-Cache-Kohärenzprotokolls vom Stand der Technik ist in 2 graphisch dargestellt. Die verschiedenen Zustände (d. h., der Ungültig-Zustand 202, der Gemeinschaftlich-Zustand 204, der Exklusiv-Zustand 206, der Eigen-Zustand 208 und der Modifiziert-Zustand 210) sind in einer hierarchischen Reihenfolge, die den Inhalt jeder Cache-Line anzeigt, angeordnet. Ein Bewegen einer Cache-Line 106 von einem niedrigeren Zustand in einen höheren Zustand wird als „Beförderung" bezeichnet, während ein Versetzen einer Cache-Line 106 von einem höheren Zustand in einen niedrigeren eine „Degradierung" ist.
  • Der niedrigste Zustand ist der Ungültig-Zustand (Invalid-Zustand) 202. Eine Cache-Line 106 ist ungültig, wenn die Line 106 keine gültigen Daten aus ihrem zugeordneten Hauptspeicher enthält. Als Folge ist diese Cache-Line 106 zum Speichern von Daten verfügbar, die von dem Hauptspeicher eingelesen werden sollen, und zwar in der Regel als Folge einer Anforderung nach einem Lesezugriff auf die Daten von dem mit dem Cache-Speicher 104 gekoppelten Prozessor.
  • Eine Cache-Line 106 befindet sich in dem Gemeinschaftlich-Zustand (Shared-Zustand) 204, wenn die Line 106 eine gültige (d. h. die aktuellste) Kopie der Daten, die in zugehörigen Speicherorten des Hauptspeichers gespeichert sind, besitzt. In dem Gemeinschaftlich-Zustand 204 können auch andere Cache-Speicher 104, die anderen Prozessoren zugeordnet sind, die aktuellste Kopie derselben Daten fassen.
  • Wenn eine Cache-Line 106 Daten enthält, die lediglich in dem aktuellen Cache-Speicher 104 zu finden sind und nicht in einem beliebigen anderen Cache-Speicher 104 des Systems, und wenn diese Daten mit dem entsprechenden Datenwert in dem Hauptspeicher übereinstimmen, dann befindet sich die Cache-Line 106 unter Umständen in dem Exklusiv-Zustand (Exclusive-Zustand) 206.
  • In dem Eigen-Zustand (Owned-Zustand) 208 enthält eine Cache-Line 106 die aktuellste Kopie der zugeordneten Daten von dem Hauptspeicher. Andere Cache-Speicher 104 in dem System können dieselbe aktualisierte Kopie ebenfalls enthalten. Jedoch ist es möglich, im Gegensatz zu dem Gemeinschaftlich-Zustand 204, dass die Daten in einer Eigen-Cache-Line 106 nicht mit den Daten in den entsprechenden Speicherorten des Hauptspeichers übereinstimmen. Anders ausgedrückt ist der zugeordnete Datenwert, der in dem Hauptspeicher gehalten wird, alt oder „veraltet". In der Regel hält lediglich ein Cache-Speicher 104 die Daten in dem Eigen-Zustand 208; alle verbleibenden Cache-Speicher 104, die dieselbe Kopie der Daten halten, halten ihre zugeordneten Cache-Lines 106 in dem Gemeinschaftlich-Zustand 204 aufrecht.
  • Über dem Cache-Kohärenzprotokollzustandssatz 200 befindet sich der Modifiziert-Zustand (Modified-Zustand) 210. Eine Cache-Line 106 in dem Modifiziert-Zustand 210 hält die aktuellste Kopie der zugeordneten Daten, und die entsprechenden Speicherorte in dem Hauptspeicher sind veraltet. Zudem halten keine weiteren Cache-Speicher 104 in dem System eine Kopie der Daten in irgendeiner ihrer Cache-Lines 106.
  • Verschiedene Lese- und Schreiboperationen an einer Cache-Line 106, die in der Regel durch einen mit dem Cache-Speicher 104 gekoppelten Prozessor initiiert werden, ändern oft den bestimmten Zustand der Cache-Line 106 gemäß dem Cache-Kohärenzprotokoll. Das Protokoll erlaubt es, dass die verschiedenen Cache-Speicher 104 parallelen Zugriff durch die Systemprozessoren auf die Daten in dem Hauptspeicher verbessern, während es gleichzeitig verhindert, dass die Prozessoren verschiedene Werte für dieselben Daten verwenden. Dieses Inkraftsetzen von Datenwerten in den verschiedenen Cache-Speichern 104 findet teilweise mittels der im Vorhergehenden beschriebenen Cache-Line-Zustände 200 statt, von denen keiner zulässt, dass eine Kopie von Daten in einem Cache-Speicher 104 zu denselben in einem anderen Cache-Speicher 104 gespeicherten Daten im Widerspruch steht. Wie es nachfolgend beschrieben ist, wird diese Eigenschaft ausgenutzt, um zumindest einige der Cache-Lines 106 als einen Transaktionsspeicher einzusetzen.
  • Die nachfolgende Erörterung liefert einige Einzelheiten hinsichtlich dessen, wie die Arbeitsweise des Cache-Speichers 104 und der zugeordneten Steuerung 102 sowie hinsichtlich dessen, wie der Zustand jeder Cache-Line 106 bei Betrieb befördert oder degradiert werden kann, und zwar unter der Annahme der Verwendung eines typischen MOESI-Cache-Kohärenzprotokolls. Einige dieser Einzelheiten können sich von Ausführungsbeispiel zu Ausführungsbeispiel unterscheiden.
  • Im Allgemeinen kann ein Cache-Speicher 104, basierend auf diesen bestimmten MOESI-Zuständen 200, einer Leseanforderung von seinem entsprechenden Prozessor entsprechen, solange sich die Zieldaten in dem Cache-Speicher 104 befinden; mit anderen Worten, die bestimmte Cache-Line 106, die die Daten hält, kann sich in jedem beliebigen Zustand außer dem Ungültig-Zustand 202 befinden. Jedoch kann eine Schreiboperation von dem Prozessor in seinen Cache-Speicher 104 lediglich dann stattfinden, wenn die Zieldaten in einer der Cache-Lines 106 in dem Modifiziert-Zustand 210, dem Eigen-Zustand 208 oder dem Exklusiv-Zustand 206 vorliegen. Ferner setzt ein Cache-Speichersystem 100 mit einer Cache-Line 106 in dem Eigen-Zustand 208 in der Regel die anderen Cache-Speicher 104 über die Schreiboperation in Kenntnis, so dass ihre Kopie der Daten ebenfalls aktualisiert oder für ungültig erklärt werden kann.
  • Wenn der Cache-Speicher 104 einer Leseanforderung von seinem Prozessor nicht entsprechen kann, bewirkt die Cache-Steuerung 102 eine Leseoperation von dem Hauptspeicher der angeforderten Daten und speichert diese Daten in eine Cache-Line 106. In der Regel werden die Daten in eine Ungültig-Cache-Line 106 geschrieben, sofern eine solche verfügbar ist. Ansonsten kann zuerst eine gültige Cache-Line 106 aus dem Cache-Speicher 104 „geräumt" oder entfernt werden, um Platz für die neuen Daten bereitzustellen. In diesem Fall wird die betreffende Cache-Line (zumindest vorübergehend) in den Ungültig-Zustand 202 zurückversetzt. Im Allgemeinen können Cache-Lines 106 in dem Gemeinschaftlich-Zustand 204 und in dem Exklusiv-Zustand 206 zu jedem beliebigen Zeitpunkt geräumt werden, wohingegen Cache-Lines 106 in dem Eigen-Zustand 208 und dem Modifiziert-Zustand 210 in den Hauptspeicher zurückgeschrieben werden, der eine veraltete Kopie dieser Daten hält.
  • Bei einer Implementierung kann eine derartige Leseoperation von dem Hauptspeicher in den Cache-Speicher 104 gemäß entweder einem „Gemeinschaftlich-Modus" oder einem „Exklusiv-Modus" durchgeführt werden. Gemäß dem Gemeinschaftlich-Modus tritt die Cache-Line 106, die die neuen Daten empfängt, oft in den Gemeinschaftlich-Zustand 204 ein. Der Gemeinschaftlich-Modus kann verwendet werden, wenn der dem Cache-Speicher 104 zugeordnete Prozessor kein kurzzeitiges Bedürfnis zum Ändern der Daten aufweist, oder wenn eine Kopie der Line bereits in einem anderen Cache-Speicher gespeichert ist. Wenn stattdessen der Prozessor plant, einen neuen Wert für die cache-gespeicherten Daten zu schreiben, können die Daten unter dem Exklusiv-Modus von dem Hauptspeicher gelesen werden, was ermöglicht, dass die Cache-Line 106, die die Daten empfängt, den Exklusiv-Status 206 erlangt. Gemäß dem Exklusiv-Modus wird im Allgemeinen die jedem der verbleibenden Cache-Speicher 104 zugeordnete Cache-Steuerung 102 darauf aufmerksam gemacht, dass der Exklusiv-Modus durch die anfordernde Cache-Steuerung 102 initiiert wird.
  • Dieser Umstand, dass eine Cache-Steuerung 102 über die Operationen einer anderen informiert wird, findet bei einem Beispiel mittels „Belauschen" oder Überwachen einer durch die anderen Cache-Steuerungen 102 eingeleiteten Busaktivität statt. In anderen Fällen ergreift eine Cache-Steuerung 102 die Initiative, um die anderen Steuerungen 102 über ihre Aktivitäten zu informieren oder um eine Aktion durch die anderen Steuerungen 102 anzufordern, und zwar mittels „Rundsendungs"-Nachrichten. Bei manchen Ausführungsbeispielen wird eine Mischung aus Belauschungsanforderungen und Rundsendungsnachrichten eingesetzt, da manchen Situationen am besten durch das eine oder das andere Genüge geleistet wird, abhängig von der bestimmten durchzuführenden Operation. Bei einem anderen Beispiel kann ein in einem Hauptspei cher oder einem anderen Speicher gespeichertes Cache-Kohärenzverzeichnis, auf das im Allgemeinen jede Cache-Steuerung 102 zugreifen kann, sämtliche Informationen fassen, die nötig sind, um eine Cache-Kohärenz aufrechtzuerhalten.
  • Zum Beispiel kann die Cache-Steuerung 102 Lesezugriffe belauschen, um zu bestimmen, ob eine andere Cache-Steuerung 102 versucht, Daten von dem Hauptspeicher zu lesen, die sich in einer Modifiziert-Cache-Line 106 ihres zugeordneten Cache-Speichers 104 befinden. Ist dies der Fall, obliegt der Cache-Speicherung 102 oft die Verantwortung, diese bestimmte Leseoperation abzufangen, so dass die Cache-Speicherung 102 die Daten in der Modifiziert-Cache-Line 106 zurück in den Hauptspeicher schreiben kann. Gemäß diesem Szenario wird die Cache-Line 106 auf den Gemeinschaftlich-Zustand 204 oder den Ungültig-Zustand 202 degradiert.
  • Bei einem weiteren Beispiel fordert die Cache-Steuerung 102 unter Umständen ein Schreiben in eine Cache-Line 106 an, die sie derzeit in dem Gemeinschaftlich-Zustand 204 hält. Zu diesem Zweck muss die Cache-Steuerung 102 die Line 106 in den Exklusiv-Zustand 206 oder den Eigen-Zustand 208 befördern. Vor der Beförderung in den Exklusiv-Zustand 206 kann die Cache-Steuerung 102 eine „Für-ungültig-Erklärungs"-Rundsendung an andere Cache-Steuerungen 102 ausgeben, so dass dieselben ihre entsprechende Cache-Line 106 in den Ungültig-Zustand 202 degradieren können.
  • Gemäß einem weiteren Szenario kann die Cache-Steuerung 102, die eine oder mehrere Cache-Lines 106 in dem Exklusiv-Zustand 206 hält, Leseoperationen von den anderen Steuerungen 102 zu dem Hauptspeicher belauschen. Betrifft eine dieser Leseoperationen eine der Exklusiv-Cache-Lines 106, degradiert die Steuerung 102 in der Regel diese Cache-Line 106 auf den Gemeinschaftlich-Zustand 204. Andere Beispiele von Operationen in einem Cache-Speicher 104 und seiner Steuerung 102, die Zustandsveränderungen von Cache-Lines 106 in den Cache-Speicher 104 und anderen Cache-Speichern 104 bewirken, bestehen.
  • Während die vorangehende Erörterung sich hauptsächlich auf einen MOESI-Cache-Speicher konzentriert, werden oft auch andere Cache-Kohärenzprotokolle verwendet, die einen Teilsatz der in 2 gezeigten Zustände 200 verwenden. Beispielsweise können bei anderen Ausführungsbeispielen der Erfindung ein MSI-Protokoll (MSI = Modified-Shared-Invalid Modifiziert-Gemeinschaftlich-Ungültig), ein MESI-Protokoll (MESI = Modified-Exclusive-Shared-Invalid = Modifiziert-Exklusiv-Gemeinschaftlich-Ungültig) oder ein MOSI-Protokoll (MOSI = Modified-Owned-Shared-Invalid = Modifiziert-Eigen-Gemeinschaftlich-Ungültig) eingegliedert werden, was einen einfacheren Entwurf für die Cache-Speicherung 102 zur Folge hat, dies jedoch möglicherweise auf Kosten einer weniger effizienten Arbeitsweise verglichen mit dem MOESI-Protokoll. Zum Beispiel lässt der Eigen-Zustand 208 des MOESI-Protokolls zu, dass eine Cache-Steuerung 102 ein Zurückschreiben jeglicher Modifizierungen, die sie an dieser Cache-Line 106 vornimmt, verzögert, während es zulässt, dass andere Cache-Speicher 104 diese Daten gemeinschaftlich verwenden. In ähnlicher Weise lässt der Exklusiv-Zustand 206 der MOESI- und MESI-Protokolle zu, dass eine Cache-Steuerung 102 eine Exklusiv-Cache-Line 106 modifiziert, ohne zuerst andere Kopien dieser in anderen Cache-Speichern 104 gehaltenen Daten zu für ungültig zu erklären.
  • Jegliches dieser Cache-Kohärenzprotokolle kann in verschiedenen Ausführungsbeispielen der Erfindung, wie bei einem Verfahren 300 zum Bereitstellen eines Transaktionsspeichers, das in dem Flussdiagramm der 3 dargestellt ist, eingesetzt werden. Das Verfahren 300 ist hierin mit Bezug auf das Cache-Speichersystem 100 der 1 beschrieben, obwohl auch andere Cache-Speichersystemkonfigurationen in anderen Ausführungsbeispielen verwendet werden können. In dem Verfahren 300 auferlegt die Cache-Steuerung 102 dem Cache-Speicher 104, der Cache-Lines 106 aufweist, ein Cache-Kohärenzprotokoll, wobei jede der Cache-Lines 106 sich in einem der Zustände 200 der 2 befindet (d. h. in dem Ungültig-Zustand 202, dem Gemeinschaftlich-Zustand 204, dem Exklusiv-Zustand 206, dem Eigen-Zustand 208 oder dem Modifiziert-Zustand 210) (Operation 302). Somit kann jedes beliebige der im Vorhergehenden beschriebenen Protokolle (d. h. MOESI, MESI, MOSI oder MSI) oder möglicherweise auch andere, die diese Zustände einsetzen, in Kraft gesetzt werden.
  • Wenn der dem Cache-Speicher 104 zugeordnete Prozessor eine Transaktion einleitet, die zumindest eine der Cache-Lines 106 betrifft, stellt die Cache-Steuerung 102 sicher, dass sich jede der Cache-Lines 106 in entweder dem Gemeinschaftlich-Zustand 204 oder dem Ungültig-Zustand 202 befindet (Operation 304). Somit degradiert bei einem Ausführungsbeispiel die Cache-Steuerung 102 jegliche der Cache-Lines 106 in dem Modifiziert-Zustand 210, dem Eigen-Zustand 208 oder dem Exklusiv-Zustand 206. Im Fall des Modifiziert-Zustands 210 oder des Eigen-Zustands 208 kann die Cache-Steuerung 102 die Daten in den Cache-Lines 106 entfernen oder zurückschreiben, um die entsprechenden Orte in dem Hauptspeicher zu aktualisieren.
  • Während der Transaktion kann eine externe Anforderung (d. h., eine Anforderung, die nicht durch die Transaktion veranlasst ist) nach einer beliebigen der Cache-Lines 106 in dem Modifiziert-Zustand 210, dem Eigen-Zustand 208 oder dem Exklusiv-Zustand 206 (Operation 306) stattfinden, was somit eine Degradierung der betreffenden Cache-Line 106 erforderlich macht. Zum Beispiel versucht unter Umständen ein anderer Prozessor, der nicht unmittelbar mit dem Cache-Speicher 104 gekoppelt ist, Daten von dem Hauptspeicher zu lesen, die in einer der Cache-Lines 106 in einem dieser Modi cache-gespeichert sind. Somit kann die Cache-Steuerung 102 den Leseversuch mittels einer Belauschungsanforderung erfassen. Bei einem weiteren Beispiel kann die externe Anforderung ein Kapazitätsfehler aufgrund einer Erschöpfung von freiem Raum in dem Cache-Speicher 104 sein, was somit ein Räumen einer der Cache-Lines 106 erforderlich macht. Demzufolge erklärt die Cache-Steuerung 102 jede der Cache-Lines 106 in dem Modifiziert-Zustand 210 oder dem Eigen-Zustand 208 für ungültig (d. h. degradiert dieselben auf den Ungültig-Zustand 202), ohne die Cache-Line 106 in den Hauptspeicher zu schreiben (Operation 308). Ferner degradiert die Cache-Steuerung 102 jede erste Cache-Line 106 in dem Exklusiv-Zustand 206 entweder auf den Gemeinschaftlich-Zustand 204 oder den Ungültig-Zustand 202 Operation 310). Schließlich wird die Transaktion abgebrochen (Operation 312), Läuft die Transaktion erfolgreich ohne einen Abbruch ab, fährt die Cache-Steuerung 102 fort, den Cache-Speicher 104 gemäß den normalen Cache-Kohärenzprotokollregeln zu betreiben.
  • Somit verwendet gemäß verschiedenen möglichen Ausführungsbeispielen des Verfahrens 300 die Cache-Steuerung 102 den Cache-Speicher 104 in Verbindung mit den Cache-Kohärenzrichtlinien im Wesentlichen zum Verzögern eines Zurückschreibens jeglicher Veränderungen an Daten in den Cache-Lines 106 während der Transaktion zumindest, bis die Transaktion abgeschlossen ist.
  • Bei einem Ausführungsbeispiel hält eine durch den Prozessor ausgeführte Software einen einzigen Transaktionszustand für den gesamten Cache-Speicher 104 aufrecht. In diesem Fall zeigt der Prozessor durch Einstellen des Transaktionszustands der Cache-Steuerung 102 die Einleitung einer Transaktion an. In ähnlicher Weise löscht der Prozessor den Transaktionszustand, falls die Cache-Steuerung 102 die Transaktion bis zu dem Zeitpunkt, zu dem der Prozessor die Transaktion abgeschlossen hat, nicht abgebrochen hat, um der Steuerung 102 diese Tatsache anzuzeigen. Wenn stattdessen die Cache-Steuerung 102 die Transaktion abbrechen muss, kann die Steuerung 102 eine Unterbrechung oder eine Software-Programmunterbrechung an den Prozessor ausgeben, um den Abbruch der Transaktion anzukündigen. In einer weiteren Implementierung kann ein Aussagebit einer oder mehrerer Prozessorinstruktionen gesetzt werden, um anzuzeigen, ob die Instruktionen auszuführen sind. Bei diesem Ausführungsbeispiel führt der dem Cache-Speicher 104 zugeordnete Prozessor lediglich jeweils eine Transaktion aus. In einer weiteren Implementierung können jeweils mehr als eine Transaktion ablaufen, wenn die Transaktionen gänzlich unabhängig sind, derart, dass eine Ausführung einer Transaktion keine Auswirkung auf durch die andere verarbeiteten Daten hat.
  • Bei einem weiteren Ausführungsbeispiel kann der Prozessor mehrere Transaktionen gleichzeitig verarbeiten, wobei er eine Datenunabhängigkeit zwischen den Transaktionen in Kraft setzt. 4 stellt ein Blockdiagramm bereit, das einen Satz 400 von Datenstrukturen veranschaulicht, die bei einem Ausführungsbeispiel einsetzbar sind, um Transaktionen auf einer Cache-Line-weisen Basis nachzuverfolgen. Im Besonderen umfassen die Datenstrukturen 400 einen Transaktionskennungsvektor (ID-Vektor; ID = transaction identifier) Vektor 410, der im Allgemeinen dem Cache-Speicher 104 zugeordnet ist. Bei dem bestimmten Ausführungsbeispiel der 4 stellt jedes Bit 412 des Vektors 410 eine bestimmte Transaktions-ID dar. Somit zeigt ein Setzen eines bestimmten Transaktions-ID-Bits 412 an, dass die gekennzeichnete Transaktion derzeit aktiv ist. Somit ist die Anzahl von Transaktionen, die zu einem beliebigen Zeitpunkt möglicherweise aktiv sind, gleich der Anzahl von Bits 412 in dem Transaktions-ID-Vektor 410.
  • Die Datenstrukturen 400 umfassen auch ein Transaktions-ID-Feld 416, das sich darin befindet, wobei jeder Cache-Line 106 des Cache-Speichers 104 ein Cache-Line-Statusvektor 414 zugeordnet ist. Der Cache-Line-Statusvektor 414 kann andere Statusinformationen für seine entsprechende Cache-Line 106 umfassen, wie z. B. den aktuellen Cache-Kohärenzzustand 200 der Cachezeile, sowie auch eine Cachemarkierung für die Line 106, die anzeigt, welche Daten von dem Hauptspeicher in der Line 106 gespeichert sind. Bei dem spezifischen Ausführungsbeispiel der 4 stellt das Transaktions-ID-Feld 416 einen binär codierten Wert der Transaktions-ID bereit, dem die Cache-Line 106 zugeordnet ist. Somit ist jede Cache-Line 106 jeweils höchstens einer Transaktion zugeordnet. Ist das Transaktions-ID-Feld 416 null, ist die Cache-Line 106 keiner Transaktion zugeordnet.
  • 5 veranschaulicht ein Verfahren 500 zum Bereitstellen eines Transaktionsspeichers unter Annahme der Verwendung der Datenstrukturen 400 der 4 in dem Cache-Speichersystem der 1. Bei einem Ausführungsbeispiel beginnt eine Transaktion mit einem Zuordnen der Transaktion einer Transaktions-ID (Operation 502) und einem Setzen des entsprechenden Transaktions-ID-Bits 412 in dem Transaktions-ID-Vektor 410 (Operation 504). Jede der an der Transaktion beteiligten Cache-Lines 106 ist in dem Transaktions-ID-Feld 416 der entsprechenden Cache-Line-Statusvektoren 414 mit der Transaktions-ID markiert (Operation 506).
  • Jede Transaktion wird dann wie im Vorhergehenden beschrieben verarbeitet, wobei lediglich die der Transaktions-ID zugeordneten Cache-Lines 106 beteiligt sind. Zum Beispiel wird gewährleistet, folgend auf eine Einleitung der Transaktion, dass jede der der Transaktions-ID zugeordneten Cache-Lines 106 sich entweder in dem Ungültig-Zustand 202 oder dem Gemeinschaftlich-Zustand 204 befindet (Operation 508); der Zustand 200 der anderen Cache-Lines 106 in dem Cache-Speicher 104 muss nicht modifiziert werden.
  • Während der Transaktion kann eine externe Anforderung nach einer beliebigen der Cache-Lines 106 mit derselben Transaktions-ID in dem Modifiziert-Zustand 210, dem Eigen-Zustand 208 oder dem Exklusiv-Zustand 206 stattfinden (Operation 510), was eine Degradierung der angeforderten Cache-Line 106 erforderlich macht. Darauf ansprechend kann die Cache-Steuerung 102 jede der Cache-Lines 106 mit dieser Transak tions-ID in dem Modifiziert-Zustand 210 oder dem Eigen-Zustand 208 für ungültig erklären (d. h. auf den Ungültig-Zustand 202 degradieren), ohne den Inhalt dieser Cache-Lines 106 in den Hauptspeicher zurückzuschreiben (Operation 512). Wie vorher, versucht unter Umständen ein weiterer, mit dem Cache-Speicher 104 nicht unmittelbar gekoppelter Prozessor, Daten von dem Hauptspeicher zu lesen, die in einer der Cache-Lines 106 in einem dieser Modi gespeichert sind. Mit anderen Worten, die Cache-Steuerung 102 kann den Leseversuch durch den anderen Prozessor erfassen oder belauschen. Ferner kann eine auf demselben Prozessor durchgeführte andere Transaktion ebenfalls die durch die Cache-Steuerung 102 erfasste Anforderung stellen. Alternativ kann die externe Anforderung wie im Vorhergehenden beschrieben ein Kapazitätsfehler sein. Auch kann die Cache-Steuerung 102 ansprechend auf die externe Anforderung jede dieser Cache-Lines 106 in dem Exklusiv-Zustand 206 oder dem Gemeinschaftlich-Zustand 204 oder dem Ungültig-Zustand 202 degradieren (Operation 514). Die Cache-Steuerung 102 bricht dann die durch die Transaktions-ID gekennzeichnete Transaktion ab (Operation 516). Dazu kann die Cache-Steuerung 102 eine Unterbrechung an den Prozessor ausgeben, zusammen mit der Transaktions-ID der Transaktion, die abgebrochen wird. Software-Programmunterbrechungen oder Aussagebits können bei anderen Ausführungsbeispielen zu ähnlichen Zwecken eingesetzt werden. Ansonsten fährt die Cache-Steuerung 102, wenn die Transaktion erfolgreich abläuft, fort, den Cache-Speicher 104 gemäß den normalen Cache-Kohärenzprotokollregeln zu betreiben.
  • Unabhängig davon, ob die Transaktion erfolgreich abgeschlossen oder abgebrochen wird, wird das zugeordnete Transaktions-ID-Bit 412 des Transaktions-ID-Vektors 410 gelöscht (Operation 518). Demgemäß löscht die Cache-Steuerung 102 das Transaktions-ID-Feld 416 des Cache-Line-Statusvektors 412 für jede dieser bestimmten Transaktions-ID zugeordnete Cache-Line 106 (Operation 520).
  • Wie im Vorhergehenden beschrieben, verwenden verschiedene Ausführungsbeispiele der vorliegenden Erfindung eine einem Cache-Speicher zugeordnete Steuerungslogik, um einen Transaktionsspeicher bereitzustellen, der in der Vergangenheit fast ausschließlich in Software implementiert wurde. Somit kann die Anwendung eines oder mehrerer dieser Ausführungsbeispiele die Entwicklungszeit und -kosten, die mit einem bloßen Software-Transaktionsspeicher einhergehen, wesentlich verringern und gleichzeitig durch Reduzieren des Mehraufwands, der normalerweise mit einem Transaktionsspeicher einhergeht, eine effizientere Lösung bereitstellen.
  • Auch wenn hierin verschiedene Ausführungsbeispiele der Erfindung erörtert wurden, sind auch andere Ausführungsbeispiele, die in dem Schutzbereich der Erfindung beinhaltet sind, möglich. Beispielsweise können, während manche Ausführungsbeispiele der Erfindung im Vorhergehenden hinsichtlich einer SMP-Rechensystemarchitektur beschrieben sind, andere Systeme, die Mehrfachverarbeitungssysteme und Mehrfach-Cache-Speicherungssysteme einsetzen, Nutzen aus anderen Ausführungsbeispielen der Erfindung ziehen. Ferner können andere Ausführungsbeispiele auf einen einzigen Prozessor angewendet werden, der mit einem Einfach-Cache-Speicherungssystem gekoppelt ist, das mehrere Prozesse oder Stränge und somit mehrere Transaktionen ausführt. Auch können Aspekte eines Ausführungsbeispiels mit denen alternativer Ausführungsbeispiele kombiniert werden, um weitere Implementierungen der vorliegenden Erfindung zu erzeugen. Somit sind, auch wenn die vorliegende Erfindung im Rahmen spezifischer Ausführungsbeispiele beschrieben wurde, derartige Beschreibungen zur Veranschaulichung und nicht zur Beschränkung vorgesehen. Demgemäß ist der maßgebende Schutzbereich der vorliegenden Erfindung lediglich durch die nachfolgenden Patentansprüche begrenzt.

Claims (21)

  1. Verfahren (300) zum Bereitstellen eines Transaktionsspeichers, das folgende Schritte aufweist: Auferlegen (302) eines Cache-Kohärenzprotokolls (200) auf einen Cache-Speicher, der erste Cache-Lines aufweist, wobei jede erste Cache-Line sich entweder in einem Modifiziert-Zustand (210), einem Eigen-Zustand (208), einem Exklusiv-Zustand (206), einem Gemeinschaftlich-Zustand (204) oder einem Ungültig-Zustand (202) befindet; auf eine Einleitung einer ersten Transaktion hin, die auf zumindest eine der ersten Cache-Lines zugreift, Gewährleisten (304), dass sich jede erste Cache-Line entweder in dem Gemeinschaftlich-Zustand (204) oder dem Ungültig-Zustand (202) befindet; und während der ersten Transaktion (306), ansprechend auf eine erste externe Anforderung nach einer beliebigen ersten Cache-Line in dem Modifiziert-Zustand (210), dem Eigen-Zustand (208) oder dem Exklusiv-Zustand (206): Für-ungültig-Erklären (308) jeder ersten Cache-Line in dem Modifiziert-Zustand (210) oder dem Eigen-Zustand (208), ohne die erste Cache-Line in einen Hauptspeicher zu schreiben; Degradieren (310) der ersten Cache-Line in dem Exklusiv-Zustand (206) auf entweder den Gemeinschaftlich-Zustand (204) oder den Ungültig-Zustand (202); und Abbrechen (312) der ersten Transaktion.
  2. Verfahren (300) gemäß Anspruch 1, bei dem das Gewährleisten (304), dass sich jede der ersten Cache-Lines in entweder dem Gemeinschaftlich-Zustand (204) oder dem Ungültig-Zustand (202) befindet, folgende Schritte aufweist: Entfernen jeder ersten Cache-Line in dem Modifiziert-Zustand (210) oder dem Eigen-Zustand (208) aus dem Cache-Speicher; und Degradieren jeder ersten Cache-Line in dem Exklusiv-Zustand (206) entweder auf den Gemeinschaftlich-Zustand (204) oder den Ungültig-Zustand (202).
  3. Verfahren (300) gemäß Anspruch 1 oder 2, bei dem die erste externe Anforderung entweder eine Belauschungsanforderung, die außerhalb der ersten Transaktion ihren Ursprung hat, oder einen Kapazitätsfehler aufweist.
  4. Verfahren (300) gemäß einem der Ansprüche 1 bis 3, das ferner folgende Schritte aufweist: Empfangen einer ersten Anzeige der Einleitung oder einer Vervollständigung der ersten Transaktion mittels eines Software-Transaktionszustands für den Cache-Speicher; und Anzeigen eines Abbruchs der ersten Transaktion.
  5. Verfahren (300) gemäß Anspruch 4, bei dem: das Anzeigen des Abbruchs der ersten Transaktion zumindest entweder ein Ausgeben einer Unterbrechung, ein Ausgeben einer Software-Programmunterbrechung oder ein Setzen eines Aussagebits aufweist.
  6. Verfahren (300) gemäß einem der Ansprüche 1 bis 5, das ferner folgende Schritte aufweist: Empfangen einer Anzeige einer Ausführung der ersten Transaktion mittels einer ersten Transaktionskennung, die den ersten Cache-Lines zugeordnet ist; Anzeigen eines Abbruchs der ersten Transaktion; Empfangen einer Anzeige einer Ausführung einer zweiten Transaktion, die auf zumindest eine der zweiten Cache-Lines des Cache-Speichers zugreift, mittels einer zweiten Transaktionskennung, die den zweiten Cache-Lines zugeordnet ist; und Anzeigen eines Abbruchs der zweiten Transaktion.
  7. Verfahren (300) gemäß Anspruch 6, bei dem: das Empfangen der Anzeige der Ausführung der ersten Transaktion ein Erfassen eines Setzens eines ersten Bits eines Transaktionskennungsvektors (410) und ein Erfassen eines Bestimmtwerdens eines Transaktionskennungsfelds (416) eines Cache-Line-Statusvektors (414) für jede der ersten Cache-Lines mit der ersten Transaktionskennung aufweist; und ein Empfangen der Anzeige der Ausführung der zweiten Transaktion ein Erfassen eines Setzens eines zweiten Bits des Transaktionskennungsvektors (410) und ein Erfassen eines Bestimmtwerdens des Transaktionskennungsfelds (416) des Cache-Line-Statusvektors (414) für jede der zweiten Cache-Lines mit der zweiten Transaktionskennung aufweist.
  8. Verfahren (300) gemäß Anspruch 6 oder 7, bei dem: das Anzeigen des Abbruchs der ersten Transaktion zumindest entweder ein Ausgeben einer ersten Unterbrechung, ein Ausgeben einer ersten Software-Programmunterbrechung oder ein Setzen eines ersten Aussagebits aufweist; und ein Anzeigen des Abbruchs der zweiten Transaktion zumindest entweder ein Ausgeben einer zweiten Unterbrechung, ein Ausgeben einer zweiten Software-Programmunterbrechung oder ein Setzen eines zweiten Aussagebits aufweist.
  9. Verfahren (300) gemäß einem der Ansprüche 6 bis 8, das ferner folgende Schritte aufweist: auf eine Einleitung der zweiten Transaktion hin, Gewährleisten, dass jede der zweiten Cache-Lines sich entweder in dem Gemeinschaftlich-Zustand (204) oder dem Ungültig-Zustand (202) befindet; und während der zweiten Transaktion, ansprechend auf eine zweite externe Anforderung nach einer beliebigen der zweiten Cache-Lines in dem Modifiziert-Zustand (210), dem Eigen-Zustand (208) oder dem Exklusiv-Zustand (206): Für-ungültig-Erklären (308) jeder der zweiten Cache-Lines in dem Modifiziert-Zustand (210) oder dem Eigen-Zustand (208), ohne die Cache-Line in den Hauptspeicher zu schreiben; Degradieren (310) jeder der zweiten Cache-Lines in dem Exklusiv-Zustand (206) auf entweder den Gemeinschaftlich-Zustand (204) oder den Ungültig-Zustand (202); und Abbrechen (312) der ersten Transaktion.
  10. Verfahren gemäß Anspruch 9, bei dem die zweite externe Anforderung entweder eine Belauschungsanforderung, die ihren Ursprung außerhalb der zweiten Transaktion hat, oder einen Kapazitätsfehler aufweist.
  11. Cache-Speichersystem (100) zum Bereitstellen eines Transaktionsspeichers, das folgende Merkmale aufweist: einen Cache-Speicher (104), der erste Cache-Lines (106) aufweist; und eine Cache-Steuerung (102), die konfiguriert ist zum: Auferlegen eines Cache-Kohärenzprotokolls (200) auf den Cache-Speicher (104), wobei sich jede erste Cache-Line (106) in entweder einem Modifiziert-Zustand (210), einem Eigen-Zustand (208), einem Exklusiv-Zustand (206), einem Gemeinschaftlich-Zustand (204) oder einem Ungültig-Zustand (202) befindet; auf eine Einleitung einer ersten Transaktion hin, die auf zumindest eine der ersten Cache-Lines (106) zugreift, Gewährleisten, dass sich jede erste Cache-Line (106) entweder in dem Gemeinschaftlich-Zustand (204) oder dem Ungültig-Zustand (202) befindet; und während der ersten Transaktion, ansprechend auf eine erste externe Anforderung nach einer beliebigen ersten Cache-Line (106) in dem Modifiziert-Zustand (210), dem Eigen-Zustand (208) oder dem Exklusiv-Zustand (206): Für-ungültig-Erklären jeder ersten Cache-Line (106) in dem Modifiziert-Zustand (210) oder dem Eigen-Zustand (208), ohne die erste Cache-Line in einen Hauptspeicher zu schreiben; Degradieren jeder ersten Cache-Line (106) in dem Exklusiv-Zustand (206) auf entweder den Gemeinschaftlich-Zustand (204) oder den Ungültig-Zustand (202); und Abbrechen der ersten Transaktion.
  12. Cache-Speichersystem (100) gemäß Anspruch 11, bei dem, um zu gewährleisten, dass sich jede der ersten Cache-Lines (106) in entweder dem Gemeinschaftlich-Zustand (204) oder dem Ungültig-Zustand (202) befindet, die Cache-Steuerung (102) konfiguriert ist zum: Entfernen jeder ersten Cache-Line in dem Modifiziert-Zustand (210) oder dem Eigen-Zustand (208) aus dem Cache-Speicher (104); und Degradieren jeder ersten Cache-Line (106) in dem Exklusiv-Zustand (206) auf entweder den Gemeinschaftlich-Zustand (204) oder den Ungültig-Zustand (202).
  13. Cache-Speichersystem (100) gemäß Anspruch 11 oder 12, bei dem die erste externe Anforderung entweder eine Belauschungsanforderung, die ihren Ursprung außerhalb der ersten Transaktion hat, oder einen Kapazitätsfehler aufweist.
  14. Cache-Speichersystem (100) gemäß einem der Ansprüche 11 bis 13, bei dem die Cache-Steuerung (102) ferner konfiguriert ist zum: Empfangen einer ersten Anzeige der Einleitung oder einer Vervollständigung der ersten Transaktion mittels eines Software-Transaktionszustands für den Cache-Speicher (104); und Anzeigen eines Abbruchs der ersten Transaktion.
  15. Cache-Speichersystem (100) gemäß Anspruch 14, bei dem die Cache-Steuerung (102) ferner konfiguriert ist zum: Anzeigen des Abbruchs der ersten Transaktion mittels zumindest entweder Ausgeben einer Unterbrechung, Ausgeben einer Software-Programmunterbrechung oder Setzen eines Aussagebits.
  16. Cache-Speichersystem (100) gemäß einem der Ansprüche 11 bis 15, bei dem die Cache-Steuerung (102) ferner konfiguriert ist zum: Empfangen einer Anzeige einer Ausführung der ersten Transaktion mittels einer ersten Transaktionskennung, die den ersten Cache-Lines zugeordnet ist; Anzeigen eines Abbruchs der ersten Transaktion; Empfangen einer Anzeige einer Ausführung einer zweiten Transaktion, die auf zumindest eine der zweiten Cache-Lines des Cache-Speichers zugreift, mittels einer zweiten Transaktionskennung, die den zweiten Cache-Lines zugeordnet ist; und Anzeigen eines Abbruchs der zweiten Transaktion.
  17. Cache-Speichersystem (100) gemäß Anspruch 16, bei dem die Cache-Steuerung (102) ferner konfiguriert ist zum: Erfassen eines Setzens eines ersten Bits eines Transaktionskennungsvektors (410) und Erfassen eines Bestimmtwerdens eines Transaktionskennungsfelds (416) eines Cache-Line-Statusvektors (414) für jede der ersten Cache-Lines (106) mit der ersten Transaktionsken nung, um die Anzeige der Ausführung der ersten Transaktion zu empfangen; und Erfassen eines Setzens eines zweiten Bits des Transaktionskennungsvektors (410) und Erfassen eines Bestimmtwerdens des Transaktionskennungsfelds (416) des Cache-Line-Statusvektors (414) für jeder der zweiten Cache-Lines mit der zweiten Transaktionskennung, um die Anzeige der Ausführung der zweiten Transaktion zu empfangen.
  18. Cache-Speichersystem (100) gemäß Anspruch 16 oder 17, bei dem die Cache-Steuerung (102) ferner konfiguriert ist zum: Anzeigen des Abbruchs der ersten Transaktion mittels zumindest entweder Ausgeben einer ersten Unterbrechung, Ausgeben einer ersten Software-Programmunterbrechung oder Setzen eines ersten Aussagebits; und Anzeigen des Abbruchs der zweiten Transaktion mittels zumindest entweder Ausgeben einer zweiten Unterbrechung, Ausgeben einer zweiten Software-Programmunterbrechung oder Setzen eines zweiten Aussagebits.
  19. Cache-Speichersystem (100) gemäß einem der Ansprüche 16 bis 18, bei dem die Cache-Steuerung (102) ferner konfiguriert ist zum: folgend auf eine Einleitung der zweiten Transaktion, Gewährleisten, dass sich jede der zweiten Cache-Lines entweder in dem Gemeinschaftlich-Zustand (204) oder dem Ungültig-Zustand (202) befindet; und während der zweiten Transaktion, ansprechend auf eine zweite externe Anforderung nach einer beliebigen der zweiten Cache-Lines in dem Modifiziert-Zustand (210), dem Eigen-Zustand (208) oder dem Exklusiv-Zustand (206): Für-ungültig-Erklären (308) jeder der zweiten Cache-Lines in dem Modifiziert-Zustand (210) oder dem Eigen-Zustand (208), ohne die Cache-Line in den Hauptspeicher zu schreiben; Degradieren (310) jeder der zweiten Cache-Lines in dem Exklusiv-Zustand (206) auf entweder den Gemeinschaftlich-Zustand (204) oder den Ungültig-Zustand (202); und Abbrechen (312) der zweiten Transaktion.
  20. Cache-Speichersystem (100) gemäß Anspruch 19, bei dem die zweite externe Anforderung entweder eine Belauschungsanforderung, die ihren Ursprung außerhalb der zweiten Transaktion hat, oder einen Kapazitätsfehler aufweist.
  21. Cache-Speichersystem zum Bereitstellen eines Transaktionsspeichers, das folgende Merkmale aufweist: einen Cache-Speicher, der Cache-Lines aufweist; und eine Einrichtung zum Steuern des Cache-Speichers, um zumindest eine der Cache-Lines als den Transaktionsspeicher einzusetzen.
DE200710048507 2006-10-31 2007-10-10 Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers Active DE102007048507B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/554,672 2006-10-31
US11/554,672 US8924653B2 (en) 2006-10-31 2006-10-31 Transactional cache memory system

Publications (2)

Publication Number Publication Date
DE102007048507A1 true DE102007048507A1 (de) 2008-05-08
DE102007048507B4 DE102007048507B4 (de) 2014-07-17

Family

ID=39265108

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200710048507 Active DE102007048507B4 (de) 2006-10-31 2007-10-10 Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers

Country Status (3)

Country Link
US (1) US8924653B2 (de)
CN (1) CN101178692B (de)
DE (1) DE102007048507B4 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799582B2 (en) * 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8108621B2 (en) * 2009-05-27 2012-01-31 Via Technologies, Inc. Data cache with modified bit array
US8108624B2 (en) * 2009-05-27 2012-01-31 Via Technologies, Inc. Data cache with modified bit array
US8364906B2 (en) * 2009-11-09 2013-01-29 Via Technologies, Inc. Avoiding memory access latency by returning hit-modified when holding non-modified data
US9418016B2 (en) * 2010-12-21 2016-08-16 Intel Corporation Method and apparatus for optimizing the usage of cache memories
GB2491350B (en) 2011-05-27 2020-02-12 Advanced Risc Mach Ltd Store-exclusive instruction conflict resolution
US9229879B2 (en) * 2011-07-11 2016-01-05 Intel Corporation Power reduction using unmodified information in evicted cache lines
US9870384B2 (en) * 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction
US9244724B2 (en) * 2013-08-15 2016-01-26 Globalfoundries Inc. Management of transactional memory access requests by a cache memory
US10019354B2 (en) * 2013-12-09 2018-07-10 Intel Corporation Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory
WO2015122925A1 (en) * 2014-02-14 2015-08-20 Hewlett-Packard Development Company, L.P. Free flow assurance of atomicity of multiple updates in persistent memory
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US9971627B2 (en) 2014-03-26 2018-05-15 Intel Corporation Enabling maximum concurrency in a hybrid transactional memory system
CN104951240B (zh) 2014-03-26 2018-08-24 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
US9767063B2 (en) * 2015-03-04 2017-09-19 Qualcomm Incorporated Adaptive access control for hardware blocks
US10078589B2 (en) * 2015-04-30 2018-09-18 Arm Limited Enforcing data protection in an interconnect
CN107025130B (zh) 2016-01-29 2021-09-03 华为技术有限公司 处理节点、计算机系统及事务冲突检测方法
US20180074960A1 (en) * 2016-09-09 2018-03-15 Marvell World Trade Ltd. Multi-CPU Device with Tracking of Cache-Line Owner CPU
US10528519B2 (en) * 2017-05-02 2020-01-07 Mellanox Technologies Ltd. Computing in parallel processing environments
US11169921B2 (en) * 2019-05-09 2021-11-09 Hewlett Packard Enterprise Development Lp Ternary content addressable memory-enhanced cache coherency acceleration

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
US5897656A (en) * 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US6658536B1 (en) * 1997-04-14 2003-12-02 International Business Machines Corporation Cache-coherency protocol with recently read state for extending cache horizontally
US6374330B1 (en) * 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
US6360231B1 (en) * 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
US6374333B1 (en) * 1999-11-09 2002-04-16 International Business Machines Corporation Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention
US6477622B1 (en) * 2000-09-26 2002-11-05 Sun Microsystems, Inc. Simplified writeback handling
US6745297B2 (en) * 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US6775748B2 (en) * 2002-01-24 2004-08-10 Intel Corporation Methods and apparatus for transferring cache block ownership
KR100451211B1 (ko) * 2002-10-31 2004-10-13 엘지전자 주식회사 이동 컴퓨팅 환경에서 트랜잭션 캐시 일관성 유지 시스템및 방법
US8533401B2 (en) * 2002-12-30 2013-09-10 Intel Corporation Implementing direct access caches in coherent multiprocessors
US7234028B2 (en) * 2002-12-31 2007-06-19 Intel Corporation Power/performance optimized cache using memory write prevention through write snarfing
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
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory

Also Published As

Publication number Publication date
US20080104332A1 (en) 2008-05-01
DE102007048507B4 (de) 2014-07-17
US8924653B2 (en) 2014-12-30
CN101178692A (zh) 2008-05-14
CN101178692B (zh) 2011-08-03

Similar Documents

Publication Publication Date Title
DE102007048507B4 (de) Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE3856451T2 (de) Multiprozessor-Digitaldatenverarbeitungssystem
DE69703574T2 (de) Vorrichtung zur Prüfpunkterfassungsbeschleunigung
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE112011103433B4 (de) Verfahren, System und Programm zum Steuern von Cache-Kohärenz
DE69706934T2 (de) Rechnersystem mit Speicherung der Speicheraktualisierungsgeschichte
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE69628493T2 (de) Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
DE68924206T2 (de) Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen.
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE112005002180T5 (de) Lösen von Cachekonflikten
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE69708188T2 (de) Speichersteuerungseinheit
DE69222060T2 (de) Semaphore umgehung.
DE69615758T2 (de) Rechnersystem mit Speicherzustandsrückgewinnung
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE112019000629B4 (de) Koordination von cacheoperationen
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOU, US

Free format text: FORMER OWNER: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., HOUSTON, TEX., US

R082 Change of representative

Representative=s name: SCHOPPE, ZIMMERMANN, STOECKELER, ZINKLER, SCHE, DE

R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TEX., US

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB