-
HINTERGRUND
-
Gebiet:
-
Der hierin offenbarte Gegenstand bezieht sich auf Techniken zum Ausführen von Transaktionen unter Verwendung einer Speichervorrichtung.
-
Information:
-
In einigen Anwendungen mag es wünschenswert sein einen Satz an Anweisungen als eine einzelne Operation zu behandeln, das wird als eine Transaktion bezeichnet. Eine Transaktion kann zum Beispiel ein Anfangsereignis, das von einer Mehrzahl an Anweisungen oder Operatoren, die zu einem Schreiben auf einen Speicher führen können, gefolgt wird, und ein Abschlussereignis aufweisen. Eine Transaktion darf nicht teilweise abgeschlossen werden, sondern muss entweder komplett und erfolgreich ausgeführt sein, oder misslingen. Mit anderen Worten werden entweder alle oder keine der Anweisungen oder Operatoren einer Transaktion erfolgreich ausgeführt. Verwalten von Transaktionen kann eine relativ komplexe Aufgabe sein, die zum Beispiel eine relativ große Menge an Software-Overhead eines Betriebssystems einer Rechnerarchitektur umfasst. Es mag wünschenswert sein solchen Software-Overhead und solche Komplexität zu reduzieren.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Nichtbeschränkende und nichtabschließende Ausführungsformen werden beschrieben werden mit Bezug auf die folgenden Zeichnungen, wobei gleiche Bezugszeichen sich auf gleiche Teile über die verschiedenen Zeichnungen hinweg beziehen, so lange nicht anderweitig angegeben.
-
1 ist ein Zustandsdiagramm von Ereignissen gemäß eines Transaktionsprotokolls gemäß einer Ausführungsform.
-
2 ist ein Zustandsdiagramm von Transaktionen gemäß einer Ausführungsform.
-
3 ist ein Blockdiagramm, das ein Speichersubsystem gemäß einer Ausführungsform zeigt.
-
4 ist ein Flussdiagramm eines Transaktionsprozesses gemäß einer Ausführungsform.
-
5 ist ein schematisches Diagramm, das eine beispielhafte Ausführungsform eines Rechnersystems veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Der Bezug in dieser Beschreibung auf „eine Ausführungsform” bedeutet durchweg, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, die hier in Verbindung mit der Ausführungsform beschrieben ist, in zumindest einer Ausführungsform des beanspruchten Gegenstandes enthalten ist. Wenn daher der Ausdruck „in einer Ausführungsform” oder der Ausdruck „eine Ausführungsform” an verschiedenen Stellen in dieser Beschreibung auftritt, so bedeutet dies nicht notwendigerweise, dass alle diese sich auf dieselbe Ausführungsform beziehen. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen kombiniert werden.
-
In einer Ausführungsform können Techniken und/oder eine Architektur zum Ausführen einer oder mehrerer Transaktionen nützlich sein zum Reduzieren von Softwarekomplexität und/oder Speicher-Overhead eines Betriebssystems, zum Beispiel, durch Neuzuordnen eines physikalischen Speichers während eines Prozesses eines Ausführens der Transaktionen. Solche Transaktionen können einen Satz an Anweisungen oder Operatoren, die in einer atomaren Weise als eine einzelne Operation auszuführen sind, umfassen. Hier bezeichnet eine Transaktion, die in einer ”atomaren Weise” ausgeführt wird, eine Transaktion, die nicht teilweise abgeschlossen werden darf, sondern kann entweder komplett ausgeführt wird, oder die Transaktion misslingt, wobei der frühere Zustand intakt gelassen wird. Eine Transaktion kann zum Beispiel eine Mehrzahl an Anweisungen oder Operatoren zum Schreiben von bestimmter Information in einen Speicher aufweisen. Solch eine Transaktion kann ein Anfangsereignis und ein Abschlussereignis aufweisen, welches als ein ”Commit” bezeichnet wird. Wie gerade genannt, darf solch eine Transaktion nicht teilweise abgeschlossen werden, sondern muss entweder komplett und erfolgreich ausgeführt werden, oder misslingen. Mit anderen Worten werden entweder alle oder keine der Anweisungen oder Operatoren einer Transaktion erfolgreich ausgeführt.
-
Eine Ausführungsform kann ein Speichersubsystem aufweisen, das zumindest teilweise basierend auf einem Transaktionsprotokoll, das eine Transaktion definiert, arbeitet. Solch ein Transaktionsprotokoll kann zum Beispiel mit SQL, das eine in dem Stand der Technik bekannte Datenbank-Computersprache umfasst, assoziiert sein, obwohl der beanspruchte Gegenstand in dieser Weise nicht beschränkt ist. Solch eine Transaktion kann Anweisungen für ein Speichersubsystem enthalten, um zum Beispiel ein Startsignal und eine Serie von Schreiboperatoren gefolgt von einem Commit-Operator auszuführen. Solch ein Commit-Operator kann durch das Speichersubsystem ausgeführt werden, um eine Transaktion in einer atomaren Weise abzuschließen, so dass entweder alle oder keine der Schreiboperatoren ausgeführt werden. Solch ein Speichersubsystem kann mehrere unabhängige Transaktionen ausführen. In einer Implementierung kann ein Speichersubsystem eine oder mehrere Transaktionen unter Verwendung einer Neuzuordnungstabelle zum Zuordnen von Adressen auf Systemebene auf physikalische Speicheradressen ausführen. Zum Beispiel kann solch eine Transaktionslösung durch Wiederbeschreiben von Abschnitten einer Neuzuordnungstabelle ausgeführt werden in Antwort auf Empfangen eines Commit-Operators, wie unten im Detail beschrieben. In einer Implementierung kann ein Speichersubsystem als ein relationales Datenbanksubsystem agieren, welches ein zusätzliches Wissen einer Datenbankstruktur umfassen kann, das an eine Transaktionsmaschine zu übertragen ist. Solche zusätzliche Informationen kann zum Beispiel spezifizieren, welche Schlüssel eine Tabelle mit einer anderen verlinken, und spezifizieren von Felddefinitionen für solche Tabellen. In einer anderen Implementierung kann ein Speichersubsystem als ein Eingabe-Ausgabe(IO)-Subsystem agieren, das Transaktionen unterstützt. Solch ein Subsystem kann auf Sektoren operieren und hat kein Wissen darüber welche Information die Sektoren speichern. In diesem Falle kann eine relationale Datenbanksoftware die Datenbanktransaktionen verwalten und die Transaktionen in Transaktionen auf Sektorebene übersetzen.
-
In einer Implementierung können hierin beschriebene Techniken und/oder eine Architektur zum Ausführen einer oder mehrerer Transaktionen eine Systeminfrastruktur, die eine Speicher-Neuzuordnungsfähigkeit aufweist, benutzen. Relativ große Speichersubsysteme können zum Beispiel Software und/oder Hardware umfassen, durch welche Seiten oder Sektoren des Speichersubsystems neu zugeordnet werden zum Isolieren von defekten Speicherabschnitten und/oder zum Sicherstellen vergleichbarer Ebenen von Verschleiß über relativ große Abschnitte eines Speicherplatzes. Solche Software und/oder Hardware kann auch verwendet werden zum Durchführen von atomaren Transaktionen wie unten im Detail erklärt.
-
In einer spezifischen Ausführungsform kann ein Speichersubsystem zum Ausführen von Transaktionen in einer atomaren Weise unter Verwendung eines Transaktionsprotokolls wie oben genannt arbeiten. Solch ein Protokoll kann einzelne Transaktionsbefehle definieren, die Beginn-, Nutzdaten- und Endabschnitte aufweisen. Solch ein Protokoll kann mehreren simultanen Transaktionsbefehlen Platz bieten, während ein Zustand von Transaktionen an einen Host, der die Transaktionsbefehle initiierte, bereitgestellt wird. Solch ein Zustand kann zum Beispiel ”Transaktion A abgeschlossen”, ”Transaktion A nicht abgeschlossen”, ”Transaktion B nicht abgeschlossen”, usw. aufweisen. Nach Empfangen eines Anfangsabschnitts eines Transaktionsbefehls kann ein Speichersubsystems eine temporäre Kopie einer oder mehrerer Neuzuordnungstabellen erzeugen zu verwenden für das Durchführen der Transaktion. Da eine Transaktion nur einen kleinen Abschnitt einer Neuzuordnungstabelle beeinflussen kann, braucht das Speichersubsystem nur jene Abschnitte der Tabelle zu duplizieren, die während einer Durchführung der Transaktion zu ändern sind. Auch können, als ein Ergebnis vom Empfangen eines Beginn-Abschnitts einer Transaktion, Speicherabschnitte (z. B. Seiten und/oder Sektoren) in dem Speichersubsystem dupliziert werden. In einer Implementierung kann solch ein Duplikationsprozess ursprüngliche Abschnitte des Speichers intakt lassen, während Duplikate der Speicherabschnitte geändert werden, neue beschrieben und/oder manipuliert werden können. In einer anderen Implementierung kann solch ein Duplikationsprozess Duplikate der Speicherabschnitte intakt lassen, während ursprüngliche Abschnitte des Speichers geändert werden, neu geschrieben und/oder manipuliert werden können. Einzelne Operatoren eines Transaktionsbefehls können genauso zu Änderungen, neuen Beschreibungen und/oder anderer solcher Manipulation von ursprünglichen oder temporären Kopien von Neuzuordnungstabellen führen. Nach Empfangen eines Ende- oder Commit-Abschnitts eines Transaktionsbefehls, kann ein Speichersubsystem sicherstellen, dass alle Operatoren, die in einem Transaktionsbefehl enthalten sind, erfolgreich abgeschlossen werden, und, dass temporäre Kopien der Neuzuordnungstabellen intakt sind. Falls erfolgreich abgeschlossen, kann ein Register gesetzt werden, um anzugeben, dass temporäre Kopien der Neuzuordnungstabellen in eine Master-Neuzuordnungstabelle hinein zu konsolidieren sind. Zum Beispiel kann Information, die in den temporären Kopien der Neuzuordnungstabellen enthalten ist, in eine Master-Neuzuordnungstabelle nach solch einer Konsolidierung enthalten sein. Ein Setzen solch eines Registers kann eine Transaktion abschließen. Solche temporären Kopien von Neuzuordnungstabellen brauchen keine kompletten Kopien der Master-Neuzuordnungstabelle sein. Temporäre Kopien können zum Beispiel nur Abschnitte der Master-Neuzuordnungstabelle repräsentieren, die Änderungen bezüglich der vorliegenden Transaktion aufweisen. In einer Implementierung brauchen temporäre Kopien von Neuzuordnungstabellen nicht erzeugt werden. Stattdessen kann die Master-Neuzuordnungstabelle (geringfügig) erweitert werden, um Bits zu enthalten, die angeben, dass Abschnitte der Neuzuordnungstabelle in spezifischen Transaktionen involviert sind. Solche spezifischen Abschnitte können behandelt werden wie Abschnitte von unvollständigen Transaktionsoperationen bis die Transaktion 'committet' wird, bei welchem Punkt solche erweiterten Abschnitte der Neuzuordnungstabelle als permanente Aufzeichnungen der Master-Neuzuordnungstabelle behandelt werden können.
-
In einer Implementierung, kann ein Speichersubsystem, das in der Lage ist mehrere Transaktionsbefehle zu bearbeiten, in der Lage sein zum Kreieren und/oder Manipulieren mehrerer temporärer Kopien von Abschnitten einer Master-Neuzuordnungstabelle wie oben beschrieben. In einem Fall, wo simultan aktive Transaktionen erlaubt sind zum Einwirken auf einen gemeinsamen Untersatz von Speicherseiten, kann ein Speichersubsystem eine Spur einer Reihenfolge verfolgen, in welcher Transaktionen zu verarbeiten sind. Selbstverständlich sind Details solch eines Speichersubsystems nur Beispiele und der beanspruchte Gegenstand ist in dieser Weise nicht beschränkt.
-
In einer spezifischen Implementierung kann ein Verfahren zum Durchführen einer Transaktion ein Empfangen einer Transaktionsanforderung, mehrere Transaktionsoperatoren, und/oder ein Transaktion-Commit wie oben diskutiert aufweisen. Zum Beispiel kann eine Speichersteuereinheit aufweisend eine Schaltung und/oder Software solch eine Transaktionsanforderung von einem Host empfangen. In einer Implementierung kann solch eine Speichersteuereinheit eine Kopie eines Abschnitts von Inhalt eines Speichers in einer Speichervorrichtung (welche die Speichersteuereinheit auch enthalten kann oder nicht) in Antwort auf ein Empfangen einer Transaktionsanforderung von einem Host oder einer anderen Einheit. Solch eine Kopie kann ein Aufbewahren von Originalinhalt ermöglichen, der in einem Speicher gespeichert wird für den Fall, dass eine Transaktion misslingt. Zum Beispiel kann ein Transaktionsbefehl eine Mehrzahl an Operatoren enthalten zum Schreiben auf einen spezifischen Speicherabschnitt, welcher bereits die spezifische gespeicherte Information enthalten kann. Somit können Schreiboperatoren des Transaktionsbefehls die gespeicherte Information des spezifischen Speicherabschnitt ”überschreiben” (z. B. neuschreiben oder eine Löschen-Schreiben-Operatorensequenz, abhängig zumindest teilweise von der Art des verwendeten Speichers). Falls die Transaktion misslingt nachdem sogar ein Abschnitt von solchen Schreib-Operatoren ausgeführt worden ist, dann kann ursprünglich gespeicherte Information verloren sein. Jedoch kann ein Vorhandensein einer Kopie der ursprünglich gespeicherten Information einen Weg bereitstellen zum Wiederherstellen solch ursprünglich gespeicherter Information. Dementsprechend kann einer oder können mehrere Speicherabschnitte, die durch einen Transaktionsbefehl beeinflusst werden können, kopiert werden vor einem Ausführen von Operatoren des Transaktionsbefehls.
-
Wie oben genannt kann eine Steuereinheit Information von Kopien von Speicher in Antwort auf ein Empfangen eines oder mehrerer Transaktionsoperatoren eines Transaktionsbefehls modifizieren. Insbesondere kann der ursprüngliche Speicher intakt und nicht durch die Transaktionsoperatoren modifiziert gelassen werden. In einer Implementierung kann ein Speichersubsystem auf Sektoren von Speicher arbeiten. In solch einem Fall kann es möglich sein eher einen neuen leeren Sektor zuzuordnen als von ursprünglichen Speicher, wie oben beschrieben, zu kopieren. Sektoren können komplett neu beschrieben werden nachdem sie aktualisiert werden. Dementsprechend kann das Speichersubsystem kompletten Inhalt eines Sektors, der zu modifizieren ist, empfangen, dadurch wird ein Bedarf zum Kopieren von ursprünglichen Inhalt von Speicher vermieden.
-
Ein Transaktionsbefehl kann indiziert werden durch ein Betriebssystem, oder einen Prozessor einer Rechenvorrichtung, oder einer anderen solch dienenden Einheit. Zum Beispiel können Schreiboperatoren des Transaktionsbefehls zu einem Neuschreiben von Inhalt der Speicherkopien führen. In einer Implementierung kann die Steuereinheit eine temporäre Neuzuordnungstabelle unterhalten, um auf einen physikalischen Ort in dem Speicher zu zeigen, wo eine oder mehrere Kopien angeordnet sind. Solch eine temporäre Neuzuordnungstabelle kann modifiziert werden in Antwort auf ein Empfangen einer oder mehrerer Transaktionsoperatoren von einem Host. Zum Beispiel können solche Transaktionsoperatoren zu einer Neuzuordnung von Speicherkopien führen. Somit kann eine temporäre Neuzuordnungstabelle modifiziert werden, um solche Neuzuordnung zu verfolgen. In einer Implementierung kann eine Speichersteuereinheit simultan eine oder mehrere zusätzliche temporäre Neuzuordnungstabellen unterhalten, die mit einem oder mehreren zusätzlichen Transaktionsbefehlen korrespondieren. Zum Beispiel kann ein simultanes Unterhalten mehrerer temporärer Neuzuordnungstabellen eine Speichersteuereinheit in die Lage versetzen zum Durchführen mehrerer Transaktionen.
-
In einer Ausführungsform kann eine Speichersteuereinheit zusätzlich zum Unterhalten einer oder mehrerer temporärer Neuzuordnungstabellen eine Master-Neuzuordnungstabelle unterhalten, um auf physikalische Orte in dem Speicher zu zeigen. Solch eine Master-Neuzuordnungstabelle kann zumindest teilweise basierend auf Inhalt von einer oder mehreren temporären Neuzuordnungstabellen modifiziert werden. Solch eine Modifikation einer Master-Neuzuordnungstabelle kann in Folge auf ein Empfangen eines Commit-Abschnitts eines Transaktionsbefehls ausgeführt werden. Jedoch kann ein Modifizieren einer Master-Neuzuordnungstabelle zumindest teilweise basiert sein darauf, ob die Transaktion erfolgreich war oder misslang. Zum Beispiel kann, falls die Aktion erfolgreich war, dann Inhalt von modifizierten Kopien von Speicher, wie oben diskutiert, verwendet werden zum Überschreiben von ursprünglichen Inhalt von Speicher (von welchem die modifizierten Kopien abstammen). Ebenso kann eine Master-Neuzuordnungstabelle modifiziert werden, um die Tatsache wieder zu spiegeln, dass Inhalt von modifizierten Kopien jetzt zum Beispiel aktuell an dem ursprünglichen Speicherort gespeichert werden kann. Andererseits, falls die Transaktion nicht erfolgreich war, kann dann Inhalt von modifizierten Kopien von Speicher verworfen werden in dem Sinne, dass solcher Inhalt nicht verwendet wird und kann überschrieben oder gelöscht werden. Das ist deshalb, weil Daten oder Informationen, die als ein Ergebnis eines Ausführens einer Transaktion modifiziert werden, nicht aufbewahrt werden müssen, falls die Transaktion misslang. Stattdessen sind Daten oder Informationen ”zurückzugeben” zu ihrem ursprünglichen Inhalt. Wie oben erläutert erlauben kopierte Speicherabschnitte solch ein Zurückgeben von ursprünglichen Inhalt, da solche Kopien modifiziert werden, während ursprüngliche Speicherabschnitte während Transaktionen unverändert gelassen werden (z. B. aufbewahrt). Auch kann eine Master-Neuzuordnungstabelle modifiziert werden, um die Tatsache widerzuspiegeln, dass Inhalt von modifizierten Kopien nicht zu verwenden sind, wohingegen zum Beispiel aktuell gespeicherter Inhalt an ursprünglichen Speicherorten stattdessen zu verwenden ist.
-
In einer spezifischen Implementierung, welche nicht mit Transaktionsprozessen involviert werden braucht, kann solch eine Master-Neuzuordnungstabelle auch verwendet werden für Speicher-Verschleißausgleichsoperationen und/oder für Defekt-Speicherersatz-Operationen. Zum Beispiel kann eine Master-Neuzuordnungstabelle Information bezüglich Speicherblöcken unterhalten, die neu zugeordnet werden wegen defekten Blöcken und/oder extensiv genutzten Blöcken eines Speicherfelds. Somit kann eine Master-Neuzuordnungstabelle befasst sein mit mehreren Verwendungen: zum Beispiel Verschleiß ausgleichen oder Defektblockverwaltung und/oder Transaktionen.
-
1 ist ein Zustandsdiagramm von Ereignissen gemäß eines Transaktionsprotokolls gemäß einer Ausführungsform. Zum Beispiel kann eine Speichersteuereinheit zum Ausführen einer Transaktion zumindest teilweise basiert auf solch einem Transaktionsprotokoll arbeiten. In solch einem Transaktionsprotokoll kann ein Host eine Transaktion initiieren durch Bereitstellen eines Transaktionsbefehls 100 an ein Speichersubsystem 150. Solch ein Transaktionsbefehl kann einen Beginn-Abschnitt 110, einen Nutzdatenabschnitt 120, einen Zurückspulenabschnitt 135 und einen Ende-Abschnitt 130 aufweisen. Der Nutzdatenabschnitt 120 kann eine Mehrzahl von N Operatoren enthalten, die zum Beispiel mit Operator ”o” beginnen und mit Operator ”N” enden. Wie oben genannt, kann der Ende-Abschnitt 130 ein Transaktions-Commit aufweisen zum Abschließen einer Transaktion. Der Zurückspulenabschnitt kann anstelle des Ende-Abschnitts 130 in einigen Fällen auftreten. Falls zum Beispiel der Zurückspulenabschnitt 135 statt dem Ende-Abschnitt 130 empfangen wird, können alle Operationen in dem Befehl 100 verworfen werden. In einer Implementierung kann das Speichersubsystem 150 eine Speichervorrichtung 155 enthalten zum Ausführen einer oder mehrerer Transaktionen. Ein Beispiel solch eines Speichersubsystems wird in weiteren Details in Beschreibungen zur 3 erklärt werden. Solch ein Speichersubsystem kann eine Benachrichtigung an den Host bereitstellen, dahingehend, ob die Transaktion erfolgreich abgeschlossen wurde oder misslungen ist. Zum Beispiel kann in Antwort auf ein erfolgreiches Abschließen aller Operatoren des Transaktionsbefehls 100, das Speichersubsystem 150 eine ”Abgeschlossen”-Benachrichtigung 140 an den Host bereitstellen. Selbstverständlich sind solche Details eines Transaktionsprotokolls nur Beispiele und der beanspruchte Gegenstand ist in dieser Weise nicht beschränkt.
-
2 ist ein Zustandsdiagramm gemäß einer Ausführungsform. Die Zeit schreitet vertikal abwärts in 2 voran. Solche Transaktionen wie oben genannt können durch einen Host oder ein System 200 initiiert werden und durch ein Speichersubsystem 210 ausgeführt werden. Zum Beispiel kann solch ein Host oder System 200 eine Rechnerplattform aufweisen, die Anwendungen durchführt, und das Speichersubsystem 210 kann eine oder mehrere Speichervorrichtungen aufweisen. Eine oder mehrere solcher Transaktionen können zeitgleich durchgeführt werden. Beispielhaft für eine einzelne Transaktion kann eine Transaktion o durch das System 200 beginnen, das einen Beginn-Abschnitt des Transaktionsbefehls für die Transaktion o bereitstellt. In Antwort darauf kann sich das Speichersubsystem 210 vorbereiten auf ein Empfangen und Durchführen nachfolgender Transaktionsoperatoren, wie etwa Operator A und Operator B. Wie oben erklärt kann solch eine Vorbereitung ein Erzeugen von Kopien von Abschnitten von Speicher aufweisen, welche durch die Operatoren A, B usw. beeinflusst werden können. Somit brauchen solche Operatoren nicht ursprünglichen Speicherinhalt zu modifizieren, welcher aufbewahrt wird im Fall, dass die Transaktion o misslingt. Nach Empfangen eines Ende-Abschnitts eines Transaktionsbefehls für die Transaktion o von dem System 200, kann das Speichersubsystem 210 bestimmen, ob die Transaktion o erfolgreich abgeschlossen wurde oder misslang. In jedem Fall kann das Speichersubsystem 210 das System 200 von solch einem Ergebnis informieren.
-
Beispielhaft für ein gleichzeitiges Durchführen von mehreren Transaktionen können Transaktionen 1 und 2 durch das System 200 beginnen, das einen Beginn-Abschnitt der Transaktionsbefehle für beide Transaktionen bereitstellt. In Antwort darauf kann sich das Speichersubsystem 210 vorbereiten auf ein Empfangen und Ausführen nachfolgender Transaktionsoperatoren wie etwa einen Operator A für beide Transaktionen. Wie oben erklärt kann solch eine Vorbereitung ein Erzeugen von Kopien von Abschnitten von Speicher aufweisen, welche durch die Operatoren beeinflusst werden. Somit brauchen solche Operatoren nicht ursprüngliche Speicherabschnitte zu modifizieren, und Information braucht nicht verloren zugehen im Fall, dass eine oder beide der Transaktionen 1 oder der 2 misslingen. Obwohl eine spezifische Reihenfolge in 2 dargestellt ist, können Operatoren oder mehrere Transaktionen in irgendeiner Reihenfolge ausgeführt werden. Zum Beispiel kann der Operator A eines Transaktionsbefehls für die Transaktion 1 ausgeführt werden vor dem Operator A eines Transaktionsbefehls für die Transaktion 2. Nach Empfangen eines Ende-Abschnitts eines Transaktionsbefehls für die Transaktion 1 von dem System 200, kann das Speichersubsystem 210 bestimmen, ob die Transaktion 1 erfolgreich abgeschlossen wurde oder misslang. In jedem Fall kann das Speichersubsystem 210 das System 200 über solches Ergebnis informieren. In gleicher Weise kann nach Empfangen eines Ende-Abschnitts der Transaktion 2 von dem System 200 das Speichersubsystem 210 bestimmen, ob die Transaktion 2 erfolgreich abgeschlossen wurde oder misslang. In jedem Fall kann das Speichersubsystem 210 das System 200 über solches Ergebnis informieren.
-
In einer Implementierung kann das Speichersubsystem 210 ein Register (nicht dargestellt), das Inhalt aufweist zum Bestimmen einer maximalen Anzahl von erlaubten Transaktionsoperatoren und/oder einer maximalen Größe eines Speicherabschnitts für eine oder mehrere Transaktionen, enthalten. Zum Beispiel kann solch ein Register Inhalt aufweisen zum Angeben, dass die Anzahl der Operatoren einer Transaktion begrenzt ist auf 500 solcher Operatoren. Als ein anderes Beispiel kann solch ein Register Inhalt aufweisen zum Angeben, dass die maximale Größe eines für eine spezifische Transaktion zu verwendenden Speicherabschnitts auf 100 Seiten oder Sektoren begrenzt ist. Selbstverständlich sind solche Details von Techniken, die beim Ausführen von Transaktionen involviert sind, nur Beispiele und der beanspruchte Gegenstand ist in dieser Weise nicht beschränkt.
-
3 ist ein Blockdiagramm, das ein Speichersubsystem 300 und einen Host 360 gemäß einer Ausführungsform zeigt. Zum Beispiel kann das Speichersubsystem 300 eine Speichervorrichtung aufweisen, die ein Speicherfeld und/oder eine Steuereinheit enthält, und der Host 360 kann einen Prozessor enthalten. Obwohl Pfeile in 3 eine Richtung angeben können, ist der beanspruchte Gegenstand nicht auf solch eine Richtung beschränkt. Wie oben diskutiert kann ein Transaktionsbefehl eine Transaktionsanforderung, einen oder mehrere Transaktionsoperatoren und/oder ein Transaktions-Commit enthalten. Eine Speichersteuereinheit zum Durchführen einer Transaktion kann eine Transaktionsmaschine 330 aufweisen. Solch eine Speichersteuereinheit kann einen Transaktionsbefehl von dem Host 360 zum Beispiel über eine Leitung oder einen Bus 305 empfangen. In einer Implementierung kann solch eine Speichersteuereinheit eine oder mehrere Kopien eines Abschnitts von Inhalt eines Speichers 350 in dem Speichersubsystem 300 herstellen in Antwort auf ein Empfangen eines Transaktionsbefehls von dem Host 360. Solche Speicherkopien können in einem Reservebereich 355 des Speichers 350 angeordnet sein, obwohl der beanspruchte Gegenstand in dieser Weise nicht beschränkt ist. Wie oben genannt, kann die Speichersteuereinheit Information von Kopien von Speicher in Antwort auf ein Empfangen des einen oder der mehreren Transaktionsoperatoren des Transaktionsbefehls modifizieren. Zum Beispiel können Schreiboperatoren des Transaktionsbefehls zu einem Neuschreiben von Inhalt der Speicherkopien führen. In einer Implementierung kann die Speichersteuereinheit eine oder mehrere temporäre Neuzuordnungstabellen 340 unterhalten, um auf einen physikalischen Ort in dem Speicher 350 zu zeigen, wie etwa dem Reservebereich 355, wo eine oder mehrere Kopien angeordnet sind. Solche temporäre Neuzuordnungstabellen 340 können modifiziert werden in Antwort auf ein Empfangen eines oder mehrerer Transaktionsoperatoren in einem Transaktionsbefehl. Zum Beispiel können solche Transaktionsoperatoren zu einem Neuzuordnen von Speicherkopien führen. Somit können temporäre Neuzuordnungstabellen 340 modifiziert werden, um solche Neuzuordnung zu verfolgen. Zusätzlich zu einem Unterhalten einer oder mehrerer temporärer Neuzuordnungstabellen, kann eine Speichersteuereinheit eine Master-Neuzuordnungstabelle 320 unterhalten, um auf physikalische Orte in dem Speicher 350 zu zeigen. Solch eine Master-Neuzuordnungstabelle kann durch die Transaktionsmaschine 330 zumindest teilweise basierend auf Inhalt der einen oder der mehreren temporären Neuzuordnungstabellen 340 modifiziert werden. Solch eine Modifikation der Master-Neuzuordnungstabelle 320 kann in Folge eines Empfangens eines Commit-Abschnitts eines Transaktionsbefehls ausgeführt werden. Jedoch kann eine Modifikation der Master-Neuzuordnungstabelle 320 teilweise basiert sein darauf, ob die Transaktion erfolgreich war oder misslang, wie oben erklärt.
-
4 ist ein Flussdiagramm eines Transaktionsprozesses 400 gemäß einer Ausführungsform. Bei Block 410 kann ein Speichersubsystem, das eine Speichersteuereinheit enthält, einen Transaktionsbefehl empfangen, der eine Transaktionsanforderung, einen oder mehrere Transaktionsoperatoren und/oder ein Transaktions-Commit wie oben diskutiert, enthält. Bei Block 420 kann solch eine Speichersteuereinheit eine Kopie eines Abschnitts von Inhalt eines Speichers in einer Speichervorrichtung herstellen. Solch eine Kopie kann ein Aufbewahren von ursprünglichem Inhalt, der in dem Speicher gespeichert ist, ermöglichen, für den Fall, dass eine Transaktion wie oben diskutiert misslingt. Bei Block 430 kann die Speichersteuereinheit Information von Kopien von Speicher modifizieren in Antwort auf ein Empfangen des einen oder der mehreren Transaktionsoperatoren des Transaktionsbefehls. Zum Beispiel können Schreiboperatoren des Transaktionsbefehls zu einem Neuschreiben von Inhalt der Speicherkopien führen. In einer Implementierung kann die Speichersteuereinheit eine temporäre Neuzuordnungstabelle unterhalten, um auf einen physikalischen Ort in dem Speicher zu zeigen, wo die eine oder die mehreren Kopien angeordnet sind, welche sich in einem Reservebereich des Speichers befinden können, wie zum Beispiel dem in 3 dargestellten Reservespeicher 355. Solch eine temporäre Neuzuordnungstabelle kann modifiziert werden in Antwort auf ein Empfangen eines oder mehrerer Transaktionsoperatoren in einem Transaktionsbefehl. Bei der Raute 440 kann eine Bestimmung gemacht werden, ob ein Commit des Transaktionsbefehls empfangen wird, das ein Ende des Transaktionsbefehls kennzeichnet. Falls ein Commit empfangen wird, kann dann der Prozess 400 fortgesetzt werden bei der Raute 450, wo eine Bestimmung gemacht werden kann, ob die Transaktion erfolgreich abgeschlossen wurde. Falls nicht, kann dann Inhalt von modifizierten Kopien von Speicher nicht verwendet werden und kann überschrieben werden und/oder gelöscht werden, wie an dem Block 455 angegeben. Der Prozess 400 kann dann fortfahren zu dem Block 460, wo das Speichersubsystem den Host über das Misslingen informieren kann. Falls jedoch die Transaktion erfolgreich abgeschlossen wurde, kann dann der Prozess 400 zu dem Block 470 fortfahren, wo Inhalt von modifizierten Kopien von Speicher wie oben diskutiert verwendet werden kann zum Überschreiben von ursprünglichem Inhalt von Speicher. Auch kann eine Master-Neuzuordnungstabelle modifiziert werden, um die Tatsache widerzuspiegeln, dass Inhalt von modifizierten Kopien jetzt zum Beispiel aktuell in dem ursprünglichen Speicherort gespeichert werden kann. Bei dem Block 480 kann das Speichersubsystem den Host informieren, dass die Transaktion erfolgreich abgeschlossen wurde. Falls jedoch kein solches Commit bei der Raute 440 empfangen wird, kann dann der Prozess 400 fortfahren zu der Raute 490, wo eine Bestimmung gemacht werden kann, ob ein Zurückspulenbefehl zum Verwerfen von Modifikationen empfangen wird. Falls kein solcher Zurückspulenbefehl empfangen wird, kann dann der Prozess 400 zu dem Block 430 zurückkehren, wo Speicherkopien weiterhin modifiziert werden können in Antwort auf ein Empfangen von nachfolgenden Transaktionsoperatoren. Falls jedoch ein Zurückspulenbefehl empfangen wird, kann der Prozess 400 zu dem Block 493 fortfahren, wo Inhalt von modifizierten Kopien von Speicher vernachlässigt werden kann, nicht verwendet werden braucht, und/oder überschrieben und/oder gelöscht werden kann. Der Prozess 400 kann dann zu dem Block 496 fortfahren, wo das Speichersubsystem den Host informieren kann über den erfolgreichen oder abgeschlossenen Zurückspulen-Prozess. Selbstverständlich sind solche Details des Prozesses 400 nur Beispiele und der beanspruchte Gegenstand ist in dieser Weise nicht beschränkt.
-
5 ist ein schematisches Diagramm, welches eine beispielhafte Ausführungsform eines Rechnersystems 500 zeigt, das eine Speichervorrichtung 510 beinhaltet. Eine solche Rechnervorrichtung kann zum Beispiel einen oder mehrere Prozessoren enthalten, um eine Anwendung und/oder einen andern Code auszuführen. Beispielsweise kann die Speichervorrichtung 510 ein Speicher aufweisen, der einen Abschnitt eines PCM 100 umfasst, wie in 1 gezeigt. Eine Rechnervorrichtung 504 kann jegliche Vorrichtung, jegliches Gerät oder jegliche Maschine sein, die konfiguriert werden kann, um die Speichervorrichtung 510 zu verwalten. Die Speichervorrichtung 510 kann eine Speichersteuereinheit 515 und einen Speicher 522 enthalten. Als Beispiel, aber nicht beschränkend, kann die Rechnervorrichtung 504 enthalten: eine oder mehrere Rechenvorrichtungen und/oder Plattformen, wie, zum Beispiel, einen Desktop-Computer, einen Laptopcomputer, eine Arbeitsstation, eine Servervorrichtung oder ähnliches; eine oder mehrere persönliche Rechen- oder Kommunikationsvorrichtungen oder Geräte, wie zum Beispiel einen persönlichen digitalen Assistenten, eine mobile Kommunikationsvorrichtung oder ähnliches; ein Rechnersystem und/oder assoziierte Diensteanbieter-Fähigkeit, wie zum Beispiel eine Datenbank oder einen Datenspeicherdiensteanbieter/System; und/oder jegliche Kombination davon.
-
Es wird erkannt, dass alle oder Teile der verschiedenen Vorrichtungen, die in dem System 500 gezeigt sind und die Prozesse und Verfahren, wie sie weiter hierin beschrieben sind, implementiert werden können unter Verwendung oder auf andere Weise enthaltend Hardware, Firmware, Software oder jegliche Kombination davon. Dementsprechend, als ein Beispiel, aber nicht beschränkend, kann die Rechnervorrichtung 504 zumindest eine Verarbeitungseinheit 520 enthalten, die operativ gekoppelt ist mit dem Speicher 522 über einen Bus 540 und einen Host oder eine Speichersteuereinheit 515. Die Verarbeitungseinheit 520 ist repräsentativ für eine oder mehrere Schaltungen, die konfigurierbar sind, um zumindest einen Teil einer Datenverarbeitungsprozedur oder eines Datenverarbeitungsprozesses auszuführen. Als ein Beispiel, aber nicht beschränkend, kann die Verarbeitungseinheit 520 einen oder mehrere Prozessoren, Controller, Mikroprozessoren, Mikrocontroller, anwendungsspezifische integrierte Schaltungen, digitale Signalprozessoren, programmierbare Logikvorrichtungen, feldprogrammierbare Gate-Arrays und dergleichen, oder jegliche Kombination davon, aufweisen. Die Verarbeitungseinheit 520 kann ein Betriebssystem enthalten, das konfiguriert ist, mit der Speichersteuereinheit 515 zu kommunizieren. Ein solches Betriebssystem kann zum Beispiel Transaktionsbefehle erzeugen, die an die Speichersteuereinheit 515 über den Bus 540 zu senden sind. Solche Transaktionsbefehle können Operatoren umfassen, die zum Beispiel Lesebefehle und/oder Schreibbefehle umfassen. In einer Implementierung kann der Bus 540 einen Abschnitt eines Ethernet, ein drahtloses lokales Bereichsnetzwerk (LAN), ein zellulares Netzwerk, Serial Advanced Technology Attachment (SATA), Serial Attached SCSI (SAS), oder eine Peripheral Component Interconnect Express (PCIe) Karte aufweisen, um nur einige wenige Beispiele zu nennen. In Antwort auf Empfangen eines Transaktionsbefehls, kann zum Beispiel die Speichersteuereinheit 515 den oben beschriebenen Prozess 400 ausführen, um solch eine Transaktion durchzuführen. In einer Implementierung kann zum Beispiel das System 500 eine Speichervorrichtung 510, die zumindest ein Speicherfeld umfasst, aufweisen. Solch eine Speichervorrichtung kann weiterhin eine Speichersteuereinheit 515 enthalten zum Empfangen eines Transaktionsbefehls, der eine Transaktionsanforderung, einen oder mehrere Transaktionsoperatoren und/oder ein Transaktions-Commit umfasst. Die Speichersteuereinheit 515 kann weiterhin eine Kopie eines Teils eines Inhalts des zumindest einen Speicherfelds erstellen in Antwort auf Empfangen des Transaktionsbefehls. Die Speichersteuereinheit 515 kann dann Information der Kopie modifizieren in Antwort auf Empfangen des einen oder der mehreren Transaktionsoperatoren der Transaktion. In einer Implementierung kann die Verarbeitungseinheit 520 eine oder mehrere Anwendungen bedienen und solch eine Transaktion initiieren, obwohl der beanspruchte Gegenstand in dieser Weise nicht beschränkt ist.
-
Der Speicher 522 ist repräsentativ für jeglichen Datenspeichermechanismus. Der Speicher 522 kann, zum Beispiel, einen primären Speicher 524 und/oder einen sekundären Speicher 526 enthalten. Der primäre Speicher 524 kann zum Beispiel einen Speicher mit wahlfreiem Zugriff, einen Nur-Lese-Speicher usw. umfassen. Es sollte verstanden werden, dass der gesamte oder ein Teil des primären Speichers 524 innerhalb, oder auf andere Weise, neben der Verarbeitungseinheit 520 angeordnet/mit dieser gekoppelt bereitgestellt werden kann, obwohl er in diesem Beispiel separat von der Verarbeitungseinheit 520 gezeigt ist.
-
Der sekundäre Speicher 526 kann, zum Beispiel, denselben oder einen ähnlichen Typ von Speicher wie der primäre Speicher aufweisen und/oder eine oder mehrere Datenspeicher-Vorrichtungen oder -Systeme, wie, zum Beispiel, ein Plattenlaufwerk, ein optisches Laufwerk, ein Bandlaufwerk, ein Festkörper-Speicherlaufwerk und so weiter. In bestimmten Implementierungen kann der zweite Speicher 526 operativ empfänglich sein, oder auf andere Weise konfigurierbar sein zum Koppeln mit einem Computer-lesbaren Medium 528. Das Computerlesbare Medium 528 kann, zum Beispiel, jegliches Medium beinhalten, welches Daten, Code und/oder Anweisungen für eine oder mehrere der Vorrichtungen in dem System 500 tragen und/oder verfügbar machen kann.
-
Die Rechner-Vorrichtung 504 kann zum Beispiel eine Eingabe/Ausgabe 532 enthalten. Die Eingabe/Ausgabe 532 ist repräsentativ für eine oder mehrere Vorrichtungen oder Merkmale, die konfigurierbar sein können, menschliche und/oder maschinelle Eingaben zu akzeptieren oder auf andere Weise einzuführen, und/oder eine oder mehrere Vorrichtungen oder Merkmale, die konfigurierbar sein können, Ausgaben für Menschen und/oder Maschinen abzugeben oder auf andere Weise bereitzustellen. Als ein Beispiel, aber nicht beschränkend, kann die Eingabe/Ausgabe-Vorrichtung 532 eine operativ konfigurierte Anzeige, Lautsprecher, Tastatur, Maus, Trackball, Berührungsbildschirm, Datenanschluss usw. enthalten.
-
Die Begriffe „und”, „und/oder”, und „oder”, wie sie hier verwendet werden, können eine Vielfalt an Bedeutungen aufweisen, die zumindest teilweise von dem Kontext abhängen werden, in welchem solche Begriffe benutzt werden. Typischerweise, falls „und/oder” genauso wie „oder” verwendet wird, um eine Liste zu assoziieren, wie A, B oder C, wird eine Bedeutung A, B und C beabsichtigt, die hier in dem inklusiven Sinn verwendet wird, genauso wie A, B oder C, die hier in dem exklusiven Sinn verwendet wird. Der Bezug in dieser Beschreibung auf „eine Ausführungsform” bedeutet durchweg, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine Eigenschaft, die hier in Verbindung mit einer bestimmten Ausführungsform beschrieben ist, in zumindest einer Ausführungsform des beanspruchten Gegenstandes enthalten sein mag. Wenn daher der Ausdruck „in einer Ausführungsform” oder der Ausdruck „eine Ausführungsform” an verschiedenen Stellen in dieser Beschreibung auftritt, so bedeutet dies nicht notwendiger Weise, dass alle diese sich auf dieselbe Ausführungsform beziehen. Darüber hinaus ist zu verstehen, dass bestimmte Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen kombiniert werden können.
-
Während hierin gezeigt und beschrieben wurde, was derzeit als beispielhafte Ausführungsformen betrachtet wird, wird es vom Fachmann verstanden werden, dass verschiedene andere Modifikationen gemacht werden können und Äquivalente ersetzt werden können, ohne vom Gegenstand wie beansprucht abzuweichen. Zusätzlich können viele Modifikationen gemacht werden, um eine bestimmte Situation an die Lehren des beanspruchten Gegenstandes anzupassen, ohne vom hierin beschriebenen zentralen Konzept abzuweichen. Daher ist es beabsichtigt, dass der beanspruchte Gegenstand nicht beschränkt wird auf die offenbarten bestimmten Ausführungsformen, sondern dass solch ein beanspruchter Gegenstand auch alle Ausführungsformen umfassen soll, die innerhalb des Bereichs der beigefügten Ansprüche fallen und den Äquivalenten davon.