DE102012201154A1 - Transaktionsspeicher - Google Patents

Transaktionsspeicher Download PDF

Info

Publication number
DE102012201154A1
DE102012201154A1 DE102012201154A DE102012201154A DE102012201154A1 DE 102012201154 A1 DE102012201154 A1 DE 102012201154A1 DE 102012201154 A DE102012201154 A DE 102012201154A DE 102012201154 A DE102012201154 A DE 102012201154A DE 102012201154 A1 DE102012201154 A1 DE 102012201154A1
Authority
DE
Germany
Prior art keywords
transaction
memory
operators
receiving
response
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
DE102012201154A
Other languages
English (en)
Other versions
DE102012201154B4 (de
Inventor
Sean Eilert
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE102012201154A1 publication Critical patent/DE102012201154A1/de
Application granted granted Critical
Publication of DE102012201154B4 publication Critical patent/DE102012201154B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices

Abstract

Der hierin offenbarte Gegenstand bezieht sich auf Techniken zum Ausführen von Transaktionen unter Verwendung einer Speichervorrichtung.

Description

  • 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.

Claims (20)

  1. Verfahren aufweisend: Empfangen eines Transaktionsbefehls, der eine Transaktionsanforderung, oder mehrere Transaktionsoperatoren aufweist; Kopieren von ursprünglichem Inhalt in einem ersten Abschnitt eines Speicherfelds in einen zweiten Abschnitt des Speicherfelds in Antwort auf Empfangen der Transaktionsanforderung; und Modifizieren des ursprünglichen Inhalts des zweiten Abschnitts in Antwort auf Empfangen der mehreren Transaktionsoperatoren des Transaktionsbefehls.
  2. Verfahren nach Anspruch 1, wobei der Transaktionsbefehl weiterhin ein Transaktions-Commit aufweist, um den Transaktionsbefehl abzuschließen, und in Antwort auf Empfangen des Transaktions-Commits, Bestimmen, ob eine mit dem Transaktionsbefehl assoziierte Transaktion erfolgreich war oder misslang; und falls die Transaktion erfolgreich war: Ersetzen des ursprünglichen Inhalts des ersten Abschnitts mit dem modifizierten Inhalt in dem zweiten Abschnitt, und falls die Transaktion misslang: Überschreiben des modifizierten Inhalts in dem zweiten Abschnitt während einer nachfolgenden Transaktion.
  3. Verfahren nach Anspruch 1, weiterhin aufweisend: Unterhalten einer temporären Neuzuordnungstabelle, um auf einen physikalischen Ort in dem Speicher zu zeigen, wo der zweite Abschnitt angeordnet ist.
  4. Verfahren nach Anspruch 3, weiterhin aufweisend: Modifizieren der temporären Neuzuordnungstabelle in Antwort auf Empfangen des einen oder der mehreren Transaktionsoperatoren.
  5. Verfahren nach Anspruch 3, weiterhin aufweisend: simultanes Unterhalten einer oder mehrerer zusätzlicher temporärer Neuzuordnungstabellen, die mit der einen oder den mehreren zusätzlichen Transaktionen korrespondieren.
  6. Verfahren nach Anspruch 1, weiterhin aufweisend: Bestimmen einer maximalen Anzahl von erlaubten Transaktionsoperatoren und/oder einer maximalen Größe des Abschnitts des Speichers zumindest teilweise basierend auf Inhalt eines Registers.
  7. Verfahren nach Anspruch 3, weiterhin aufweisend: Unterhalten einer Master-Neuzuordnungstabelle, um auf physikalische Orte in dem Speicher zu zeigen; und Modifizieren der Master-Neuzuordnungstabelle in Antwort auf Empfangen eines Transaktions-Commits in dem Transaktionsbefehl und in Antwort auf Verschleißausgleichsoperationen oder Operationen zum Ersetzen von defektem Speicher.
  8. Speichervorrichtung, aufweisend: zumindest ein Speicherfeld; und eine Steuereinheit zum: Empfangen eines Transaktionsbefehls, der eine Transaktionsanforderung, oder mehrere Transaktionsoperatoren aufweist; Kopieren von ursprünglichem Inhalt in einem ersten Abschnitt des mindestens einen Speicherfelds in einen zweiten Abschnitt des Speicherfelds in Antwort auf Empfangen der Transaktionsanforderung; und Modifizieren des ursprünglichen Inhalts des zweiten Abschnitts in Antwort auf Empfangen der mehreren Transaktionsoperatoren des Transaktionsbefehls.
  9. Speichervorrichtung nach Anspruch 8, weiterhin aufweisend: eine temporäre Neuzuordnungstabelle, um auf einen physikalischen Ort in dem mindestens einen Speicherfeld zu zeigen, wo der zweite Abschnitt angeordnet ist.
  10. Speichervorrichtung nach Anspruch 9, wobei die Steuereinheit angepasst ist zum: Modifizieren der temporären Neuzuordnungstabelle in Antwort auf Empfangen des einen oder der mehreren Transaktionsoperatoren.
  11. Speichervorrichtung nach Anspruch 9, weiterhin aufweisend: eine oder mehrere zusätzliche temporäre Neuzuordnungstabellen, die mit der einen oder den mehreren zusätzlichen Transaktionen korrespondieren.
  12. Speichervorrichtung nach Anspruch 8, weiterhin aufweisend: ein Register zum Speichern von Inhalt, um eine maximale Anzahl von erlaubten Transaktionsoperatoren und/oder einer maximalen Größe des Abschnitts des zumindest einen Speicherfelds anzugeben.
  13. Speichervorrichtung nach Anspruch 9, weiterhin aufweisend: eine Master-Neuzuordnungstabelle zum Zeigen auf physikalische Orte in dem mindestens einen Speicherfeld zumindest teilweise basierend auf dem einen oder den mehreren Transaktionsoperatoren und zumindest teilweise basierend auf Speicher-Verschleißausgleichsoperationen oder Operationen zum Ersetzen von defektem Speicher.
  14. Speichervorrichtung nach Anspruch 8, weiterhin aufweisend: einen Reservebereich des Speicherfelds um den zweiten Abschnitt zu unterhalten.
  15. Speichervorrichtung nach Anspruch 8, wobei die Steuereinheit eine Transaktionsmaschine aufweist, die zumindest teilweise basierend auf einem Transaktionsprotokoll arbeitet.
  16. System, aufweisend: eine Speichervorrichtung, die zumindest ein Speicherfeld aufweist, wobei die Speichervorrichtung weiterhin eine Speichersteuereinheit aufweist zum: Empfangen eines Transaktionsbefehls, der eine Transaktionsanforderung, oder mehrere Transaktionsoperatoren aufweist; Kopieren von ursprünglichem Inhalt in einem ersten Abschnitt eines Speicherfelds in einen zweiten Abschnitt des Speicherfelds in Antwort auf Empfangen der Transaktionsanforderung; und Modifizieren des ursprünglichen Inhalts des zweiten Abschnitts in Antwort auf Empfangen der mehreren Transaktionsoperatoren des Transaktionsbefehls; und einen Prozessor zum Bedienen einer oder mehrerer Anwendungen und zum Initiieren des Transaktionsbefehls.
  17. System nach Anspruch 16, weiterhin aufweisend: eine temporäre Neuzuordnungstabelle, um auf einen physikalischen Ort in dem mindestens einen Speicherfeld zu zeigen, wo der zweite Abschnitt angeordnet ist.
  18. System nach Anspruch 17, wobei die Speichersteuereinheit angepasst ist zum: Modifizieren der temporären Neuzuordnungstabelle in Antwort auf Empfangen des einen oder der mehreren Transaktionsoperatoren.
  19. System nach Anspruch 17, weiterhin aufweisend: eine oder mehrere zusätzliche temporäre Neuzuordnungstabellen, die mit der einen oder den mehreren zusätzlichen Transaktionen korrespondieren.
  20. System nach Anspruch 16, wobei die Steuereinheit eine Transaktionsmaschine aufweist, die zumindest teilweise basierend auf einem Transaktionsprotokoll arbeitet.
DE102012201154.4A 2011-01-27 2012-01-26 Transaktionsspeicher Active DE102012201154B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/015,396 2011-01-27
US13/015,396 US9104690B2 (en) 2011-01-27 2011-01-27 Transactional memory

Publications (2)

Publication Number Publication Date
DE102012201154A1 true DE102012201154A1 (de) 2012-08-02
DE102012201154B4 DE102012201154B4 (de) 2021-08-05

Family

ID=46511607

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012201154.4A Active DE102012201154B4 (de) 2011-01-27 2012-01-26 Transaktionsspeicher

Country Status (6)

Country Link
US (2) US9104690B2 (de)
JP (1) JP5582418B2 (de)
KR (1) KR101337676B1 (de)
CN (1) CN102707898B (de)
DE (1) DE102012201154B4 (de)
TW (1) TWI590046B (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9244724B2 (en) * 2013-08-15 2016-01-26 Globalfoundries Inc. Management of transactional memory access requests by a cache memory
JP6289883B2 (ja) * 2013-11-27 2018-03-07 株式会社東芝 ストレージ装置
GB2529148B (en) * 2014-08-04 2020-05-27 Advanced Risc Mach Ltd Write operations to non-volatile memory
US11582244B2 (en) * 2017-03-23 2023-02-14 International Business Machines Corporation Access control of administrative operations within an application
US10635613B2 (en) * 2017-04-11 2020-04-28 Micron Technology, Inc. Transaction identification
US10621103B2 (en) 2017-12-05 2020-04-14 Arm Limited Apparatus and method for handling write operations
US11436187B2 (en) * 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11403023B2 (en) 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US6779094B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
JP4140750B2 (ja) 2000-12-28 2008-08-27 日本電信電話株式会社 Icカード内メモリアクセス制御方法および装置並びにプログラム記憶媒体
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7389308B2 (en) * 2003-05-30 2008-06-17 Microsoft Corporation Shadow paging
US7568025B2 (en) * 2003-06-27 2009-07-28 Bank Of America Corporation System and method to monitor performance of different domains associated with a computer system or network
US7779212B2 (en) * 2003-10-17 2010-08-17 Micron Technology, Inc. Method and apparatus for sending data from multiple sources over a communications bus
US8417913B2 (en) * 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US7290176B2 (en) * 2004-07-31 2007-10-30 Hewlett-Packard Development Company, L.P. Method and system for generating stacked register dumps from backing-store memory
JP4104586B2 (ja) 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
US7490215B2 (en) 2004-12-22 2009-02-10 Intel Corporation Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information
CN100369038C (zh) 2005-02-24 2008-02-13 中兴通讯股份有限公司 一种实时数据库事务操作的实现方法
US7478261B2 (en) 2005-09-13 2009-01-13 M2000 Reconfigurable circuit with redundant reconfigurable cluster(s)
US8683143B2 (en) 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7533237B1 (en) * 2006-05-11 2009-05-12 Nvidia Corporation Off-chip memory allocation for a unified shader
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080120304A1 (en) 2006-11-21 2008-05-22 Calio Robert J Method and system for providing high performance data modification of relational database tables
US8589341B2 (en) 2006-12-04 2013-11-19 Sandisk Il Ltd. Incremental transparent file updating
CN101589386B (zh) 2006-12-04 2013-03-27 桑迪士克Il有限公司 增加透明的文件更新
US10311427B2 (en) * 2006-12-29 2019-06-04 Google Technology Holdings LLC Method and system for monitoring secure application execution events during contactless RFID/NFC communication
JP2008287398A (ja) 2007-05-16 2008-11-27 Toshiba Corp 主記憶装置、主記憶装置の制御方法、およびこの主記憶装置を用いた情報処理装置
US7856522B2 (en) * 2007-05-16 2010-12-21 Oracle International Corporation Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory
KR101336258B1 (ko) 2007-05-29 2013-12-03 삼성전자 주식회사 비휘발성 메모리의 데이터 처리 장치 및 방법
US8156299B2 (en) * 2007-10-19 2012-04-10 Virident Systems Inc. Managing memory systems containing components with asymmetric characteristics
US8627017B2 (en) 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8627014B2 (en) 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system
US8250282B2 (en) * 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8036016B2 (en) * 2009-09-01 2011-10-11 Micron Technology, Inc. Maintenance process to enhance memory endurance

Also Published As

Publication number Publication date
JP2012155705A (ja) 2012-08-16
DE102012201154B4 (de) 2021-08-05
US10083122B2 (en) 2018-09-25
TWI590046B (zh) 2017-07-01
US20120198205A1 (en) 2012-08-02
CN102707898B (zh) 2016-04-27
CN102707898A (zh) 2012-10-03
US20150347315A1 (en) 2015-12-03
US9104690B2 (en) 2015-08-11
JP5582418B2 (ja) 2014-09-03
KR101337676B1 (ko) 2013-12-06
KR20120087091A (ko) 2012-08-06
TW201232257A (en) 2012-08-01

Similar Documents

Publication Publication Date Title
DE102012201154B4 (de) Transaktionsspeicher
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE69631106T2 (de) On-line-Rekonfiguration einer Speicherplattenanordnung
DE602004011181T2 (de) Speicherplattenanordnungsgerät
DE112011100112B4 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE602004002216T2 (de) Verfahren, system und programm für eine inkrementelle virtuelle kopie
DE69636330T2 (de) Verfahren für On-line- und Echzeit-Datenmigration
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE602005004120T2 (de) System und verfahren zur übernahme von partnerbetriebsmitteln in verbindung mit coredump
DE60031064T2 (de) Kopierverfahren zwischen logischen Speicherplatten, Speicherplattensystem und Programm dafür
DE112011100534B4 (de) Mehrstufiger Sicherungsprozess
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
DE112016004527T5 (de) Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112009004621B4 (de) Speichervorrichtungs-LöschbefehI mit einem Steuerfeld, das durch eine Anforderer-Vorrichtung steuerbar ist
DE10348326A1 (de) Permanentspeichervorrichtung, die an eine Kommunikationsverbindung angeschlossen ist
DE102012216568A1 (de) Scheduling und Managen von Rechentasks mit unterschiedlichen Ausführungsprioritätsstufen
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102013209318B4 (de) Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen
DE102004056216A1 (de) Fernkopiersystem und Speichersystem
DE102013210642A1 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE102008058209A1 (de) Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs

Legal Events

Date Code Title Description
R012 Request for examination validly filed

Effective date: 20140521

R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final