DE102018214013A1 - Automatische kontinuierliche Prüfpunktsetzung - Google Patents

Automatische kontinuierliche Prüfpunktsetzung Download PDF

Info

Publication number
DE102018214013A1
DE102018214013A1 DE102018214013.8A DE102018214013A DE102018214013A1 DE 102018214013 A1 DE102018214013 A1 DE 102018214013A1 DE 102018214013 A DE102018214013 A DE 102018214013A DE 102018214013 A1 DE102018214013 A1 DE 102018214013A1
Authority
DE
Germany
Prior art keywords
data
writes
rollback
memory
interface
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.)
Pending
Application number
DE102018214013.8A
Other languages
English (en)
Inventor
Kshitij Doshi
Sanjeev Trika
Rowel Garcia
Vadim Sukhomlinov
Urvi PATEL
Tamir Damian Munafo
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018214013A1 publication Critical patent/DE102018214013A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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/1448Management of the data involved in backup or backup restore
    • 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/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

Eine Speichersteuereinheit nimmt eine kontinuierliche Prüfpunktsetzung vor. Mit einer kontinuierlichen Prüfpunktsetzung werden die Informationen, die für ein System-Rollback notwendig sind, kontinuierlich ohne die Notwendigkeit eines spezifischen Befehls aufgezeichnet. Mit den Rollback-Informationen kann das System zu irgendeinem vorherigen Zustand bis zu einer Anzahl vorheriger Schreibvorgänge oder bis zu einer Datenmenge zurückrollen oder wiederhergestellt werden. Die Anzahl von Schreibvorgängen oder die Datenmenge, die wiederhergestellt werden können, ist auslegbar.

Description

  • GEBIET
  • Die Beschreibungen betreffen allgemein Speichersysteme, und insbesondere betreffen Beschreibungen die Wiederherstellung eines vorherigen Zustands gespeicherter Daten.
  • U RHEBERRECHTSVERMERK/ERLAUBNIS
  • Teile der Offenbarung dieses Patentdokuments können Material enthalten, das dem Urheberrechtsschutz unterliegt. Der Urheberrechtsinhaber hat keinen Einwand gegen jegliche Reproduktion des Patentdokuments oder der Patentoffenbarung, wie diese in der Patentdatei oder Unterlagen des Patent and Trademark Office aufscheinen, behält sich jedoch ansonsten alle wie immer gearteten Urheberrechte vor. Dieser Urheberrechtsvermerk gilt für alle Daten, wie nachstehend beschrieben, und in den hier beigeschlossenen Zeichnungen, sowie für jegliche nachstehend beschriebene Software: Copyright © 2017, Intel Corporation, alle Rechte vorbehalten.
  • HINTERGRUND
  • Die Computersicherheit ist für Benutzer ein seit langem bestehendes Anliegen. Trotz Anti-Malware-Werkzeugen und -Diensten nimmt Malware, die Computervorrichtungen beeinträchtigt, weiterhin zu. Mit der Einführung von Ransomware können Angreifer eine nachteilige Nutzlast schreiben, welche die Maschine verschlüsselt und den Benutzer aus der Rechenvorrichtung ausschließt. Die verschiedenen Datenverlust- und -rückgewinnungsmechanismen, die es gibt, wie Papierkörbe und Wiederherstellungs-Software, greifen darauf zurück, dass Altdaten in zugänglichen Sektoren des Laufwerks gespeichert werden. Die Korruption und Verschlüsselung können jedoch die Altdaten unzugänglich machen.
  • Das Anlegen von Sicherungskopien ist ein allgemeiner Ansatz zur Wiederherstellung, hat jedoch viele Einschränkungen. Eine Einschränkung ist der notwendige zusätzliche Speicher. Für netzbasierte Sicherungen ist auch ein Netzzugriff notwendig. Somit beeinflussen Sicherungen herkömmlich die Kosten, Energie und Leistung des Systems. Zusätzlich werden Sicherungen auf regelmäßiger Basis geplant, wie täglich, stündlich oder gemäß irgendeiner anderen Vorgabe, wo Änderungen, die zwischen vorgegebenen Sicherungen durchgeführt werden, verloren gehen, wenn eine Wiederherstellung erfolgt. Herkömmliche Ansätze zur Datenwiederherstellung involvieren das proaktive Kopieren von Daten zur Sicherung, oder das Erzeugen neuer Versionen der bestehenden Daten. Einige Systeme versuchen, das Kopieren und Erzeugen von Lasten durch Kopieren nur der Dateien zu reduzieren, die zwischen Sicherungen geändert wurden (wobei nur „Delta“ oder die Differenz gesichert wird). Das Spiegeln von Systemen kann das Risiko eines Datenverlusts durch einen Laufwerksausfall reduzieren, schützt jedoch nicht gegen Malware, die sowohl in den Spiegel als auch das Original kopiert wird.
  • Andere herkömmliche Ansätze können Schattenversionen und Volumenschattenkopien umfassen, die involvieren, dass das Betriebssystem (OS) mehrfache Kopien der Daten hält. Solche Ansätze sind OS-spezifisch und erfordern eine signifikante Menge an zusätzlicher I/O (Eingabe/Ausgabe) zwischen dem Host und der Speichervorrichtung. Frühere Ansätze zur Prüfpunktsetzung erfordern, dass der Host periodisch Prüfpunktbefehle erteilt. Das Erteilen von Prüfpunktbefehlen erzeugt eine zusätzliche Belastung für den Host, und ähnlich anderen Wiederherstellungsansätzen gehen Änderungen, die zwischen Prüfpunktbefehlen durchgeführt werden, verloren.
  • Figurenliste
  • Die folgende Beschreibung umfasst eine Diskussion der Figuren mit Darstellungen, die als Beispiel von Implementierungen von Ausführungsformen der Erfindung angegeben werden. Die Zeichnungen sind als Beispiel zu verstehen und nicht als Einschränkung. Wie hier verwendet, sind Bezugnahmen auf eine oder mehrere „Ausführungsformen“ so zu verstehen, dass sie ein bestimmtes Merkmal, eine Struktur und/oder Charakteristik beschreiben, die in mindestens einer Implementierung der Erfindung enthalten ist. Somit beschreiben Phrasen, wie „in einer Ausführungsform“ oder „in einer alternative Ausführungsform“, die hier auftreten, verschiedene Ausführungsformen und Implementierungen der Erfindung und beziehen sich nicht unbedingt alle auf dieselbe Ausführungsform. Sie schließen einander jedoch auch nicht unbedingt gegenseitig aus.
    • 1A ist ein Blockbild einer Ausführungsform eines Systems mit einem Solid State-Laufwerk (SSD) mit einer Steuereinheit, die eine Schreibsteuerung mit kontinuierlicher Prüfpunktsetzung aufweist.
    • 1B ist ein Blockbild einer Ausführungsform eines Systems mit einem Solid State-Laufwerk (SSD) mit einer Steuereinheit mit programmierbarer Firmware, um eine kontinuierliche Prüfpunktsetzung zu implementieren.
    • 1C ist ein Blockbild einer Ausführungsform eines Systems mit einer nicht-flüchtigen Medienvorrichtung mit programmierbarer Firmware im Host, um eine kontinuierliche Prüfpunktsetzung zu implementieren.
    • 2 ist ein Blockbild einer Ausführungsform eines Systems mit einem Solid State-Laufwerk (SSD) mit einer Prüfpunktsetzung in einer Übersetzungsschicht.
    • 3A ist ein Blockbild einer Ausführungsform eines Systems, das eine kontinuierliche Prüfpunktsetzung mit einem SSD mit geschlossenem Kanal implementiert.
    • 3B ist ein Blockbild einer Ausführungsform eines Systems, das eine kontinuierliche Prüfpunktsetzung mit einem SSD mit offenem Kanal implementiert.
    • 4 ist ein Blockbild einer Ausführungsform eines Protokolls zur kontinuierlichen Prüfpunktsetzung.
    • 5 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes, um einen globalen Zustand in einem Prüfpunktsetzungs-Ledger aufrechtzuerhalten.
    • 6 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes, um eine Seite in einer Prüfpunktsetzungsumgebung zu schreiben.
    • 7 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes, um eine Löscheinheit in einer Prüfpunktsetzungsumgebung zu erzeugen.
    • 8 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes, um eine Schreibreihenfolge in einer Prüfpunktsetzungsumgebung zu identifizieren.
    • 9 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes zur Speicherbereinigung in einer Prüfpunktsetzungsumgebung.
    • 10 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes für ein Rollback auf der Basis einer kontinuierlichen Prüfpunktsetzung.
    • 11 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes zum Lesen alter Daten ohne Rollback auf der Basis einer kontinuierlichen Prüfpunktsetzung.
    • 12 ist ein Flussdiagramm einer Ausführungsform von Operationen zur kontinuierlichen Prüfpunktsetzung.
    • 13 ist ein Blockbild einer Ausführungsform eines Rechensystems, in dem eine kontinuierliche Prüfpunktsetzung implementiert werden kann.
    • 14 ist ein Blockbild einer Ausführungsform einer mobilen Vorrichtung, in der eine kontinuierliche Prüfpunktsetzung implementiert werden kann.
  • Es folgen Beschreibungen bestimmter Details und Implementierungen, einschließlich einer Beschreibung der Figuren, die einige oder alle nachstehend beschriebene Ausführungsformen darstellen können, sowie Diskussionen anderer potentieller Ausführungsformen oder Implementierungen der erfinderischen Konzepte, die hier präsentiert werden.
  • DETAILLIERTE BESCHREIBUNG
  • Wie hier beschrieben, nimmt eine Speichersteuereinheit eine kontinuierliche Prüfpunktsetzung vor. Mit einer kontinuierlichen Prüfpunktsetzung werden die Informationen, die für ein System-Rollback notwendig sind, ohne die Notwendigkeit eines spezifischen Befehls kontinuierlich aufgezeichnet. Die kontinuierliche Prüfpunktsetzung von der Speichersteuereinheit ermöglicht eine Datenwiederherstellung mit beliebiger Granularität, unabhängig vom Betriebssystem. Mit den Rollback-Informationen kann das System zu einem beliebigen vorherigen Zustand bis zu einer Anzahl vorheriger Schreibvorgänge oder bis zu einer Datenmenge zurückrollen oder wiederhergestellt werden. Die Anzahl wiederherstellbarer Schreibvorgänge oder die Datenmenge, die zurückgerollt werden können, sind auslegbar.
  • In einer Ausführungsform umfasst die kontinuierliche Prüfpunktsetzung das Halten eines Verlaufs von Schreibtransaktionen und das Ermöglichen eines Rollbacks einer auslegbaren Anzahl von Vektoren oder Schreibtransaktionen. Beispielsweise kann das System das Rollback von irgendwo von 1 bis N Vektoren oder das Rollback zu irgendeinem der letzten N Schreibvorgänge ermöglichen. Um das Rollback zu ermöglichen, ist es klar, dass das System die letzten N Schreibvorgänge halten wird; somit wird das System beispielsweise nicht die Datenblöcke für die letzten N Schreibvorgänge überschreiben. In einer Ausführungsform beziehen sich die letzten N Schreibvorgänge auf tatsächliche Schreibtranskationen, und bis zu N Transaktionen können zurückgerollt werden. In einer Ausführungsform beziehen sich die letzten N Schreibvorgänge auf Schreibvorgänge, die eine Datenmenge N beeinflussen, und ein Schreiben bis zu dieser Datenmenge kann zurückgerollt werden.
  • Die Rollback-Menge ist auslegbar. In einer Ausführungsform stellt der Benutzer die gewünschte Rollback-Wiederherstellungsmenge ein. In einer Ausführungsform wird die Rollback-Menge von einem Administrator ausgelegt. In einer Ausführungsform hat das System eine ausgelegte Vorgabe-Rollback-Menge. In einer Ausführungsform umfasst die Auslegbarkeit die Fähigkeit, eine Datenmenge einzustellen, die wiederhergestellt werden kann (z.B. die letzten 10 GB von Schreibvorgängen). In einer Ausführungsform umfasst die Auslegbarkeit die Fähigkeit, eine Zeitdauer einzustellen, die wiederhergestellt werden kann (z.B. eine Stunde, ein Tag, eine Woche oder irgendeine andere Zeitdauer). Während die gesamte Fähigkeit ausgelegt werden kann, ist es klar, dass irgendein Schreiben innerhalb der gesamten Fähigkeit wiederhergestellt werden kann.
  • Durch das Ermöglichen eines Rollbacks, wie hier beschrieben, kann der Benutzer eine Wiederherstellung von einem unbeabsichtigten Löschen, einer Virus- oder Malware-Korruption, Ransomware oder anderen Korruption des Speicherzustands durch das Zurückkehren zu einem vorherigen Speicherzustand vornehmen. Das beschriebene Rollback hat minimale Kosten und Leistungseinflüsse, indem die Wiederherstellung direkt aus der Schreiboperation der Rechenvorrichtung ermöglicht wird. Es ist klar, dass, um die Wiederherstellung zu ermöglichen, das System die Daten aus vorherigen Zuständen des Speichers, oder vor den neuesten Schreibvorgängen, halten wird. Wenn die Daten überschrieben sind, wären sie allgemein nicht wiederherstellbar. Die Wiederherstellung kann in Abhängigkeit davon steuerbar sein, wie viel von dem Daten-Rollback notwendig ist. Es ist klar, dass die Datenwiederherstellung mit kontinuierliche Prüfpunktsetzung Anwendung in allgemeinen Dateiwiederherstellungssituationen, der forensischen Analyse, Anti-Malware und Anti-Ransomware-Domänen finden kann.
  • In einer Ausführungsform ermöglicht ein Wiederherstellungssystem das Rollback in einen älteren Datenzustand eines nicht-flüchtigen Laufwerks, ohne den Host zu erfordern (z.B. ein Host-Betriebssystem), um einen Prüfpunktbefehl zu erteilen. Somit kann das Wiederherstellungssystem eine kontinuierliche Granularität der Wiederherstellung auf der Basis einer „befehlslosen“ Versionierung ermöglichen. In einer Ausführungsform ermöglicht das System einen Zugriff oder ein Lesen des älteren Datenzustands ohne Wiederherstellung in den älteren Datenzustand. In einer Ausführungsform ermöglicht das Wiederherstellungssystem ein Rollback in Einheiten geschriebener Sektoren. In einer Ausführungsform ermöglicht das Wiederherstellungssystem ein Rollback in Zeiteinheiten. In jedem Fall kann das Maximum geschriebener Zeit- oder Sektoreinheiten ein auslegbares Maximum sein. Die Versionierung kann als „befehlslos“ angesehen werden, da sie innerhalb der Speichersteuereinheit oder innerhalb des Schreibalgorithmus geschieht und keinen expliziten Befehl vom Host erfordert. Die herkömmliche Versionierung erforderte Befehle vom Host, was die Wiederherstellungsfähigkeit des Systems begrenzt hat. Der befehlslose Betrieb der Versionierung ermöglicht eine Wiederherstellung mit feinerer Granularität.
  • Das Wiederherstellungssystem umfasst eine Speichersteuereinheit, die in neue Orte schreibt anstelle des Überschreibens von Orten. Das Vornehmen von Schreibvorgängen in neue Orte erfordert eine Backspace-Rückforderung, um den Raum als ungenutzten Raum für zukünftige Schreibtransaktionen wiederzuherstellen. Das Wiederherstellungssystem umfasst auch die Fähigkeit, die vorherigen Datenzustände und neuen Datenzustände zu protokollieren. In einer Ausführungsform umfasst das Wiederherstellungssystem eine Ledger-Datenstruktur in der Speichersteuereinheit, um vorherige Orte zu verfolgen (z.B. physische Adressen, die mit logischen Adressen assoziiert sind). In einer Ausführungsform stellt die Ledger-Datenstruktur sicher, dass vorherige Orte nicht vorzeitig gelöscht werden.
  • Es ist klar, dass die Wiederherstellung des Speicherzustands schneller sein kann als eine native Operation einer Speichersteuereinheit gegenüber der Operation durch ein Betriebssystem. Zusätzlich wird die herkömmliche Wiederherstellung häufig auf der Basis von lokalen oder Netzreplizierungssystemen vorgenommen. Bei Replizierungssystemen kopiert das replizierte System typischerweise die Daten über eine Netzverbindung, um ein entferntes Duplikat des Systems herzustellen. Das System kann durch das Rückkopieren der Daten wiederhergestellt werden. Replizierungssysteme sind primär auf physische Zerstörungen fokussiert, können jedoch verwendet werden, um eine Wiederherstellung nach einem Cyber-Angriff vorzuneh-men. Mit der kontinuierlichen Prüfpunktsetzung, wie hier beschrieben, kann eine Wiederherstellung die Notwendigkeit des erneuten Sendes von Daten vermeiden, wobei ersichtlich ist, dass die Daten lokal gespeichert sind und verwendet werden können, um die Wiederherstellung zu vereinfachen. Wenn die Wiederherstellung lokal vorgenommen wird, ist diese schneller, reduziert die Netzbandbreite und kann die Energieleistung verbessern.
  • Eine Bezugnahme auf einen nicht-flüchtigen Speicher bezieht sich auf einen Memory oder Speicher, dessen Zustand bestimmt ist, auch wenn die Energie zu dem Speicher unterbrochen wird. Ein nicht-flüchtiger Speicher steht in Gegensatz zu einem flüchtigen Speicher, dessen Zustand (und daher die darauf gespeicherten Daten) unbestimmt ist, wenn die Energie zu diesem unterbrochen wird. Ein flüchtiger Speicher wird typischerweise als Systemhauptspeicher verwendet und hat herkömmlich eine geringe Kapazität als ein nicht-flüchtiger Speicher, hat jedoch viel schnellere Zugriffszeiten. Eine Vorrichtung mit nicht-flüchtigen Medien, die sich auf zum Speichern von Daten verwendete Hardware-Ressourcen beziehen, kann als nicht-flüchtige Memory-Vorrichtung oder Speichervorrichtung bezeichnet werden.
  • In einer Ausführungsform ist die nicht-flüchtige Speichervorrichtung eine blockadressierbare Speichervorrichtung, wie eine NAND- oder NOR-Technologie, wie für einen Flash-Speicher verwendet. Das nicht-flüchtige Medium kann einen Flash umfassen oder kann eine nicht-flüchtige Vorrichtung einer zukünftigen Generation umfassen, wie eine dreidimensionale Kreuzpunkt-Speichervorrichtung, oder andere byteadressierbare nicht-flüchtige Speichervorrichtungen, oder Speichervorrichtungen, die ein Chalcogenid-Phasenänderungsmaterial verwenden (z.B. Chalcogenid-Glas). In einer Ausführungsform kann die Speichervorrichtung ein NAND-Flash-Speicher mit mehreren Schwellenpegeln, ein NOR-Flash-Speicher, ein Single- oder Multi-Level-Phasenänderungsspeicher (PCM), ein resistiver Speicher, ein Nanodraht-Speicher, ein ferroelektrischer Transistorspeicher mit wahlfreiem Zugriff (FeTRAM), ein magnetoresistiver Speicher mit wahlfreiem Zugriff (MRAM), der eine Memristor-Technologie enthält, oder ein Spin Transfer Torque- (STT-) MRAM, oder eine Kombination irgendwelcher der obigen oder ein anderer Speicher sein oder diese umfassen.
  • 1A ist ein Blockbild einer Ausführungsform eines Systems mit einem Solid State-Laufwerk (SSD) mit einer Steuereinheit, die eine Schreibsteuerung mit kontinuierlicher Prüfpunktsetzung aufweist. Das System 102 weist das SSD (Solid State-Laufwerk) 120, gekoppelt mit dem Host 110, auf. Der Host 100 repräsentiert eine Host-Hardware-Plattform, die mit dem SSD 120 verbunden ist. Der Host 110 weist eine CPU (Zentraleinheit) 112 oder einen anderen Prozessor als Host-Prozessor auf. Die CPU 112 repräsentiert einen beliebigen Host-Prozessor, der Anforderungen generiert, um auf dem 120 gespeicherte Daten zuzugreifen, entweder um die Daten zu lesen oder um die Daten in den Speicher zu schreiben. Ein solcher Prozessor kann einen Einzel- oder Mehrkern-Prozessor, einen primären Prozessor für eine Rechenvorrichtung, einen Grafikprozessor, einen peripheren Prozessor oder einen ergänzenden oder Hilfsprozessor oder eine Kombination aufweisen. Die CPU 112 kann ein Host-Betriebssystem (OS) und andere Anwendungen ausführen, um den Betrieb des Systems 102 zu bewirken. Der Host 110 umfasst einen Chipsatz 114, der Hardware-Komponenten repräsentiert, die in der Verbindung zwischen der CPU 112 und dem SSD 120 eingeschlossen sein können. Beispielsweise kann der Chipsatz 114 Zwischenverbindungsschaltungen und Logik aufweisen, um einen Zugriff auf das SSD 120 zu ermöglichen. In einer Ausführungsform weist der Chipsatz 114 eine Speichersteuereinheit auf, die eine hostseitige Steuereinheit ist, welche von der Steuereinheit 130 innerhalb des SSD 120 getrennt ist.
  • Das SSD 120 repräsentiert ein Sold State-Laufwerk, das NV- (nicht-flüchtige) Medien 122 umfasst, um Daten zu speichern. Das SSD 120 weist die Steuereinheit 130 auf, um einen Zugriff auf die NV-Medien 122 zu steuern. In einer Ausführungsform weist die Steuereinheit 130 eine Schnittstelle zu den NV-Medien 122 auf, und weist eine Schnittstelle zum Host 110 auf. Die Steuereinheit 130 ist spezifisch veranschaulicht, um eine Schreibsteuerung 132 aufzuweisen, die Hardware und Steuerlogik repräsentiert, um das Schreiben auf die NV-Medien 122 zu steuern. Die Steuereinheit 130 hat Befehlssequenzen zum Lesen und Schreiben in die Speicherzellen der NV-Medien 122, und die Schreibsteuerung 132 kann die Schreibsequenz repräsentieren, gemäß dem, was hier beschrieben ist. Die Schreibsteuerung 132 kann Schreibvorgänge auf die NV-Medien 122 implementieren, gemäß dem, was hier beschrieben ist, wobei Schreibvorgänge in ungenutzten Adressenraum oder ungenutzte Blöcke geschrieben werden. Die vorherigen Daten werden nicht sofort überschrieben, sondern können durch eine Rollback-Operation wiederhergestellt werden.
  • Das System 102 weist eine Speichersteuereinheit auf, um eine kontinuierliche Prüfpunktsetzung zu implementieren. In einer Ausführungsform ist die Speichersteuereinheit ein Teil der Steuereinheit 130, für ein SSD 120 mit geschlossenem Kanal (wie in 3A). In einer Ausführungsform ist die Speichersteuereinheit ein Teil des Chipsatzes 114, für ein SSD 120 mit offenem Kanal (wie in 3B). In einer Ausführungsform verfolgt die Speichersteuereinheit die letzten X Datenvektoren oder die Assoziation einer logischen Adresse mit vorherigen physischen Adressen. Die Assoziationen mit vorherigen physischen Adressen beziehen sich auf physische Adressen, die zuvor mit den logischen Adressen assoziiert waren. Die vorherigen physischen Adressen speichern die veralteten Daten, bis sie rückgeschrieben oder gelöscht werden. In einer Ausführungsform werden alle Schreibvorgänge als Modifikationen an Daten angesehen, wobei davon ausgegangen wird, dass sie den Zustand der Daten im SSD 120 modifizieren.
  • Mit der Speichersteuereinheit-Verfolgungsdatenmodifikation kann das System 102 eine automatische und kontinuierlich Prüfpunktsetzung liefern, ohne dem Host 110 signifikante zusätzliche Berechnungen oder I/O aufzuerlegen. In einer Ausführungsform nimmt die Schreibsteuerung 132 Low Level-Medienverwaltungsoperationen vor, welche vorherige Kopien von Daten halten, die im SSD 120 verfügbar sind. In einer Ausführungsform nützt die Speichersteuereinheit solche vorherigen Kopien, indem ihre erneute Beanspruchung verhindert wird, um Rollback-Operationen zuzulassen. In einer Ausführungsform generiert und verwaltet die Speichersteuereinheit Protokollinformationen, die einen I/O-Verlauf liefern können, der verwendet werden kann, um spezifische Flüsse leicht zu identifizieren. In einer Ausführungsform kann der I/O-Verlauf Flüsse von Schreibvorgängen auf einer OS-Ebene identifizieren. In einer Ausführungsform kann der I/O-Verlauf Flüsse auf Prozess-, Strang- oder Komponentenebene oder einer Kombination identifizieren. Beispielsweise kann entweder das Betriebssystem oder ein Sicherheitsagent (z.B. Sicherheits-Software, die unter dem OS ausgeführt wird) die letzte geschriebene LBA (logische Blockadresse) bestimmen, bevor die Korruption beobachtet wurde. Die Fähigkeit, eine spezifische LBA vor der Korruption zu identifizieren, kann das Schreiben auf Malware zurückverfolgen, die ansonsten auf einer Maschine verborgen sein könnte.
  • Es ist klar, dass, obwohl das System 102 mit dem SSD 120 veranschaulicht ist, andere nicht-flüchtige Medien verwendet werden können. Im Allgemeinen kann die kontinuierliche Prüfpunktsetzung in einem beliebigen Speichersystem implementiert werden, das eine Indirektion umfasst, eine Hintergrund-Adressenraumrückforderung aufweist und ein Protokoll der Schreibvorgänge implementiert. In einer Ausführungsform ist das Protokoll ein strukturiertes Protokoll aus Schreibdaten, um vorherige logische-physische Adressenassoziationen zu identifizieren. Obwohl das System 102 ein Computersystem mit einem Host-Betriebssystem und einem NAND-SSD zum Speichern von Daten repräsentieren kann, kann das System 102 somit alternativ dazu Software-Systeme, einen SPI- (seriellen peripheren Schnittstellen-) Speicher oder einen Speicher, der mit einem SPI-Bus verbunden ist, LSM-basierte (log-structured-merge-based) Schlüsselwertelösungen, dreidimensionale Kreuzpunkt- (3DXP-) Speicher-basierte Lösungen oder andere Speichersysteme aufweisen. In einer Ausführungsform verwendet die Speichersteuereinheit einen flüchtigen Speicher (z.B. eine dynamische Speichervorrichtung mit wahlfreiem Zugriff (DRAM), eine synchrone Speichervorrichtung mit wahlfreiem Zugriff (SRAM), oder andere), um die Protokollinformationen zu speichern. Die Protokollinformationen können alternativ dazu als SSD-Zustandsinformationen oder Ledger bezeichnet werden. Für eine Speichersteuereinheit im Host 110 kann der Host den Speicher für das Ledger aufweisen. Für eine Speichersteuereinheit im SSD 120 kann das SSD den Speicher für das Ledger aufweisen.
  • 1B ist ein Blockbild einer Ausführungsform eines Systems mit einem Solid State-Laufwerk (SSD) mit einer Steuereinheit mit programmierbarer Firmware, um eine kontinuierliche Prüfpunktsetzung zu implementieren. Das System 104 liefert ein Beispiel eines Systems gemäß dem System 102 von 1A. Das System 104 veranschaulicht die logischen Schichten des Hosts und des SSD einer Hardware-Plattform gemäß dem System 102. In einer Ausführungsform liefert der Host 140 ein Beispiel des Hosts 110. In einer Ausführungsform liefert das SSD 150 ein Beispiel des SSD 120.
  • In einer Ausführungsform weist der Host 140 das Host-OS 142 auf, das ein Host-Betriebssystem oder eine Software-Plattform für den Host repräsentiert. Das Host-OS 142 kann eine Plattform aufweisen, auf der Anwendungen, Dienste, Agenten und/oder andere Software ausgeführt werden, und wird durch einen Prozessor ausgeführt. Das Dateisystem 144 repräsentiert Steuerlogik zur Steuerung des Zugriffs auf die NV-Medien. Das Dateisystem 144 kann verwalten, welche Adressen oder Speicherorte verwendet werden, um welche Daten zu speichern. Es gibt zahlreiche bekannte Dateisysteme, und das Dateisystem 144 kann bekannte Dateisysteme oder andere herstellerspezifische Systeme implementieren. In einer Ausführungsform ist das Dateisystem 144 ein Teil des Host-OS 142. Treiber 146 repräsentieren Module auf Systemebene, die Hardware steuern. In einer Ausführungsform umfassen die Treiber 146 eine Software-Anwendung, um die Hardware des SSD 150 zu steuern.
  • Die Steuereinheit 160 des SSD 150 weist Firmware 164 auf, die Steuer-Software/Firmware für die Steuereinheit repräsentiert. In einer Ausführungsform weist die Steuereinheit 160 die Host-Schnittstelle 162 auf, die eine Schnittstelle zum Host 150 repräsentiert- In einer Ausführungsform weist die Steuereinheit 160 die NV-Schnittstelle 166 auf, die eine Schnittstelle zu(r) NV-Medienvorrichtung(en) 170 repräsentiert. Es ist klar, dass die Steuereinheit 160 Hardware aufweist, um eine Schnittstelle mit dem Host 140 zu bilden, von dem angenommen werden kann, dass er von Host-Schnittstellen-Software/Firmware 162 gesteuert wird. Ähnlich ist es klar, dass die Steuereinheit 160 Hardware aufweist, um eine Schnittstelle mit den NV-Medien 170 zu bilden. In einer Ausführungsform kann Code für die Host-Schnittstelle 162 ein Teil der Firmware 164 sein. In einer Ausführungsform kann Code für die NV-Schnittstelle 166 ein Teil der Firmware 164 sein.
  • Die Firmware 164 steuert die Hardware-Schnittstellen, um eine Kommunikation zu ermöglichen. In einer Ausführungsform weist die Firmware 164 eine Speichersteuereinheit auf, die eine kontinuierliche Prüfpunktsetzung vornimmt, gemäß dem, was oben beschrieben wird. Es ist klar, dass mehr Hardware-Implementierung mit der Steuereinheit 160 die Betriebsgeschwindigkeit des SSD erhöhen wird. Somit können Befehlssequenzen in Firmware (z.B. Firmware 164 oder NV-Schnittstelle 166) implementiert werden, allgemein ist jedoch Firmware langsamer als Hardware. Firmware ist flexibler, da sie mehr Operationen vornehmen und modifiziert werden kann, Hardware ist jedoch allgemein viel schneller als Firmware-Implementierungen. Es ist klar, dass es Aspekte der Interaktion gibt, die in allen Fällen in Firmware handgehabt werden, wobei ersichtlich ist, dass die Firmware die Hardware steuert. Firmware-Implementierungen beziehen sich jedoch auf eine Implementierung, in der die gesamte Sequenzierung und die gesamte Verarbeitung von Signalen in Firmware-gesteuerter Logik vorgenommen wird. Eine Hardware-Implementierung umfasst eine Hardware-Verarbeitung mindestens einiger der Signalaustausche. Die Firmware-Steuerung über die Hardware muss sowohl mit der Hardware-Schnittstelle der Steuereinheit 160 als auch der Hardware und Firmware der NV-Vorrichtung 170 kompatibel sein.
  • Ein Beispiel von Hardware gegenüber Firmware kann durch die Fehlersteuerung 168 dargestellt werden. Die Fehlersteuerung 168 behandelt Datenfehler in Daten, auf die zugegriffen wird, und Grenzfälle hinsichtlich der Compliance mit der Signalisierung und Kommunikationsschnittstellenbildung. Es ist möglich, mindestens einen Teil der Fehlersteuerung in Hardware zu implementieren. Die meiste Fehlersteuerung wird jedoch wegen der Flexibilität in Firmware implementiert, auch wenn diese langsamer ist als eine Hardware-Implementierung. Eine Hardware-Implementierung kann einen unpraktikablen Betrag von zu implementierender Hardware-Logik erfordern. Ähnlich behandelt in einer Ausführungsform die Firmware 164 Löschoperationen und Treiberbereinigungsprozeduren.
  • Die NV-Medien 170 repräsentieren eine nicht-flüchtige Vorrichtung gemäß irgendeiner hier beschriebenen Ausführungsform. In einer Ausführungsform umfassen die NV-Medien 172 einen Cache 172, der einen Eingabe- oder Ausgabepuffer repräsentiert, um temporäre Daten für einen Austausch mit der Steuereinheit 160 zu speichern. Die Verwendung des Caches 172 kann es der NV-Vorrichtung 170 ermöglichen, Befehle asynchron zu erhalten, und weiterhin synchron an dem Befehl zu arbeiten und auf diesen zu antworten. Die Zeiteinstellung kann synchron gemacht werden, indem die Daten im Cache 172 gepuffert werden. Der Speicher 174 repräsentiert die Speicherorte der NV-Medien 170.
  • In einer Ausführungsform implementiert die Firmware 164 Logik für eine Speichersteuereinheit, die Prüfpunktsetzungsoperationen vornimmt. Die Firmware 164 kann die Logik aufweisen, um eine Protokoll- oder Ledgerverwaltung zu implementieren. In einer Ausführungsform kann das Dateisystem 144 Logik für eine Speichersteuereinheit implementieren, die Prüfpunktsetzungsoperationen vornimmt. Das Dateisystem 144 kann die Logik aufweisen, um eine Protokoll- oder Ledgerverwaltung zu implementieren. Wann immer die Speichersteuereinheit implementiert ist, kann die Speichersteuereinheit Schreibvektoren verfolgen, um ein Zurückrollen einer Stufe des Speichers zu ermöglichen. In einer Ausführungsform kann die Firmware 164 oder das Dateisystem 144 oder eine Kombination APIs exponieren (Anwendungsprogrammierungsschnittstellen), um Prüfpunktsetzungsoperationen zu ermöglichen. In einer Ausführungsform fordert ein Benutzer ein Datenzustands-Rollback über eine Anwendung an, die eine API verwendet, um auf die Rollback-Funktionalität zuzugreifen.
  • In einer Ausführungsform kann das System 104 eine Rollback-Fähigkeit für das SSD 150 in Einheiten geschriebener Datenmengen oder in Zeiteinheiten oder einer Kombination liefern. Beispielsweise kann der Host 140 ein Rollback anfordern, um das SSD 150 in einen Zustand zurückzuversetzen, den es X Sektoren von Schreibvorgängen zuvor hatte. Als weiteres Beispiel kann der Host 140 ein Rollback anfordern, um das SSD 150 in einen Zustand zurückzuversetzen, den es vor Y Minuten hatte. X und Y könnten große oder kleine Zahlen sein, und Y kann ein Bruch sein, mit auslegbaren Maximalwerten. Es ist klar, dass ein höheres Maximum einen Kompromiss bei der Implementierung hinsichtlich höherer Kosten aufweist. In einer Ausführungsform kann der Host 140 durch die Speichersteuereinheit das SSD 150 abfragen, um den Treibzustand zu einer vorherigen Zeit abzufragen, ohne ein Rollback vorzunehmen. Somit kann der Host 140 beispielsweise einen vorherigen Zustand lesen, ohne das SSD 150 in den vorherigen Zustand zurückzuversetzen.
  • 1C ist ein Blockbild einer Ausführungsform eines Systems mit einer nicht-flüchtigen Medienvorrichtung mit programmierbarer Firmware im Host, um eine kontinuierliche Prüfpunktsetzung zu implementieren. Das System 106 liefert ein Beispiel logischer Schichten eines Hosts und einer nicht-flüchtigen Medienvorrichtung, die keine Steuereinheit aufweist. Während das SSD ein Beispiel einer nicht-flüchtigen Speichervorrichtung liefert, ist es klar, dass ein SSD oder eine nicht-flüchtige Speichervorrichtung ohne eine Steuereinheit anstelle des SSD 120 des Systems 102 verwendet werden kann. In einer Ausführungsform kann die nicht-flüchtige Speichervorrichtung eine eingebettete Speichervorrichtung sein oder aufweisen, wie ein Flash-Speicher, der auf der Hardware-Plattform eingebettet ist, oder eine Mutterplatine einer Rechenvorrichtung mit einem Host-Prozessor.
  • In einer Ausführungsform weist der Host 180 das Host-OS 182 auf, das ein Host-Betriebssystem oder eine Software-Plattform für den Host repräsentiert, die auf einem Prozessor oder einer CPU ausgeführt werden. Das Host-OS 182 kann eine Plattform aufweisen, auf der Anwendungen, Dienste, Agenten und/oder andere Software ausgeführt werden, und wird von einem Prozessor ausgeführt. Das Dateisystem 184 repräsentiert eine Steuerlogik zur Steuerung des Zugriffs auf die NV-Medien. Das Dateisystem 184 kann verwalten, welche Adressen oder Speicherorte verwendet werden, um welche Daten zu speichern. Es gibt zahlreiche bekannte Dateisysteme, und das Dateisystem 184 kann bekannte Dateisysteme oder andere herstellerspezifische Systeme implementieren. In einer Ausführungsform ist das Dateisystem 184 ein Teil des Host-OS 182. Treiber 186 repräsentieren Module auf Systemebene, die Hardware steuern. In einer Ausführungsform umfassen die Treiber 186 eine Software-Anwendung, um eine Hardware-Schnittstelle zu den NV-Medien 190 zu steuern.
  • Die NV-Medien 190 repräsentieren eine nicht-flüchtige Vorrichtung gemäß irgendeiner hier beschriebenen Ausführungsform. In einer Ausführungsform repräsentieren die NV-Medien 190 eine eingebettete Speichervorrichtung. In einer Ausführungsform umfassen die NV-Medien 190 einen Cache 192, der einen Eingabe- oder Ausgabepuffer oder einen Cache repräsentiert, um temporäre Daten für einen Austausch mit dem Host 180 zu speichern. Die Verwendung des Caches 192 kann es der NV-Vorrichtung 190 ermöglichen, asynchron Befehle zu empfangen, und weiterhin synchron an dem Befehl zu arbeiten und auf diesen zu antworten. Die Zeiteinstellung kann synchron gemacht werden, indem die Daten im Cache 192 gepuffert werden. Der Speicher 194 repräsentiert die Speicherorte der NV-Medien 190.
  • Das Dateisystem 184 steuert Hardware-Schnittstellen, um eine Kommunikation zwischen dem Host 180 und den NV-Medien 190 zu ermöglichen. In einer Ausführungsform umfasst das Dateisystem 184 eine Speichersteuereinheit, die eine kontinuierliche Prüfpunktsetzung vornimmt, gemäß dem, was oben beschrieben wird. In einer Ausführungsform umfasst das Dateisystem 184 eine Prüfpunktsetzungs-Engine 188, um die kontinuierliche Prüfpunktsetzung vorzunehmen. Die Prüfpunktsetzungs-Engine 188 repräsentiert Logik innerhalb des Dateisystems 184, um eine Protokoll- oder Ledgerverwaltung zu implementieren. In einer Ausführungsform kann die Prüfpunktsetzungs-Engine Schreibvektoren verfolgen, um ein Zurückrollen eines Zustands des Speichers 194 zu ermöglichen. In einer Ausführungsform kann das Dateisystem 184 APIs exponieren, um einen Zugriff auf die Prüfpunktsetzungs-Engine 188 für Prüfpunktsetzungsoperationen zu ermöglichen. In einer Ausführungsform fordert ein Benutzer ein Datenzustands-Rollback über eine Anwendung an, die eine API verwendet, um auf die Rollback-Funktionalität zuzugreifen.
  • In einer Ausführungsform kann das System 104 eine Rollback-Fähigkeit für die NV-Medien 190 in Einheiten geschriebener Datenmengen oder in Zeiteinheiten oder einer Kombination liefern. Beispielsweise kann der Host 180 ein Rollback anfordern, um die NV-Medien 190 in einen Zustand zurückzuversetzen, die sie X Sektoren von Schreibvorgängen zuvor hatten. Als weiteres Beispiel kann der Host 180 ein Rollback anfordern, um die NV-Medien 190 in einen Zustand zurückzuversetzen, den sie vor Y Minuten hatten. X und Y könnten große oder kleine Zahlen sein, und Y kann ein Bruch sein, mit auslegbaren Maximalwerten. Es ist klar, dass ein höheres Maximum einen Kompromiss bei der Implementierung hinsichtlich höherer Kosten aufweist. In einer Ausführungsform kann der Host 180 durch die Speichersteuereinheit die NV-Medien 190 abfragen, um den Treibzustand zu einer vorherigen Zeit abzufragen, ohne ein Rollback vorzunehmen. Somit kann der Host 180 beispielsweise einen vorherigen Zustand lesen, ohne die NV-Medien 190 in den vorherigen Zustand zurückzuversetzen.
  • 2 ist ein Blockbild einer Ausführungsform eines Systems mit einem Solid State-Laufwerk (SSD) mit einer Prüfpunktsetzung in einer Übersetzungsschicht. Das System 200 liefert ein Beispiel einer Ausführungsform eines Rechensystems gemäß dem System 102 von 1A oder dem System 104 von 1B. Der Host 210 repräsentiert eine Host-Hardware- und -Software-Plattform. Der Host 210 generiert Datenanforderungen, wobei die Anforderungen in Datenzugriffsoperationen auf das SSD 220 resultieren. Der Host 210 kann eine Speichersteuereinheit aufweisen, die den Zugriff vom Host 210 auf das SSD 220 steuert. Eine solche Speichersteuereinheit kann von einer Steuereinheit 230 des SSD 220 unterschieden werden. Die Steuereinheit 230 repräsentiert eine Steuereinheit auf dem SSD 220, um ankommende Anforderungen für einen Datenzugriff vom Host 210 zu verwalten.
  • In einer Ausführungsform weist das System 200 einen flüchtigen Speicher 212 auf, der einen flüchtigen Speicher repräsentiert, auf den der Host 210 zum temporären Speichern von Daten zugreifenkann. Beispielsweise kann der Speicher 212 als Betriebsspeicher des Systems 200 angesehen werden, während das SSD 220 einen Speicher aufweisen kann, der nicht direkt vom Host 210 ausgeführt wird. In einer Ausführungsform werden alle Daten und Code zur Ausführung durch den Host zuerst vom SSD 220 in den Speicher 212 geladen. In einer Ausführungsform führt der Host 210 direkt Code oder Daten vom SSD 220 aus, indem beispielsweise Daten in einen Cache geladen werden (nicht explizit gezeigt). Obwohl nicht spezifisch gezeigt, ist in einer Ausführungsform das SSD 220 mit dem Speicher 212 gekoppelt, und kann Daten zu oder von dem Speicher 212 transferieren, wie ein Laden eines Programms zur Ausführung durch einen Host-Prozessor, ein Schreiben von Daten, die von einer Host-Anwendung generiert werden, oder eine andere Aktion.
  • In einer Ausführungsform ist die Steuereinheit 230 eine benutzerdefinierte Vorrichtung (z.B. eine ASIC), die einen Prozessor 232, einen Puffer 234 und eine oder mehrere NV-Speicherschnittstellen 240 aufweist. Der Prozessor 232 repräsentiert einen Mikroprozessor oder eine Mikrosteuereinheit oder andere Verarbeitungslogik auf der Steuereinheit 230, die es der Steuereinheit 230 ermöglicht, Operationen in Bezug auf die Verarbeitung ankommender Anforderungen auszuführen und auf die nicht-flüchtigen Medien ansprechend auf die Anforderungen zuzugreifen. Es ist klar, dass der Prozessor 232 von einem Prozessor getrennt ist, der im Host 210 als Teil der Host-Hardware-Plattform eingeschlossen ist. Der Puffer 234 repräsentiert einen Puffer oder Cache innerhalb der Steuereinheit 230, der es dem SSD 220 ermöglicht, mehrere Anforderungen oder Instruktionen zu empfangen und zu puffern und/oder Daten aus dem Host 210 zu schreiben. Der Puffer 234 kann auch einen Puffer oder Cache repräsentieren, um Daten zu puffern, die an den Host 210 auszugeben sind (z.B. Lesedaten). In einer Ausführungsform weist die Steuereinheit 230 einen getrennten Eingangs- und Ausgangspuffer 234 auf.
  • Die Schnittstelle 240 repräsentiert Hardware und Software/Firmware innerhalb der Steuereinheit 230, um einen Zugriff auf den NV-Chip 250 zu ermöglichen. In einer Ausführungsform weist die Steuereinheit 230 mehrere Schnittstellen 240 auf, von denen jede mit mehreren NV-Chips 250 verbunden sein kann. Jeder NV-Chip 250 umfasst 2N Ebenen und weist die Schnittstelle 252 auf, um mit einer entsprechenden Schnittstelle 240 der Steuereinheit 230 gekoppelt zu werden. In einer Ausführungsform umfasst die Schnittstelle 254 den Cache 254, um empfangene Anforderungen zu speichern und Daten zu schreiben, oder um Lesedaten zu speichern.
  • Die Schnittstellen 240 weisen Zugriffs-Hardware 242 auf, die Hardware-Treiber und Schnittstellenschaltungen repräsentiert, um Signale mit dem NV-Chip 250 zu generieren und zu empfangen. Die Zugriffs-Hardware 242 kann Verarbeitungs-Hardware umfassen, um die Verarbeitung von Datenaustauschen zwischen der Steuereinheit 230 und den NV-Medien zu unterstützen. Signalleitungen 244 können in einer Ausführungsform als Zugriffs-Hardware 242 angesehen werden. Die Signalleitungen 244 sind veranschaulicht, um darzustellen, dass das SSD 220 einen oder mehrere physische Busse von der Schnittstelle 240 zum NV-Chip 250 aufweist.
  • In einer Ausführungsform umfasst das System 200 eine Übersetzungsschicht, um eine Speichersteuereinheit zu umfassen oder in Verbindung mit dieser zu arbeiten, die kontinuierliche Prüfpunktsetzungsfähigkeiten liefert. In einer Ausführungsform umfasst das System 200 die Übersetzungsschicht 216 im Host 210. In einer Ausführungsform umfasst das System 200 die Übersetzungsschicht 236 in der Steuereinheit 230 des SSD 220. Die Übersetzungsschicht 216 ist veranschaulicht, dass sie die Prüfpunktsetzungs-Engine 218 umfasst, die Logik repräsentiert, um Protokollinformationen zu halten und die Zugänglichkeit früherer Daten sicherzustellen. Die Zugänglichkeit und Protokollinformationen können gemäß einem ausgelegten Parameter im Host 210 sein, wobei der Parameter eine Rollback-Fähigkeit für den Zustand des SSD 220 identifiziert. Die Übersetzungs-Engine 236 kann die Prüfpunktsetzungs-Engine 238 als Logik umfassen, die mit dem, was hier für die Prüfpunktsetzungs-Engine 218 beschrieben wird, vergleichbar ist.
  • In einer Ausführungsform kann die Prüfpunktsetzungs-Engine 218 oder 238 Angriffe detektieren und verhindern, welche die Fähigkeit zur Vornahme eines Rollbacks beeinträchtigen würden. Beispielsweise kann für eine Rollback-Fähigkeit auf der Basis einer Anzahl von Schreibvorgängen die Prüfpunktsetzungs-Engine das kontinuierliche Schreiben durch einen Agenten detektieren, um zu verhindern, dass ein Angriff kontinuierlich schreibt, um die Rollback-Fähigkeit zu entfernen. In einer Ausführungsform kann die Prüfpunktsetzungs-Engine die explizite Autorisierung vom Benutzer erfordern, um extensive Schreibvorgänge vorzunehmen, beispielsweise durch momentanes Anhalten der Schreibvorgänge über eine Schwelle hinaus (z.B. einen Prozentsatz der maximalen Rollback-Schwelle), und vom Benutzer eine Bestätigung anfordern, bevor es dem Agenten gestattet wird, das Schreiben fortzusetzen.
  • Die Prüfpunktsetzungs-Engine (entweder 218 oder 238) kann ein Protokoll der neuesten N Schreibvorgänge halten, wobei N eine auslegbare Datenmenge für ein Rollback repräsentiert. Die Prüfpunktsetzungs-Engine kann die veralteten Daten für die neuesten N Schreibvorgänge halten. In einer Ausführungsform zeigen die N Schreibvorgänge eine Anzahl von Schreibvorgängen an, die innerhalb einer Zeitperiode auftreten. In einer Ausführungsform zeigen die N Schreibvorgänge einen Betrag einer Speicherkapazität oder ein Volumen von Schreibdaten an. In einer Ausführungsform kann das System 200, durch das Halten von Protokolldaten, einem Benutzer ermöglichen, den Zustand des SSD 220 in eine beliebige Granularität von 1 Einheit zuvor bis N Einheiten zuvor zurückzurollen. In einer Ausführungsform ermöglicht die Prüfpunktsetzungs-Engine ein Lesen eines beliebigen Zustands innerhalb der N Einheiten des Schreibens, wobei jedoch der Zustand nicht zurückgerollt wird. Ein Rollback des Zustands umfasst das Assoziieren einer logischen Adresse mit einer vorherigen physischen Adresse, wo die veralteten Daten gespeichert sind. Ein Lesen ohne Rollback umfasst ein Lesen der Daten der vorherigen physischen Adresse ohne Änderung der logischen Adressenassoziation. Ein Rollback umfasst eine Änderung, welche Daten als aktiv angesehen werden. Ein Lesen ohne Rollback ändert die aktiven Daten nicht.
  • In einer Ausführungsform hält die Prüfpunktsetzungs-Engine die veralteten Daten durch das Verhindern einer Speicherbereinigung der Daten. Beispielsweise kann ein Speicherbereinigungsprozess mit einem modifizierten Betrieb vorgesehen werden, um eine Rückforderung eines physischen Adressenraums zu verhindern, wenn er Daten enthält, die innerhalb der Rollback-Fähigkeit des Systems liegen. In einer Ausführungsform hält die Prüfpunktsetzungs-Engine die veralteten Daten durch das Verhindern einer Defragmentierung der Daten, wo gültige Abschnitte von Datenblöcken kombiniert werden, um einen Datenblock von mehreren Datenblöcken zu füllen, die korrumpierte oder veraltete Abschnitte aufweisen. In einer Ausführungsform kann die Defragmentierung als Spezialfall der Speicherbereinigung angesehen werden. In einer Ausführungsform kann die Defragmentierung als dieselbe Operation wie die Speicherbereinigung angesehen werden.
  • 3A ist ein Blockbild einer Ausführungsform eines Systems, das eine kontinuierlich Prüfpunktsetzung mit einem SSD mit geschlossenem Kanal implementiert. Das System 302 repräsentiert ein SSD mit geschlossenem Kanal. Das System 302 veranschaulicht einen Benutzerraum 310 und einen Kernelraum 320, welche Umgebungen repräsentieren, die von einem Host-Prozessor ausgeführt werden. Der Host-Prozessor liefert die Steuerung eines Systems, in dem das SSD 330 enthalten ist. Der Kernelraum 320 repräsentiert eine Umgebung, die von einem Host-Betriebssystem (OS) vorgesehen wird, das auf dem Host-Prozessor ausgeführt wird. Der Benutzerraum 310 repräsentiert eine Umgebung von Komponenten auf Benutzerebene oder dem Benutzer zugewandten Agenten, die von dem Host-Prozessor ausgeführt werden. Die Komponenten innerhalb des Benutzerraums 310 greifen auf Steuerlogik des Kernelraums 320 für einen Zugriff auf das SSD 330 zurück. Der Kernelraum 320 kann Treiber umfassen, die Hardware-Schnittstellenkomponenten steuern und direkt mit diesen eine Schnittstelle bilden, welche mit dem SSD 330 zwischenverbunden sind.
  • Der Benutzerraum 310 weist Prozesse 312 auf, die Anwendungen, Programme oder Agenten im Host-Syystem repräsentieren. Die Prozesse 312 können einzelne Programme, Prozesse, Stränge oder eine Kombination repräsentieren. Der Kernelraum 320 umfasst das Dateisystem 322, das Logik repräsentiert, um das Speichern der Prozesse 312 im SSD 330 zu steuern, oder die Daten, die von den Prozessen verwendet werden, oder eine Kombination. Viele Dateisysteme sind bekannt und können im System 302 verwendet werden. Der Kernelraum 320 umfasst den Metadatenverwalter 324, der Logik repräsentiert, um die Metadaten zu verwalten, die mit den im SSD 330 gespeicherten Daten assoziiert sind. Die Metadaten können Informationen über die im SSD 330 gespeicherten Daten umfassen, wie Lese- und Schreibprotokolle, korrumpierte Datenprotokolle, Adresseninformationen oder andere Informationen.
  • Die SSD-Schnittstelle 326 repräsentiert Logik, um auf das SSD zuzugreifen. Die SSD-Schnittstelle 326 ermöglicht es dem Kernelraum 320, Leseanforderungen zu senden und Daten in das SSD zu schreiben. Die SSD-Schnittstelle 326 kann einen Puffer und Treiber zur Kommunikation mit der SSD-Schnittstelle 332 des SSD 330 aufweisen. Die SSD-Schnittstelle 332 repräsentiert Logik, um einen Zugriff auf das SSD durch den Kernelraum 320 zu ermöglichen, und kann gleich oder ähnlich der SSD-Schnittstelle 326 von der SSD-Seite sein. Der Medienverwalter 334 repräsentiert Logik im SSD 330, um den Zugriff auf Speichermedien 236 zu steuern. Die Speichermedien 336 repräsentieren die Speicherorte, wo Daten innerhalb des SSD 330 gespeichert sind. Die Speichermedien 336 umfassen adressierbare Speicherorte, die Speicherblöcke sein können.
  • In einer Ausführungsform umfasst das SSD 330 eine Übersetzungs-Engine 338, wie eine Flash-Übersetzungsschicht (FTL). Die Übersetzungs-Engine 338 liefert eine Indirektion, um den physischen Adressenraum für logische Adressen zu identifizieren, wie logische Blockadressen (LBAs) von Anforderungen, die vom Dateisystem 322 empfangen werden. In einer Ausführungsform ist die Übersetzungs-Engine 338 ein Teil des Medienverwalters 334. In einer Ausführungsform liefert die Übersetzungs-Engine 338 eine kontinuierliche Prüfpunktsetzung gemäß einer Ausführungsform der Prüfpunktsetzung, wie hier beschrieben.
  • 3B ist ein Blockbild einer Ausführungsform eines Systems, das eine kontinuierliche Prüfpunktsetzung mit einem SSD mit offenem Kanal implementiert. Das System 304 repräsentiert ein SSD mit offenem Kanal. In einer Ausführungsform können viele oder die meisten der Komponenten des Systems 304 gleich sein wie das System 302. Im System 304 ist die Indirektionsschicht in der Host-Seite eingeschlossenen anstelle der SSD-Seite. Das System 304 veranschaulicht den Benutzerraum 340 und den Kernelraum 350, die Umgebungen repräsentieren, welche von einem Host-Prozessor ausgeführt werden. Der Host-Prozessor liefert eine Steuerung eines Systems, in dem das SSD 360 eingeschlossen ist. Der Kernelraum 350 repräsentiert eine Umgebung, die vom Host-OS vorgesehen wird, das auf dem Host-Prozessor ausgeführt wird. Der Benutzerraum 340 repräsentiert eine Umgebung von Komponenten auf Benutzerebene oder dem Benutzer zugewandten Agenten, die vom Host-Prozessor ausgeführt werden. Die Komponenten innerhalb des Benutzerraums 340 greifen auf Steuerlogik des Kernelraums 350 für einen Zugriff auf das SSD 360 zurück. Der Kernelraum 350 kann Treiber umfassen, die Hardware-Schnittstellenkomponenten steuern und direkt mit diesen eine Schnittstelle bilden, welche mit dem SSD 360 zwischenverbunden sind.
  • Der Benutzerraum 340 weist Prozesse 342 auf, die Anwendungen, Programme oder Agenten im Host-Syystem repräsentieren. Die Prozesse 342 können einzelne Programme, Prozesse, Stränge oder eine Kombination repräsentieren. Der Kernelraum 350 umfasst das Dateisystem 352, das Logik repräsentiert, um das Speichern der Prozesse 342 im SSD 360 zu steuern, oder die Daten, die von den Prozessen verwendet werden, oder eine Kombination. Viele Dateisysteme sind bekannt und können im System 302 verwendet werden. Der Kernelraum 350 umfasst den Metadatenverwalter 354, der Logik repräsentiert, um die Metadaten zu verwalten, die mit den im SSD 360 gespeicherten Daten assoziiert sind. Die Metadaten können Informationen über die im SSD 360 gespeicherten Daten umfassen, wie Lese- und Schreibprotokolle, korrumpierte Datenprotokolle, Adresseninformationen oder andere Informationen.
  • Die SSD-Schnittstelle 356 repräsentiert Logik, um auf das SSD zuzugreifen. Die SSD-Schnittstelle 356 ermöglicht es dem Kernelraum 350, Leseanforderungen zu senden und Daten in das SSD 360 zu schreiben. Die SSD-Schnittstelle 356 kann einen Puffer und Treiber zur Kommunikation mit der SSD-Schnittstelle 362 des SSD 360 aufweisen. Die SSD-Schnittstelle 362 repräsentiert Logik, um einen Zugriff auf das SSD durch den Kernelraum 350 zu ermöglichen, und kann gleich oder ähnlich der SSD-Schnittstelle 356 von der SSD-Seite sein. Der Medienverwalter 364 repräsentiert Logik im SSD 360, um einen Zugriff auf Speichermedien zu steuern. Die Speichermedien repräsentieren die Speicherorte, wo Daten innerhalb des SSD 360 gespeichert sind. Die Speichermedien 366 umfassen adressierbare Speicherorte, die Speicherblöcke sein können.
  • In einer Ausführungsform umfasst weist der Kernelraum 350 eine FTL (Flash-Übersetzungsschicht) 358 auf, die ein Beispiel einer Übersetzungsschicht liefert. Die FTL 358 liefert eine Indirektion, um den physischen Adressenraum für logische Adressen zu identifizieren, wie logische Blockadressen (LBAs) von Anforderungen, die an das SSD 360 zu senden sind. In einer Ausführungsform liefert die FTL 358 eine kontinuierliche Prüfpunktsetzung gemäß einer Ausführungsform der Prüfpunktsetzung, wie hier beschrieben.
  • Egal ob auf die Übersetzungsschicht 338 des Systems 302 oder die FTL 358 des Systems 304 Bezug genommen wird, weist das SSD-System ein Indirektionselement auf. In einer Ausführungsform wird die Indirektion mit einer logischen zu physischen (L2P) Tabelle vorgesehen, die logische auf physische Adressen mappt. In einer Ausführungsform umfasst die Indirektion eine Hintergrund-Speicherbereinigung (GC) oder Defragmentierung (defrag). In einer Ausführungsform umfasst die Indirektion eine Bandjournaling-Fähigkeit. In einer Ausführungsform umfasst die Indirektion einen oder mehrere Energieverlust-Wiederherstellungsalgorithmen. Die Indirektionsmechanismen habeneine Sektorgröße zur Verwaltung der Daten. In einer Ausführungsform ist die Sektorgröße gleich der Granularität der Indirektionseinheit (IU) des SSD (z.B. 4 KB). In einer Ausführungsform hat jedes Schreiben, das von dem Kernelraum für das SSD generiert wird (z.B. ein Host-Schreiben), einen einzigen Sektor.
  • Der einfachen Beschreibung halber kann die folgende Terminologie verwendet werden. Es ist klar, dass eine andere Notation oder Terminologie verwendet werden kann, um ähnliche Konzepte zu beschreiben. Somit dient die verwendete Sprache nur Zwecken der Beschreibung und ist nicht einschränkend. Eine Seite bezieht sich auf einen physischen nicht-flüchtigen Ort, auf den eine IU zeigt. In einer Ausführungsform werden Daten in Einheiten von Seiten geschrieben und gelesen. Eine Löscheinheit (EU) repräsentiert eine Sammlung von Seiten, die gemeinsam gelöscht werden. Beispielsweise kann eine EU ein NAND-Löschblock (EB) sein, oder ein Band, das aus mehreren EBs besteht. In einer Ausführungsform werden während Host-Schreibvorgängen Seiten einer aktuellen EU in einer Reihenfolge geschrieben, bis die EU voll ist, und dann wird eine leere aktuelle EU für nachfolgende Host-Schreibvorgänge herangezogen. Die Variable S kann sich auf die maximale Anzahl von Sektor-Schreibvorgängen beziehen, die zurückgerollt werden können. In einer Ausführungsform kann sich S auf eine maximale Zeitdauer beziehen, für die ein Schreiben zurückgerollt werden kann. In einer Ausführungsform ist S durch den Benutzer auslegbar. In einer Ausführungsform ist S durch den Hersteller auslegbar. Neuere Schreibvorgänge beziehen sich auf die letzten S Host-Schreibvorgänge. Wenn beispielsweise ein bis zu 4 GB Rollback gewünscht wird, kann S somit auf 1 Million (1×106 * 4KB = 4GB) eingestellt werden. Neuere EUs beziehen sich auf EUs, welche die neueren Schreibvorgänge enthalten.
  • In einer Ausführungsform umfasst zur Durchführung der Prüfpunktsetzung das Indirektionselement (z.B. Übersetzungsschicht 338, FTL 358) ein Ledger oder ein Protokoll, um Sektoren zu verfolgen, die „zuletzt“ berührt wurden. Wie oben angegeben, ob auf einen Sektor zuletzt zugegriffen wurde, kann von der Auslegung abhängig sein, wobei sich zuletzt auf die Rollback-Fähigkeit durch die Einstellung bezieht. In einer Ausführungsform kann das Ledger die letzte geschriebene EU verfolgen, um sicherzustellen, dass neuere EUs nicht gelöscht werden. In einer Ausführungsform kann der Schreibalgorithmus des Speichermedienverwalters als Art LRU- (am längsten nicht verwendeter) Algorithmus implementiert werden, wobei die neuesten verwendeten EUs die am längsten nicht verwendeten EUs hinauswerfen. Wenn die Rollback-Auslegung beispielsweise für 4 GB ist, und 1 MB neue Schreibaktivität vorliegt, kann somit ein entsprechendes 1 MB neuer EUs durch die Schreibaktivität erzeugt werden. Das Ledger kann das 1 MB „neuester“ EUs verfolgen, und gestatten, dass die „am längsten nicht verwendeten“ EUs durch eine Speicherbereinigung oder defrag erneut beansprucht werden.
  • Eine herkömmliche Indirektion umfasst eine Speicherbereinigungs- oder defrag-Fähigkeit (die für Zwecke der nachstehenden Diskussion einfach als Speicherbereinigung bezeichnet wird). Die Speicherbereinigung ermöglicht es dem System, EUs erneut zu beanspruchen. Sobald eine EU verfügbar wird, arbeitet die Speicherbereinigung als Hintergrundaufgabe und beansprucht den Raum erneut, um diesen für zukünftige Schreibvorgänge vorzubereiten. In einer Ausführungsform umfasst das Indirektionselement eine Speicherbereinigung, die als Hintergrundaufgabe arbeitet, jedoch den EU-Raum nicht erneut beansprucht, bis die EU außerhalb des „neueren“ Fensters ist. Somit wird beispielsweise verhindert, dass die Speicherbereinigung eine EU überschreibt, bis die EU nicht länger ein Teil des Bereichs von EUs ist, der für eine Rollback verfügbar ist. Wenn das Rollback auf S angewendet wird, entweder als Anzahl von Sektor-Schreibvorgängen oder als Zeitdauer, wird eine EU, die innerhalb von S liegt, nicht defragmentiert, und die Speicherbereinigung beansprucht den Speicherraum nur erneut, nachdem die EU außerhalb von S ist.
  • In einer Ausführungsform umfasst das Indirektionselement eine API oder andere Schnittstelle, um es einem Benutzer zu ermöglichen, ein Rollback auszuführen. Es ist klar, dass, obwohl die Prüfpunktsetzung „befehlslos“ ist und keine Interaktion mit einem Benutzer oder Befehl von einem Host erfordert, um die Daten für das Rollback zu halten, oder die Informationen, die notwendig sind, um ein Rollback auszuführen, das System typischerweise ein Rollback ansprechend auf eine Benutzeranforderung ausführen wird. Beispielsweise kann ein Benutzer ein Rollback für eine bestimmte Zeitdauer oder einen Speicherraumbetrag oder Schreiboperationen anfordern, und ansprechend auf die Anforderung von dem Benutzer kann der Host oder das OS einen Rollback-Befehl generieren, um eine Rollback-Operation durch die Prüfpunktsetzungs-Engine auszulösen. In einer Ausführungsform macht eine Rollback-Operation so viele Schreibtransaktionen oder so viel Schreibaktivität rückgängig wie der Benutzer rückgängig zu machen wünscht. In einer Ausführungsform arbeitet die Rollback-Operation durch BIOS (Basic Input/Output System). In einer Ausführungsform arbeitet die Rollback-Operation durch das OS. Die Prüfpunktsetzungs-Engine kann eine API entweder für das BIOS oder das OS oder sowohl das BIOS als auch das OS exponieren.
  • Obwohl die Beschreibung mit Bezugnahme auf den Speicher eines Solid State-Laufwerks erfolgt, ist es klar, dass die beschriebene Prüfpunktsetzung auf andere nicht-flüchtige Speicher gemäß ähnlichen Parametern, wie oben ausgeführt, angewendet werden kann. In einer Ausführungsform umfasst ein Computersystem eine Prüfpunktsetzungs-Engine, um das Speichern einer seriellen peripheren Schnittstellen- (SPI-) Flash-Vorrichtung oder anderen nicht-flüchtigen Speichervorrichtung, die in einem Computersystem eingebettet ist, zu verwalten. Der SPI-Flash kann eine beliebige eingebettete Speichervorrichtung repräsentieren, die ein BIOS speichert, oder eine Verwaltungsmodusmaschine oder einen geschützten Agenten oder eine andere Betriebsumgebung, die außerhalb der Sicht oder Verwaltung eines Host-OS liegt. In einer Ausführungsform kann die Prüfpunktsetzung BIOS-Code oder UEFI- (Unified Extensible Firmware Interface-) Code oder beides schützen.
  • In einer Ausführungsform nimmt die Prüfpunktsetzungs-Engine nur ein Rollback ansprechend auf einen geschützten oder verifizierten Befehl vor. Ein geschützter Befehl kann sich auf einen Befehl beziehen, der von einer vertrauenswürdigen Einheit oder der anfordernden Einheit oder beiden unterzeichnet ist. Der geschützte Befehl kann die Sicherheit bieten, dass die anfordernde Einheit autorisiert ist, die Operation anzufordern. Somit kann die Prüfpunktsetzungs-Engine ein Sicherheitsmodul einschließen, um die Sicherheit eines Rollback-Befehls vor der Ausführung des Rollbacks zu verifizieren. Somit kann die Prüfpunktsetzungs-Engine einen Rollback-Befehl nur nach der Verifikation der Sicherheit des Befehls ausführen. In dieser Hinsicht kann sich ein Rollback-Befehl entweder auf die Änderung des aktuellen Speicherstatus auf einen früheren Zustand oder auf das Lesen eines früheren Speicherzustands ohne Änderung des aktuellen Zustands beziehen.
  • In einer Ausführungsform kann das Ledger der Prüfpunktsetzungs-Engine spezifische Sektoren identifizieren, die zuletzt geschrieben wurden. In einer Ausführungsform kann eine API die neueren Schreibvorgänge nicht nur als Menge an Schreibvorgängen oder als Zeitperiode exponieren, sondern kann die spezifischen Sektoren identifizieren, die geschrieben wurden. In einer Ausführungsform ermöglicht es die API einem Benutzer, spezifische Sektoren auszuwählen, um zurückgerollt zu werden, und andere Sektoren, die nicht zurückzurollen sind. Somit kann die Prüfpunktsetzung, wie hier beschrieben, ein Rollback mit feiner Granularität sowie eine Prüfpunktsetzung umfassen. Beispielsweise kann ein Benutzer auswählen, ausgewählte Sektoren zurückzurollen und andere Sektoren unverändert zu lassen. Die zurückgerollten Sektoren können auf einen vorherigen Zustand des Speichers wiederhergestellt werden, während andere Sektoren nicht in einen vorherigen Zustand zurückgerollt werden. Das selektive Rollback kann ein Auswählen unter Sektoren umfassen, die in der Zeit verschachtelt sind. Wenn beispielsweise eine Reihenfolge des Schreibens von 5 Sektoren war: A, B, C, D, E, kann gemäß dem selektiven Rollback in einer Ausführungsform das System die Sektoren B und E zurückrollen, während die Sektoren A, C und D in ihrem aktuellen Zustand belassen werden.
  • 4 ist ein Blockbild einer Ausführungsform eines Protokolls zur kontinuierlichen Prüfpunktsetzung. Das System 400 repräsentiert ein Beispiel von Ledger- oder Protokollinformationen, die von einer Prüfpunktsetzungs-Engine gemäß irgendeiner hier beschriebenen Ausführungsform gehalten werden. In einer Ausführungsform umfasst eine Prüfpunktsetzungs-Engine einen Indirektionsmaschine, die einen logischen in einen physischen Adressenraum übersetzt und zusätzliche Überwachungs- und Verfolgungsinformationen hält. Die Indirektionsmaschine kann die Information durch die Ausführung eines oder mehrerer Prozesse oder Algorithmen generieren und verwalten. In einer Ausführungsform speichert die Indirektionsmaschine die im System 400 veranschaulichten Informationen in einem flüchtigen Speicher auf einer Hardware-Plattform, welche die Prüfpunktsetzungsoperationen ausführt.
  • In einer Ausführungsform hält die Prüfpunktsetzungs-Engine ein L2P (logisch zu physisch) Protokoll 410. Wie veranschaulicht, umfasst das L2P 410 ein Mapping einer LBA auf eine aktuelle physische Adresse (phy addr) 412. Wenn die aktuelle physische Adresse 412 keinen Eintrag aufweist, wird die LBA nicht aktuell auf einen physischen Adressenraum gemappt.
  • In einer Ausführungsform umfasst das System 400 Host-Schreibvorgänge, die ein Protokoll oder eine Liste einer neueren Schreibaktivität repräsentieren. In einer Ausführungsform ist diese Liste in der Reihenfolge der Schreibvorgänge. Wenn die Liste begrenzt ist, beispielsweise um eine maximale Anzahl von Einträgen aufzuweisen, werden in einer Ausführungsform, während neue Einträge zu den Host-Schreibvorgängen 420 hinzugefügt werden, andere Einträge durch die neuen Einträge ersetzt. Es ist klar, dass die Host-Schreibvorgänge 420 eine Liste von oben nach unten von den neuesten zu den ältesten sein kann, oder eine Liste von unten nach oben von den neuesten zu den ältesten. Andere Auslegungen sind mit Metadaten auch möglich, um die Schreibreihenfolge zu verfolgen.
  • Das Ledger 430 repräsentiert ein Mapping früherer Schreibinformationen. Wie veranschaulicht, arbeitet das Ledger 430 auf der Basis einer logischen Blockadresse (LBA), könnte jedoch alternativ dazu auf der Basis einer physischen Adresse gehalten werden. In einer Ausführungsform repräsentiert das Ledger 430 ein Wörterbuch, das logische Adressen auf eine Liste oder einen Strang physischer Adressen mappt. In einer Ausführungsform ist jede Liste in der Schreibreihenfolge, wobei die neuesten physischen Adressen den logischen Adressen entsprechen, die zuerst oder am Kopf angeordnet sind. Beispielsweise wird eine LBA8 herangezogen, die im L2P 410 als mit der aktuellen physischen Adresse „EU3:P3“ assoziiert identifiziert wird. Das Ledger 430 identifiziert eine vorherige physische Adresse (prev phy addr) 432 als „EU1:P3“. Für die LBA9 umfasst das L2P 410 eine aktuelle physische Adresse 412, und das Ledger 430 umfasst eine vorherige physische Adresse 432, eine vorvorherige physische Adresse (prev-prev phy addr) 434 und eine vorvorvorherige physische Adresse (prev-prev-prev phy addr) 436. Somit kann davon ausgegangen werden, dass die LBA8 einen früheren Zustand aufweist, der für ein Rollback verfügbar ist, und die LBA9 hat drei frühere Zustände, die für ein Rollback verfügbar sind.
  • In einer Ausführungsform hält das Ledger 430 nur Einträge für jene neueren Schreibvorgänge, die nicht im L2P 410 sind. Beispielsweise kann das Ledger 430 eine logische Adresse LBA in dem Ledger aufweisen, nur wenn neuere Schreibvorgänge in die LBA vorhanden sind. Somit kann das einzige Schreiben in die LBA eines sein, das im L2P 410 identifiziert wird. Somit ist es klar, dass die Daten für das neuste Schreiben in die LBA an der physischen Adresse sind, die im L2P 410 identifiziert wird. Wenn es mehrere Schreibvorgänge innerhalb der Rollback-Parameter gibt, kann das Ledger 430 längere Stränge umfassen als veranschaulicht ist.
  • In einer Ausführungsform referenziert das System 400 die Adressenorte wie folgt. Die Daten für das neueste Schreiben in die LBA sind an der physischen Adresse im L2P[L]. Die Daten für das zweitneueste Schreiben in die LBA, wenn es sich um ein neueres Schreiben handelt, sind an der physischen Adresse Ledger[L].Head.P. Die Daten für das drittneueste Schreiben in die LBA, wenn es sich um ein neueres Schreiben handelt, sind an der physischen Adresse Ledger[L].Head.Next.P. Die Daten für das viertneueste Schreiben in die LBA, wenn es sich um ein neueres Schreiben handelt, sind an der physischen Adresse Ledger[L].Head.Next.Next.P. Die nächsten neuesten Schreibvorgänge über das viertneueste Schreiben hinaus könnten einem ähnlichen Muster folgen.
  • In einer Ausführungsform ist das Ledger 430 als Hash-Tabelle implementiert, mit einer Hash-Funktion und einem Kollisionsbehandlungsschema, wie im Stand der Technik verstanden wird. In einer Ausführungsform hat das Ledger 430 ein Maximum von S Listenknoten. In einer Ausführungsform wird das Ledger 430 im SSD-DRAM gehalten. In einer Ausführungsform wird das Ledger 430 als SPI-Flash-Dateisystem-Metadaten Befehlssequenz gespeichert. In einer Ausführungsform wird das Ledger 430 als Dateisystem-Metadaten auf dem Host gespeichert. In einer Ausführungsform werden die Informationen des Systems 400 nicht-flüchtig quer über Leistungsereignisse gehalten, entweder durch Speichern derselben in einem nicht-flüchtigen Speicher, oder unter Verwendung flüchtiger Memory-Speichertechniken, wie einer Sicherung beim Herunterfahren, einer Prüfpunktsetzung und Neuerstellung, PLI-Sicherung oder irgendeiner anderen Technik.
  • Das Ledger 430 wird veranschaulicht, dass es nach der LBA oder logischen Adresse geordnet ist. In einer Ausführungsform wird das Ledger 430 nach der physischen Adresse anstelle der logischen Adresse geordnet. In einer Ausführungsform erfordert die Ordnung des Ledgers 430 nach der logischen Adresse die Verfolgung einer P2L- (physisch zu logisch) Tabelle für die mehreren aktuellen EUs. Bei der Ordnung nach der physischen Adresse anstelle der logischen Adresse kann eine Verfolgung der P2L-Tabelle nicht notwendig sein, da physische Adressen direkt verwendet werden können, um in das Ledger geordnet zu werden, ohne die entsprechende logische Adresse zu erfordern. In einer Ausführungsform umfassen Einträge in das Ledger 430 nächste/vorherige Einträge in einer zeitlichen Reihenfolge quer über LBAs. Somit kann das Ledger als doppelt verbundene Liste implementiert werden. Eine doppelt verbundene Liste kann verwendet werden, um die Berechnungen zu reduzieren, die für ein Rollback erforderlich sind.
  • In einer Ausführungsform umfasst das System 400 Löscheinheiten (EUs) 440. Die EUs 440 liefern ein Mapping der Löscheinheiten auf logische und physische Adresseninformationen. Es ist klar, dass sich eine Löscheinheit auf Daten bezieht, die nicht länger die aktuellen oder aktiven Daten sind, und daher herkömmlich gelöscht werden können. EU-Daten können als veraltete Daten bezeichnet werden, was Daten bedeutet, die nicht länger die aktuellen Daten aufgrund einer Änderung oder eines Schreibens der Daten sind.
  • In einer Ausführungsform liefert das System 400 eine Verfolgung zuletzt geschriebener EUs, des ältesten neuesten Schreibvorgangs und einer P2L-Tabelle (physisch zu logisch, was auch als Bandjournal bezeichnet werden kann) für die neuesten EUs. In einer Ausführungsform hält das System 400 eine Liste neuerer EUs in einer Sequenzreihenfolge. In der ältesten neueren EU verfolgt das System 400 In einer Ausführungsform die Versetzung des ältesten neuren Schreibens. In einer Ausführungsform erweitert das System 400 das EU-Journaling (z.B. Bandjournaling), um die P2L-lnformationen für alle neueren EUs zu halten, und nicht nur für die aktuelle/letzte EU. Solche Zustandsvariablen ermöglichen es dem System 400, rasch zu einem vorherigen Zustand des nicht-flüchtigen Speichers zurückzurollen, der durch die physischen Adresseninformationen repräsentiert wird, oder einen älteren Zustand abzufragen.
  • Die Informationen des Systems 400 können es einer Prüfpunktsetzungs-Engine ermöglichen, ein Rollback eines Zustands mit hoher Granularität vorzusehen. Beispielsweise kann das System 400 mit dem Ledger 430 einen vorherigen Zustand des Speichers durch einen Zugriff auf die Daten an einer vorherigen physischen Adresse lesen, oder einer vorvorherigen physischen Adresse usw. In einer Ausführungsform kann das System 400 ein Rollback durch eine Anzahl von Schreibvorgängen vornehmen, wie durch Überwachen von Host-Schreibvorgängen 420. In einer Ausführungsform kann das System 400 stattdessen ein Rollback nach der zeit oder nach einer Anzahl von Schreibvorgängen vornehmen. In einer Ausführungsform kann das System 400 ein Rollback nach der Zeit zusätzlich zu einem Rollback nach einer Anzahl von Schreibvorgängen vornehmen.
  • Ein Rollback nach der Zeit kann wie folgt implementiert werden. In einer Ausführungsform umfasst der Host eine Erweiterung für ein Initialisierungs- oder Hochfahrereignis oder beides, die als Teil des Systems 400 angesehen werden kann. In einer Ausführungsform generiert der Host einen Zeitstempel für das SSD oder den nicht-flüchtigen Speicher über einen neuen Befehl, und das SSD verfolgt die Zeit intern. Mit einer solchen Fähigkeit kann das System 400 den Zeitstempel jeder ankommenden oder vollendenden Schreiboperation bestimmen.
  • In einer Ausführungsform sichert das System 400 Schreibzeitstempel im Ledger 430 oder im L2P 410, oder sowohl im Ledger 430 als auch im L2P 410. In einer Ausführungsform sichert das System 400 Zeitstempelinformationen in Seitenmetadaten. Die Zeitstempelinformationen ermöglichen es dem SSD, die Zeitinformationen vorherige Schreibvorgänge zu verfolgen, wenn erforderlich. Sobald ein Schreiben nicht länger ein neueres Schreiben ist, können in einer Ausführungsform die Zeitstempelinformationen eliminiert werden. Mit den Zeitstempelinformationen kann ein Rollback auf dem Lesen neuerer Schreibinformationen basieren, das System 400 kann jedoch Zeitstempel von Einträgen auf der Basis eines Rollbacks der Zeit vergleichen, während ein Rollback auf der Basis der Anzahl von Schreibvorgängen einen Vergleich von Sequenznummern involvieren kann.
  • In einer Ausführungsform kann das System 400 ein Lesen ohne Rollback auf der Basis der Verfolgung von Startzeitstempeln für jede EU vornehmen. Beispielsweise kann das System 400 zuerst eine EU auswählen, die einer Dauer für read-old entspricht. Das System 400 kann dann eine Seitenversetzung innerhalb der EU unter Verwendung von Zeitstempeln pro L2P- und Ledger-Einträgen berechnen. Nach einer solchen Berechnung kann die Logik des Systems 400 Versionen einer LBA bestimmen, wie oben beschrieben. In einer Ausführungsform tauschen der Host und das SSD Zeitstempelinformationen oder Dauerinformationen oder beides aus, und solche Austausche können in implementierungspezifischen Einheiten, Granularität und Startzeit sein. Beispielsweise kann das System eine Anzahl von Sekunden seit 1/1/2000 anzeigen.
  • In einer Ausführungsform kann das System 400 ein granuläres Rollback auf Dateiebene oder eine Versionsabfrage vorsehen. Beispielsweise kann dem Benutzer die Fähigkeit verliehen werden, explizit ein Dienstprogramm laufen zu lassen, das ältere Verlaufsblöcke von einer gegebenen Datei zurück zu derselben Datei zu einer späteren Zeit erneut zuordnet, zum Löschen und zur Wiederverwendung. Somit kann die Fähigkeit, dass Ransomware mehrere Dateien angreift, reduziert werden, da die Verläufe für einzelne Dateien getrennt bleiben. Indem die Verläufe getrennt gehalten werden, greift ein Angriff auf eine Datei nicht auf die erneute Beanspruchung älterer Blöcke über, die zuvor für einen anderen Zweck gemappt wurden.
  • In einer Ausführungsform unterstützt das System 400 Prioritätsinformationen für LBAs. Somit kann beispielsweise das System 400 es einem Benutzer oder dem Host-System ermöglichen, die Priorität von LBAs zu spezifizieren. In einer Ausführungsform faktoriert das System 400 in Prioritätsinformationen und kann beispielsweise den Verlauf von LBAs mit niedriger Priorität überschreiben, wenn Raum erforderlich ist, vor dem Überschreiben von Daten mit höherer Priorität. Eine Prioritätsberücksichtigung kann angewendet werden, um beispielsweise längere Verläufe von Dateisystem-Metadaten und kritischen Benutzerdateien zu priorisieren. In einer Ausführungsform wird der nicht-flüchtige Speicher einer Strategie oder Auslegung unterworfen, welche die Auswahl der Priorität von Dateien ermöglicht. Die Auslegung kann Auslegungsinformationen umfassen, die im Host gespeichert sind, um den Betrieb des nicht-flüchtigen Speichers zu verwalten. Die Strategie kann sich auf einem Algorithmus oder eine Routine oder einen Dienst innerhalb der Speichersteuereinheit beziehen, die Prioritätsinformationen für die Rückforderung von Speicherraum berücksichtigen. In einer Ausführungsform umfasst das System 400 Analytik, um es dem System zu gestatten, bestimmen Dateien eine Priorität zuzuordnen.
  • In einer Ausführungsform kann die Speichersteuereinheit des Systems 400 Dateien oder Daten auf der Basis der Frequenz des Zugriffs oder eines anderen Parameters als Prioritätsdaten identifizieren. Das System kann auf der Basis der Verwendbarkeit oder anderer Parameter bestimmen, welche Daten von der Speicherbereinigung ausgenommen werden sollten. Das System kann auf der Basis dieser Parameter bestimmen, welche Dateien wichtig sind oder Priorität haben gegen über anderen. Das System kann die Wichtigkeit von Dateien durch das Anwenden eines Lernmechanismus bestimmen, wie eines Maschinenlernalgorithmus. In einer Ausführungsform kann das System durch die Anwendung eines Lernmechanismus auf der Basis der Dateiverwendungen eine automatische Priorisierung vornehmen.
  • In einer Ausführungsform exponiert das System 400 Zugriffsschnittstellen für den Host, um Informationen über die Prüfpunktsetzungsdaten abzufragen und zu empfangen. In einer Ausführungsform unterstützt der Host Befehle, um das Ledger 430 nach Daten abzufragen. Auf der Basis der Abfragen kann der Host ausgelegt sein, höher entwickelte Analysen oder Anwendungen mit den Daten vorzusehen. Beispielsweise kann der Host in der Lage sein, Schreibverläufe und -trends zu bestimmen, sowie Versionsinformationen und Informationen über die Quellen der Schreibaktivität, oder andere Analysen, oder eine Kombination.
  • Mit Bezugnahme auf das im System 400 veranschaulichte spezifische Beispiel wird ein sehr vereinfachtes Beispiel für Zwecke der Veranschaulichung herangezogen. Es wird angenommen, dass das System 400 Informationen für ein SSD mit 4 EUs veranschaulicht, die jeweils 8 Seiten enthalten. Das SSD exponiert eine Kapazität von 16 LBAs für den Benutzer, mit einer Rollback-Fähigkeit (S) von 5 Sektorschreibvorgängen. In einem Initialzustand wird angenommen, dass das SSD vollkommen leer gestartet wird, und die Schreibvorgänge werden wie in Host-Schreibvorgängen 420 aufgelistet ausgegeben. Die EU1 wird zuerst geschrieben, gefolgt von der EU3. An diesem Punkt hat das System keinerlei defrags vorgenommen. Angesichts der wie aufgelisteten Host-Schreibvorgänge sind die Einträge im L2P 410 und Ledger 430 wie aufgelistet. Es ist zu beachten, dass, auch wenn das Ledger 430 nur vier Einträge aufweist, das System eine Rollback-Fähigkeit von 5 aufweist, da der Sektor 14 zu einer leeren physischen Adresse auf der Basis eines fehlenden Ledgers entsprechend der LBA14 zurückgerollt werden kann. Wenn somit in einer Ausführungsform ein Schreiben in einer Liste oder Tabelle angezeigt wird, und ein Protokoll oder Ledger keinen Eintrag für die LBA aufweist, rollt das System in einer Ausführungsform dieses zurück auf leer. Andere Schreibvorgänge werden in ihre vorherigen Zustände zurückgerollt.
  • 5 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes, um einen globalen Zustand in einem Prüfpunktsetzungs-Ledger aufrechtzuerhalten. Der Pseudocode 500 im globalen Zustand liefert ein Beispiel einer Funktion, um den globalen Zustand in der Zeile 510 aufrechtzuerhalten. Der Pseudocode 500 kann von einer Prüfpunktsetzungs-Engine gemäß einer hier beschriebenen Ausführungsform ausgeführt werden. In der Zeile 512 konvertiert die Funktion eine logische in eine physische Adresse für die Schreiboperation. In der Zeile 514 aktualisiert die Funktion in einer Ausführungsform ein Schreib-Ledger, um die Schreibinformationen zu protokollieren. In der Zeile 516 aktualisiert die Funktion die Ledger-Löscheinheitinformationen, die als LRU-Liste neuerer EUs angesehen werden kann.
  • In der Zeile 518 definiert die Funktion eine aktuelle Löscheinheit (curEU) als die Löscheinheit am Kopf einer EU-Liste. In der Zeile 520 kann die Funktion eine letzte Löscheinheit (lastEU) als die Löscheinheit am Endbereich oder Ende der EU-Liste definieren. In einer Ausführungsform ist die aktuelle Seitenversetzung die Anzahl geschriebener Seiten in der aktuellen EU. In einer Ausführungsform ist in der Zeile 524 die älteste neuere Seite die physische Adresse des ältesten neueren Schreibens in der lastEU.
  • In einer Ausführungsform nimmt in der Zeile 526 die Funktion ein Bandjournaling vor, wobei die physische Adresse in die logische Adresse für EUs in der Liste von EUs konvertiert wird. In einer Ausführungsform startet die EU-Sequenznummer bei 0, wie im Kommentar der Zeile 528 angezeigt. In dem Beispiel des Pseudocodes 500 ist der Kürze halber das Halten von Sequenznummern nicht veranschaulicht. Es ist klar, dass der Pseudocode 500 Operationen umfassen kann, um die Sequenznummern für die EUs zu halten.
  • 6 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes zum Schreiben einer Seite in einer Prüfpunktsetzungsumgebung. Der Schreib-Pseudocode 600 liefert ein Beispiel von Schreibalgorithmusoperationen zur Prüfpunktsetzung. Der Pseudocode 600 kann von einer Prüfpunktsetzungs-Engine gemäß einer hier beschriebenen Ausführungsform ausgeführt werden. Die Schreibfunktion beginnt in der Zeile 610 und empfängt eine logische Adresse und Daten, die in die logische Adresse zu schreiben sind. In der Zeile 612 identifiziert die Funktion P als die physische Adresse für die aktuelle EU mit der aktuellen Seitenversetzung. Die identifizierte physische Adresse ist ein Ort, um Daten zu schreiben, und repräsentiert einen verfügbaren Speicherort. In der Zeile 614 schreibt die Funktion die Daten in die physische Adresse.
  • Eine typische Schreibfunktion nimmt die Schreiboperation vor und kann enden. Der Pseudocode 600 umfasst Operationen in Bezug auf eine kontinuierliche Prüfpunktsetzung. In einer Ausführungsform setzt die Funktion in der Zeile 616 oldP oder eine alte physische Adresse gleich der logischen zu physischen Adresse der empfangenen logischen Adresse L. Somit wird die vorherige Adresse, die mit der logischen Adresse assoziiert ist, die frühere Adresse für die veralteten Daten. In einer Ausführungsform setzt die Funktion die physischen und logischen Adressen in eine Kreuzbeziehung mit getrennten Listen. Beispielsweise setzt die Funktion in der Zeile 618 einen LP2-Eintrag für L (die logische Adresse) gleich der physischen Adresse von P, und setzt in der Zeile 620 einen P2L-Eintrag für P gleich L.
  • In der Zeile 622 sieht in einer Ausführungsform die Funktion eine Zustandsoperation vor, wie durch das If-Statement veranschaulicht. Wenn oldP gültig ist, setzt in der Zeile 624 die Funktion die Adresse am Kopf der Liste von Adressen in einem Ledger ein. In der Zeile 624 bestimmt die Funktion, ob der Schwanz für eine Sequenz oder einen Strang von Einträgen für die logische Adresse die älteste neuere Seite ist. Wenn in einer Ausführungsform der Schwanzeintrag die älteste neuere Seite oder die älteste Seite innerhalb der Rollback-Fähigkeit ist, entfernt die Funktion den Schwanz in der Zeile 628. Eine solche Operation hält die Anzahl von EUs innerhalb des ausgelegten Bereichs der Rollback-Fähigkeit.
  • In einer Ausführungsform bestimmt die Funktion in der Zeile 630, ob die älteste neuere Seite gleich den Seiten in der EU ist. Wenn ja, entfernt die Funktion in einer Ausführungsform in der Zeile 632 die letzte EU in der Liste von EUs, und setzt in der Zeile 634 die älteste neue Seite zurück. In einer Ausführungsform inkrementiert die Funktion in der Zeile 636 die aktuelle Seitenversetzung und bestimmt in der Zeile 638, ob die aktuelle Seitenversetzung gleich den Seiten in der EU ist. Wenn das Statement wahr ist, kann die Funktion eine neue EU in der Zeile 640 öffnen.
  • In einer Ausführungsform repräsentiert der Pseudocode 600 einen modifizierten Schreibalgorithmus für eine Prüfpunktsetzungs-Engine in einer Speichersteuereinheit. Ein Schreibalgorithmus wählt herkömmlich eine physische Seite aus und führt das Schreiben aus, um die Daten auf das nicht-flüchtige Medium zu transferieren. Anstatt das Schreiben einfach wie mit einem herkömmlichen Schreibalgorithmus auszuführen, ermöglicht in einer Ausführungsform der Schreibalgorithmus des Pseudocodes 600 der Prüfpunktsetzungs-Engine, auch ein Ledger zu aktualisieren. In einer Ausführungsform wird für die aktualisierte LBA der ältere L2P-Eintrag in das Ledger (wenn gültig) geschrieben. Das älteste neuere Schreiben kann aus dem Ledger, so vorhanden, entfernt werden. Es ist klar, dass L eine Adresse für ein Schreiben neuer Daten repräsentieren kann, oder eine Adresse für eine Modifikation von Daten, die bereits auf dem nicht-flüchtigen Speichermedium gespeichert sind.
  • 7 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes, um eine Löscheinheit in einer Prüfpunktsetzungsumgebung zu erzeugen. Der neue EU-Pseudocode 700 liefert ein Beispiel einer Funktion, um eine neue Löscheinheit in der Zeile 710 zu erzeugen. Der Pseudocode 700 kann von einer Prüfpunktsetzungs-Engine gemäß einer hier beschriebenen Ausführungsform ausgeführt werden. In einer Ausführungsform ist die Funktion nur eine private, interne Funktion, die nicht für die Verwendung für eine Funktion außerhalb der Prüfpunktsetzungs-Engine exponiert wird.
  • In der Zeile 712 wählt die Funktion die nächste leere oder verfügbare EU aus und setzt die EU an den Kopf einer Liste oder eines Strangs verbundener EUs. In einer Ausführungsform, in der Zeile 714, als Teil der Auswahl einer neuen EU, setzt die Funktion die aktuelle Seitenversetzung auf Null zurück, da die neue EU noch keine geschriebenen Seiten aufweist.
  • 8 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes, um die Schreibreihenfolge in einer Prüfpunktsetzungsumgebung zu identifizieren. Der Pseudocode 800 zum Identifizieren eines späteren Schreibens liefert ein Beispiel einer Funktion in der Zeile 810, um zu bestimmen, ob eine EU älter ist als eine andere EU. Der Pseudocode 800 kann von einer Prüfpunktsetzungs-Engine gemäß einer hier beschriebenen Ausführungsform ausgeführt werden. In einer Ausführungsform ist die Funktion privat und nicht zur Verwendung durch eine Funktion außerhalb der Prüfpunktsetzungs-Engine exponiert.
  • In einer Ausführungsform empfängt die Funktion Eingänge Q und P als Eingänge, um zu vergleichen. In der Zeile 812 setzt die Funktion eine Sequenz von P (sp) gleich der Sequenznummer der EU, die P enthält, und setzt in der Zeile 814 eine Sequenz von Q (sq) gleich der Sequenznummer der EU, die Q enthält. In der Zeile 816 sieht die Funktion eine bedingte Operation vor, und führt TRUE oder logisch hoch zurück, wenn sq größer ist als sp. In der Zeile 818 führt die Funktion FALSE oder logisch nieder zurück, wenn sie bestimmt, dass sq kleiner ist als sp. In einer Ausführungsform kann die Funktion das Ergebnis eines Vergleichs zurückführen, ob die Seitenversetzung für Q größer ist als die Seitenversetzung für P, in der Zeile 820.
  • 9 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes zur Speicherbereinigung in einer Prüfpunktsetzungsumgebung. Der Speicherbereinigungs-Pseudocode 900 liefert ein Beispiel einer Funktion zur Speicherbereinigung in der Zeile 910. Der Pseudocode 900 kann von einer Prüfpunktsetzungs-Engine gemäß einer hier beschriebenen Ausführungsform ausgeführt werden. In einer Ausführungsform ist die Funktion eine private, interne Funktion, die nicht für die Verwendung durch eine Funktion außerhalb der Prüfpunktsetzungs-Engine exponiert ist.
  • In der Zeile 912 kann die Funktion eine Initial-EU auswählen. In der Zeile 914 kann die Funktion in eine for-Schleife eintreten, die für alle EUs fortgesetzt wird. Wenn in einer Ausführungsform in der Zeile 916 die Sequenznummer der EU niedriger ist als die Sequenznummer der letzten EU, kann dann in der Zeile 918 die Funktion eine defrag-Funktion vornehmen. In einer Ausführungsform kann die defrag-Funktion irgendeine bekannte oder übliche defrag-Funktion sein. Das If-Statement kann sicherstellen, dass die EUs, die neuere Schreibvorgänge enthalten, nicht für defrag ausgewählt werden. In einer Ausführungsform kann irgendeine andere EU als eine neuere Schreib-EU für die Speicherbereinigung durch bekannte Strategien ausgewählt werden, wie auf der Basis einer Gültigkeitszählung, Veraltung oder anderen Metrik, oder einer Kombination. In einer Ausführungsform kann die Funktion des Pseudocodes 900 die neueren Schreibvorgänge durch Halten einer Sequenznummer pro EU und Prüfen ausschließen, um sicherzustellen, dass die Nummer niedriger ist als die Sequenznummer der EU, die dem ältesten neueren Schreiben entspricht.
  • Die selektive defrag-Operation endet in Zeile 920, und die Funktion wählt die nächste EU zur Inspektion in der Zeile 918 nach dem selektiven defrag aus. Die Funktion kann die for-Schleife fortsetzen, bis es keine EUs mehr gibt.
  • 10 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes für ein Rollback auf der Basis einer kontinuierlichen Prüfpunktsetzung. Der Rollback-Pseudocode 1000 liefert ein Beispiel einer Funktion, um ein Rollback in der Zeile 1010 vorzunehmen. Der Pseudocode 1000 kann durch eine Prüfpunktsetzungs-Engine gemäß einer hier beschriebenen Ausführungsform ausgeführt werden. In einer Ausführungsform ist der Pseudocode 1000 spezifisch für ein Rollback auf der Basis einer Anzahl von Sektorschreibvorgängen. Es ist klar, dass die Funktion ausgelegt sein kann, um ein Rollback auf der Basis der Zeit vorzunehmen, oder einer Kombination der Zeit und der Anzahl von Schreibvorgängen. In einer Ausführungsform bestimmt eine Funktion höherer Ebene eine Anzahl von Schreibvorgängen, die für ein Rollback erforderlich sind, um ein Rollback für eine Zeitdauer oder für eine Gesamtspeichermenge zu implementieren, und ruft die Funktion mit einer Anzeige der Anzahl von Schreibvorgängen auf.
  • In einer Ausführungsform nimmt die Funktion eine Anzahl X als Eingabe, um eine Anzahl von Schreibvorgängen anzuzeigen, die zurückzurollen oder rückgängig zu machen sind. Es ist klar, dass für ein Rollback von X Schreibvorgängen der Wert von X innerhalb eines Bereichs von S begrenzt werden sollte, der eine gesamte Rollback-Fähigkeit des Systems anzeigt.
  • In der Zeile 1012 tritt die Funktion in eine for-Schleife ein, wobei jeder Durchgang durch die for-Schleife einen der X Schreibvorgänge zurückrollt. Somit wird die Funktion die Schleife X-mal durchlaufen. In der Zeile 1014 wird P als Seitenzahl für die aktuelle EU mit einer aktuellen Seitenversetzung eingestellt. In der Zeile 1016 setzt die Funktion die logische Adresse L als logische Adresse, die mit P assoziiert ist. In einer Ausführungsform sieht in der Zeile 1018 die Funktion eine bedingte Operation vor, wobei, wenn L nicht blank oder nicht leer ist und ein Ledger-Eintrag für L existiert, die Funktion spezifizierte Operationen vornimmt. In der Zeile 1020 setzt die Funktion den L2P-Eintrag für L in den Ledger an den Kopf an der Adresse P. Die Funktion in der Zeile 1022 kann den Kopf aus dem Ledger entfernen, da der Kopf durch das Rollback der Schreiboperation bewegt wurde. Es ist klar, dass ein Rollback des Schreibens eine Änderung der logischen und physischen Adressenassoziation auf eine vorherige physische Adresse P umfasst, und um den Kopf einer Liste von Operationen zu entfernen, so dass die mit der Rollback-Operation assoziierten Daten nicht länger mit der logischen Adresse assoziiert sind.
  • In der Zeile 1024 tritt eine weitere bedingte Operation auf, wenn das If-Statement nicht wahr ist, wie durch die Else-Statement-Alternative angezeigt. Die Funktion kann leere oder Null-Daten mit der logischen Adresse assoziieren. Wenn in einer Ausführungsform eine logische Adresse keinen Ledger-Eintrag aufweist, der damit assoziiert ist, ist dies darauf zurückzuführen, dass es sich um ein neues Schreiben handelt, und die logische Adresse vor dem Schreiben leer war. Somit umfasst ein Rollback des Schreibens ein Zurücksetzen der logischen Adresse auf einen leeren Zustand.
  • In einer Ausführungsform führt die Funktion in der Zeile 1026 bedingt andere Operationen aus, wenn die aktuelle Seitenversetzung Null ist, was anzeigt, dass die EU leer ist. Wenn die Versetzung Null ist, entfernt in einer Ausführungsform in der Zeile 1028 die Funktion den Kopf der EU-Liste. In der Zeile 1030 löscht die Funktion die leere EU. In der Linie 1032 setzt die Funktion die aktuelle Seitenversetzung auf die Anzahl von Seiten in einer EU. Wenn in einer Ausführungsform die aktuelle Seitenversetzung nicht Null ist, kann die Funktion eine „else“-basierte bedingte Operation ausführen, um die aktuelle Seitenvesetzung zu dekrementieren.
  • In einer Ausführungsform setzt die Funktion in der Zeile 1036 die P2L-Daten für die physische Adresse als ungültig, da die Daten zurückgerollt wurden und nicht länger gültige Daten sind. Die for-Schleife endet in der Zeile 1038, und die folgende Zeit hindurch wird die aktuelle Seitenversetzung um Eins niedriger sein, und eine in der Zeit um Eins frühere Schreibtransaktion wird zurückgerollt. In einer Ausführungsform positioniert die Funktion gültige Daten in der aktuellen EU neu nach der for-Schleife in der Zeile 1040. In einer Ausführungsform aktualisiert die Funktion die globalen Zustandsinformationen, wie erforderlich, in der Zeile 1042. In einer Ausführungsform öffnet die Funktion eine neue EU in der Zeile 1044.
  • Die Funktion des Pseudocodes 1000 kann ein Rollback des Zustands eines nicht-flüchtigen Speichers unter Verwendung des für den Speicher gehaltenen Zustands vorsehen. Die Rollback-Funktion kann iterativ den Zustand jeweils um ein Schreiben zu einer Zeit bewegen. In einer Ausführungsform wird für ein gegebenes letzten Schreiben, das zurückgerollt wird, sein neuester (erster) Ledger-Eintrag, wie erforderlich, in das L2P platziert und aus dem Ledger entfernt. Nach jedem einzelnen Rollback werden die Seiten gelöscht, die als Ergebnis der Rollbacks ungültig gemacht werden. Das Löschen der ungültig gemachten Seiten kann nach der Speicherbereinigung irgendwelcher gültiger Daten in den betroffenen EUs auftreten. In einer Ausführungsform ist eine Schnittstelle, um die Rollback-Funktion zu exponieren, für alle nicht-flüchtigen Speicher standardisiert. In einer Ausführungsform kann die Schnittstelle, um die Rollback-Funktion zu exponieren, ein Verkäuferspezifischer Befehl sein.
  • 11 ist eine schematische Darstellung einer Ausführungsform eines Pseudocodes zum Lesen alter Daten ohne Rollback auf der Basis einer kontinuierlichen Prüfpunktsetzung. Der Pseudocode 1100 zum Lesen veralteter Daten liefert ein Beispiel einer Funktion zum Lesen eines alten oder vorherigen Zustands in der Zeile 1110. Der Pseudocode 1100 kann durch eine Prüfpunktsetzungs-Engine gemäß einer hier beschriebenen Ausführungsform ausgeführt werden. Der Pseudocode 1100 ermöglicht es einem System, die Daten oder den Systemzustand durch Lesen der Daten für eine logische Adresse ab X Sektorschreibvorgängen in der Zeit zuvor zu lesen. Im Gegensatz zum oben beschriebenen Pseudocode 1000 liest die Funktion des Pseudocodes 1100 nur die Daten ohne Zurückrollen des Zustands. In einer Ausführungsform empfängt die Funktion Eingabeparameter der logischen Adresse LBA L und eine Anzahl X von Sektorschreibvorgängen, um auf Lesedaten zurückzuschauen.
  • In einer Ausführungsform kann die frühere Lesefähigkeit der ReadOld-Funktion einfacher und schneller sein als die Rollback-Funktion, wie oben in Bezug auf den Pseudocode 1000 beschrieben ist. In einer Ausführungsform kann die Funktion, um Daten an der LBA L zu lesen, wie diese vor X SSD-Schreibvorgängen waren, die EU und die Seite berechnen, die vor X Schreibvorgängen geschrieben wurden. Nach der Berechnung dieser EU und Seite kann das System den L2P-Eintrag für die logische Adresse und die Ledger-Informationen für die logische Adresse verwenden, um die letzte physische Adresse entsprechend der logischen Adresse, die vor dieser EU und Seite war, zu bestimmen. Das System kann die Benutzerdaten auf dieser physischen Seite lesen und zurückführen.
  • In der Zeile 1112 kann die Funktion die Daten des aktuellen Zustands von L bedingt zurückführen, wenn es keine Einträge in einem Ledger für L gibt, oder wenn die Anzahl von spezifizierten Sektorschreibvorgängen Null ist. In einer Ausführungsform setzt in der Zeile 114 die Funktion E gleich dieser letzten EU. Die Funktion kann die Anzahl von Elementen in E (elementsinE) gleich der aktuellen Seitenversetzung oder der Anzahl von Seiten in der EU in Zeile 1116 setzen.
  • In einer Ausführungsform umfasst die Funktion eine while-Schleife beginnend in der Zeile 1118, die läuft, solange X größer ist als die Anzahl von Elementen in der EU. In der Zeile 1120 subtrahiert die Funktion elementsInE von X und ordnet den berechneten Wert X zu. In der Zeile 1122 setzt die Funktion E auf eine vorherige EU. In der Zeile 1124 setzt die Funktion elementsInE auf die Anzahl von Seiten pro EU. In der Zeile 1126 setzt die Funktion P gleich den Seiten pro EU minus X, was die Seitenversetzung in E ab vor X Schreibvorgängen anzeigt. Die while-Schleife endet in der Zeile 1128, und die Funktion bestimmt, erneut die Schleife auszuführen oder fortzusetzen.
  • In der Zeile 1130 kann die Funktion Q gleich dem Eintrag in einer logischen zu physischen Mapping-Tabelle setzen. In der Zeile 1132 kann die Funktion bedingt ein Lesen der logischen Adresse zurückführen, wenn Q leer ist oder wenn Q nicht später geschrieben wird als eine aktuelle physische Adresse P. Wenn Q leer ist, dann handelt es sich um ein neues Lesen und hat keinen Verlauf. Wenn Q nicht später geschrieben wird als P, reflektiert es nicht das nächste Schreiben im Verlauf. In jedem Fall repräsentiert die logische Adresse die am weitesten entfernten Daten, die innerhalb der Rollback-Fähigkeit des Systems gelesen werden können.
  • Die Funktion kann eine aktuelle Variable cur an den Kopf eines Ledgers in der Zeile 1134 setzen. In einer Ausführungsform kann die Funktion eine while-Funktion in der Zeile 1136 ausführen, um eine nächste physische Adresse P zu finden, die ein nächstes Schreiben vorheriges Schreiben repräsentiert, aber cur wird auf den nächsten aktuellen Wert gesetzt, solange cur.P nicht später geschrieben wird als P. Die Funktion kann in der Zeile 1138 die Daten zurückführen, die durch ein physisches Adressenlesen der eventuellen cur.P gelesen werden, die gefunden wird.
  • In einer Ausführungsform nimmt ein System ein Rollback durch eine ReadOld- und Write-Sequenz vor, wie die Ausführung der Funktion des Pseudocodes 1100, um die früheren oder veralteten Daten zu lesen, und dann die Ausführung der Funktion des Pseudocodes 1000, um die Daten als den aktuellen Zustand zu schreiben. Die ReadOld-Sequenz bezieht sich auf eine Fähigkeit des Systems, veraltete Daenzustände auf der Basis der Prüfpunktsetzung zu lesen. Somit kann der Host den alten Wert lesen und eine Schreiboperation vornehmen. Mit einer solchen Operation kann das System den Verlauf von Schreibvorgängen halten. Ein solcher Ansatz kann verwendet werden, um den Verlauf von Schreibvorgängen zu halten, während weiterhin zurückgerollt wird, beispielsweise für ein debug oder andere Anwendungen.
  • 12 ist ein Flussdiagramm einer Ausführungsform von Operationen für eine kontinuierliche Prüfpunktsetzung. Die Prozesse 1200 repräsentierten Prozesse zur Verwaltung von Speichermedien mit einer kontinuierlichen Prüfpunktsetzung für eine Rollback-Fähigkeit. Die Prozesse 1200 können von einer Prüfpunktsetzungs-Engine oder Speichersteuereinheit oder einer Kombination implementiert werden, gemäß einer hier beschriebenen Ausführungsform. In einer Ausführungsform kann, ansprechend auf eine Datenmodifikation, eine Prüfpunktsetzungs-Engine oder vergleichbare Logik Indirektionsinformationen für die modifizierten Daten identifizieren. 1210. Es ist klar, dass sich die Datenmodifikation auf eine Modifikation von Daten beziehen kann, die bereits in einem nicht-flüchtigen Speicher gespeichert sind, oder auf ein Schreiben neuer Daten in einen nicht-flüchtigen Speicher. Die Indirektionsinformationen können logische zu physischen Adresseninformationen sein oder umfassen. Die Indirektion ermöglicht eine Identifikation der physischen Adresse, um die Daten zu schreiben.
  • Um die Daten zu schreiben, generiert die Speichersteuereinheit ein Schreiben in die nicht-flüchtigen Medien, 1212. Die Speichersteuereinheit nimmt ein Schreiben in ungenutzte Speicherorte vor, was es dem System ermöglicht, veraltete Daten für ein Rollback und Lesen zu halten. Somit schreibt die Speichersteuereinheit in einen ungenutzten Datenort und hält die vorherigen oder veralteten Daten, 1214. Es kann festgestellt werden, dass das System einen vorherigen Datenzustand hält, was sich nicht nur auf die Aufbewahrung der veralteten Daten bezieht, sondern auf die Indirektionsinformationen, die notwendig sind, um auf die Daten zuzugreifen und zu verfolgen, wie diese zurückzurollen sind. In einer Ausführungsform zeichnet die Prüfpunktsetzungs-Engine, die durch die Speichersteuereinheit implementiert werden kann, Protokoll- oder Ledger-Daten auf, um die Indirektionsinformationen zu aktualisieren, 1216. Die Protokolldaten verfolgen vorherige Adresseninformationen für die modifizierten Daten oder zeigen an, dass das Schreiben neue Daten ist, und der vorherige Datenzustand Null war. Die Aufzeichnung über jede Schreibtransaktion kann als kontinuierliche Prüfpunktsetzung bezeichnet werden.
  • Als getrennten und potentiell parallelen Prozess zum Schreiben kann das System einen Hintergrund-Speicherbereinigungsprozess implementieren. Zur Speicherbereinigung identifiziert in einer Ausführungsform die Prüfpunktsetzungs-Engine Löscheinheiten, 1220. Die Löscheinheiten können sich auf Orte beziehen, die aktuell nicht als logische Adressen oder aktuelle Indirektionsinformationen angezeigt werden. Somit können sie sich auf nicht-flüchtige Speicherorte beziehen, wo Daten gespeichert wurden, die Daten werden jedoch aktuell vom System nicht für gültig gehalten.
  • In einer Ausführungsform bestimmt die Prüfpunktsetzungs-Engine, ob die EU außerhalb des Rollback-Bereichs oder der Rollback-Fähigkeit für das System liegt, 1222. Der Rollback-Bereich kann sich auf irgendeine Rollback-Fähigkeit beziehen, wie hier beschrieben. Wenn die EU nicht außerhalb des Bereichs der Rollback-Fähigkeit liegt, 1224 Verzweigung NEIN, beansprucht der Speicherbereiniger nicht erneut die EU, sondern hält die EU, 1226. Wenn die EU außerhalb des Bereichs der Rollback-Fähigkeit liegt, 1124 Verzweigung JA, beansprucht der Speicherbereiniger die EU erneut oder defragmentiert diese, 1228. Somit kann der Speicherbereiniger arbeiten, um nur Speicherorte erneut zu beanspruchen, sobald sie zu alt sind oder zu viele Schreibvorgänge zurückliegen, um innerhalb des Bereichs der Rollback-Fähigkeit zu liegen. Nach der Evaluierung einer EU für defrag kann der Speicherbereiniger bestimmen, ob es mehr EUs zu evaluieren gibt. Wenn es eine weitere EU gibt, 1230 Verzweigung JA, kann der Speicherbereiniger die nächste EU identifizieren, 1232, und den Prozess beginnend bei 1222 wiederholen. Wenn es keine EUs mehr zu evaluieren gibt, 1230, kann der Speicherbereinigungsprozess enden, und das System setzt die Verwaltung des Speichers fort.
  • Die Prüfpunktsetzungs-Engine unterstützt ein Rollback in einen vorherigen Datenzustand. Für ein Rollback empfängt in einer Ausführungsform die Prüfpunktsetzungs-Engine einen Rollback-Anforderung, 1240. Die Rollback-Anforderung kann von einem Benutzer oder einem anderen Prozess im System initiiert werden. Für Zwecke des Prozesses 1200 kann das Rollback ein Lesen ohne Änderung des aktuellen Datenzustands umfassen. Für das Rollback kann die Prüfpunktsetzungs-Engine einen Transaktionsbereich für die Anforderung identifizieren, 1242. Der Transaktionsbereich identifiziert entweder eine Datenmenge, die zurückzurollen ist, eine Zeitdauer, die zurückzurollen ist, oder eine Anzahl von Transaktionen, die zurückzurollen sind. In einer Ausführungsform identifiziert die Prüfpunktsetzungs-Engine eine Anzahl von Schreibtransaktionen, die zurückzurollen sind, um die Zeiteinstellung oder Datenmenge einer Anforderung zu erfüllen, wie irgendeinen Zustand X, der innerhalb eines Bereichs von vor 1 bis N Schreibvorgängen angezeigt wird. Die Indirektionsmaschine liest den Datenzustand für die Daten am Ende des Transaktionsbereichs, 1244. Die Daten am Ende des Transaktionsbereichs beziehen sich auf den Zustand von Daten, wie sie waren, für wie lange zurück der Benutzer lesen oder zurückrollen möchte. Wenn das System nur die Daten liest, endet der Prozess des Lesens alter Daten in 1244. Wenn das System den Datenzustand zurückrollt, kann die Prüfpunktsetzungs-Engine Indirektionsinformationen aktualisieren, um die Transaktionen für den angeforderten Bereich rückgängig zu machen, 1246. In jedem Fall kehrt der Prozess zur Verwaltungsroutine zurück.
  • 13 ist ein Blockbild einer Ausführungsform eines Rechensystems, in dem eine kontinuierlich Prüfpunktsetzung implementiert werden kann. Das System 1300 repräsentiert eine Rechenvorrichtung gemäß irgendeiner hier beschriebenen Ausführungsform und kann ein Laptop-Computer, ein Desktop-Computer, ein Tablet-Computer, ein Server, ein Spiele- oder Unterhaltungssteuersystem, ein Scanner, ein Kopierer, ein Drucker, eine Routing- oder Schaltvorrichtung, eine eingebettete Rechenvorrichtung, ein Smartphone, eine tragbare Vorrichtung, eine Internet-der-Dinge-Vorrichtung oder eine andere elektronische Vorrichtung sein.
  • Das System 1300 umfasst einen Prozessor 1310, der eine Verarbeitung, Operationsverwaltung und Ausführung von Instruktionen für das System 1300 vorsieht. Der Prozessor 1310 kann irgendeinen Typ eines Mikroprozessors, eine Zentraleinheit (CPU), eine Grafikverarbeitungseinheit (GPU), einen Verarbeitungskern oder andere Verarbeitungs-Hardware, um eine Verarbeitung für das System 1300 vorzusehen, oder eine Kombination von Prozessoren umfassen. Der Prozessor 1310 steuert den Gesamtbetrieb des Systems 1300, und kann ein oder mehrere programmierbare Universal- oder Spezialmikroprozessoren, digitale Signalprozessoren (DSPs), programmierbare Steuereinheiten, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikvorrichtungen (PDLs) oder dgl. oder eine Kombination solcher Vorrichtung sein oder diese umfassen.
  • In einer Ausführungsform weist das System 1300 eine Schnittstelle 1312 auf, die mit dem Prozessor 1310 gekoppelt ist und die eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit höherem Durchsatz für Systemkomponenten repräsentieren kann, welche Verbindungen mit höherer Bandbreite erfordert, wie ein Speichersubsystem 1320 oder Grafikschnittstellenkomponenten 1340. Die Schnittstelle 1312 repräsentiert eine Schnittstellenschaltung, die eine unabhängige Komponente sein kann oder auf einem Prozessorchip integriert sein kann. Wenn vorhanden, bildet die Grafikschnittstelle 1340 eine Schnittstelle mit Grafikkomponenten, um eine visuelle Anzeige für einen Benutzer des Systems 1300 vorzusehen. In einer Ausführungsform kann die Grafikschnittstelle 1340 eine High Definition- (HD-) Anzeige ansteuern, die eine Ausgabe an einen Benutzer liefert. High Definition kann sich auf eine Anzeige mit einer Pixeldichte von ungefähr 100 PPI (Pixel pro Zoll) oder mehr beziehen, und kann Formate umfassen, wie Full HD (z.B. 1080p), Retinaanzeigen, 4K (Ultra High Definition oder UHD) oder andere. In einer Ausführungsform kann die Anzeige eine Berührungsbildschirmanzeige umfassen. In einer Ausführungsform generiert die Grafikschnittstelle 1340 eine Anzeige auf der Basis von Daten, die im Speicher 1330 gespeichert sind, oder auf der Basis von Operationen, die vom Prozessor 1310 ausgeführt werden, oder beidem. In einer Ausführungsform generiert die Grafikschnittstelle 1340 eine Anzeige auf der Basis von Daten, die im Speicher 1330 gespeichert sind, oder auf der Basis von Operationen, die vom Prozessor 1310 ausgeführt werden, oder beidem.
  • Das Speichersubsystem 1320 repräsentiert den Hauptspeicher des Systems 1300 und liefert einen Speicher für Code, der vom Prozessor 1310 auszuführen ist, oder Datenwerte, die bei der Ausführung einer Routine zu verwenden sind. Das Speichersubsystem 1320 kann eine oder mehrere Speichervorrichtungen 1330 umfassen, wie einen Nurlesespeicher (ROM), einen Flash-Speicher, eine oder mehrere Arten eines Speichers mit wahlfreiem Zugriff (RAM), wie einen DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Der Speicher 1330 speichert und hostet u.a. das Betriebssystem (OS) 1332, um eine Software-Plattform zur Ausführung von Instruktionen im System 1300 zu liefern. Zusätzlich können Anwendungen 1334 auf der Software-Plattform des OS 1332 vom Speicher 1330 ausgeführt werden. Anwendungen 1334 repräsentierten Programme, die ihre eigene operationale Logik aufweisen, um die Ausführung einer oder mehrerer Funktionen vorzunehmen. Die Prozesse 1336 repräsentieren Agenten oder Routinen, die Hilfsfunktionen für das OS 1332 oder eine oder mehrere Anwendungen 1334 oder eine Kombination vorsehen. Das OS 1332, die Anwendungen 1334 und die Prozessore 1336 sehen Software-Logik vor, um Funktionen für das System 1300 zu liefern. In einer Ausführungsform umfasst das Speichersubsystem 1320 eine Speichersteuereinheit 1322, die eine Speichersteuereinheit ist, um Befehle für den Speicher 1330 zu generieren und auszugeben. Es ist klar, dass die Speichersteuereinheit 1322 ein physischer Teil des Prozessors 1310 oder eine physischer Teil der Schnittstelle 1312 sein könnte. Beispielsweise kann die Speichersteuereinheit 1322 eine integrierte Speichersteuereinheit sein, die auf einer Schaltung mit dem Prozessor 1310 integriert ist.
  • Obwohl nicht spezifisch veranschaulicht, ist es klar, dass das System 1300 einen oder mehrere Busse oder Bussubsysteme zwischen Vorrichtungen umfassen kann, wie einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können kommunikativ oder elektrisch Komponenten miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physische Kommunikationsleitungen umfassen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuereinheiten oder andere Schaltungen oder eine Kombination. Busse können beispielsweise einen oder mehrere umfassen von einem Systembus, einem Peripheral Component Interconnect- (PCI) Bus, einem HyperTransport- oder Industry Standard Architecture- (ISA-) Bus, einem Small Computer System Interface- (SCSI-) Bus, einem Universal Serial Bus (USB), oder einem Institute of Electrical and Electronics Engineers (IEEE) Standard 1394-Bus.
  • In einer Ausführungsform umfasst das System 1300 die Schnittstelle 1314, die mit der Schnittstelle 1312 gekoppelt sein kann. Die Schnittstelle 1314 kann eine Schnittstelle mit niedrigerer Geschwindigkeit sein als die Schnittstelle 1312. In einer Ausführungsform repräsentiert die Schnittstelle 1314 eine Schnittstellenschaltung, die unabhängige Komponenten und integrierte Schaltungen umfassen kann. In einer Ausführungsform sind Mehrfach-Benutzerschnittstellenkomponenten oder periphere Komponenten oder beides mit der Schnittstelle 1314 gekoppelt. Die Netzschnittstelle 1350 verleiht dem System 1300 die Fähigkeit, mit entfernten Vorrichtungen zu kommunizieren (z.B. Servern oder anderen Rechenvorrichtungen), über ein oder mehrere Netze. Die Netzschnittstelle 1350 kann einen Ethernet-Adapter, drahtlose Zwischenverbindungskomponenten, zelluläre Netzzwischenverbindungskomponenten, USB (Universal Serial Bus) oder andere verdrahtete oder drahtlose standardbasierte oder herstellerspezifische Schnittstellen umfassen. Die Netzschnittstelle 1350 kann Daten mit einer entfernten Vorrichtung austauschen, was ein Senden von Daten, die im Speicher gespeichert sind, oder ein Empfangen von Daten, um im Speicher gespeichert zu werden, umfassen kann.
  • In einer Ausführungsform umfasst das System 1300 eine oder mehrere Eingabe/ Ausgabe- (I/O-) Schnittstellen 1360. Die I/O-Schnittstelle 1360 kann eine oder mehrere Schnittstellenkomponenten aufweisen, durch die ein Benutzer mit dem System 1300 interagiert (z.B. Audio-, alphanumerische, taktile/Berührungs- oder andere Schnittstellenbildung). Die periphere Schnittstelle 1370 kann irgendeine Hardware-Schnittstelle umfassen, die oben nicht spezifisch angeführt wurde. Periphere Einrichtungen beziehen sich allgemein auf Vorrichtungen, die abhängig mit dem System 1300 verbunden sind. Eine abhängige Verbindung ist eine, wo das System 1300 die Software-Plattform oder Hardware-Plattform oder beides vorsieht, auf denen die Operation ausgeführt wird, und mit denen ein Benutzer interagiert.
  • In einer Ausführungsform umfasst das System 1300 ein Speichersubsystem 1380, um Daten in einer nicht-flüchtigen Weise zu speichern. In einer Ausführungsform können in bestimmten Systemimplementierungen mindestens bestimmte Komponenten des Speichers 1380 mit Komponenten des Speichersubsystems 1320 überlappen. Das Speichersubsystem 1380 umfasst eine oder mehrere Speichervorrichtungen 1384, die irgendein herkömmliches Medium zum Speichern großer Datenmengen in einer nicht-flüchtigen Weise sein oder umfassen können, wie eine oder mehrere magnetische, Solid State- oder optisch basierte Platten oder eine Kombination. Der Speicher 1384 hält Code oder Instruktionen und Daten 1386 in einem persistenten Zustand (d.h. der Wert wird trotz einer Unterbrechung der Energie zum System 1300 beibehalten). Der Speicher 1384 kann generisch als „Memory“ angesehen werden, obwohl der Memory 1330 typischerweise der ausführende oder Betriebsspeicher ist, um dem Prozessor 1310 Instruktionen zu liefern. Obwohl der Speicher 1384 nicht-flüchtig ist, kann der Memory 1330 einen flüchtigen Speicher umfassen (d.h. der Wert oder Zustand der Daten ist unbestimmt, wenn die Energie zum System 1300 unterbrochen wird). In einer Ausführungsform umfasst das Speichersubsystem 1380 eine Steuereinheit 1382, um eine Schnittstelle mit dem Speicher 1384 zu bilden. In einer Ausführungsform ist die Steuereinheit 1382 ein physischer Teil der Schnittstelle 1314 oder des Prozessors 1310 oder kann Schaltungen oder Logik sowohl im Prozessor 1310 als auch in der Schnittstelle 1314 umfassen.
  • Die Energiequelle 1302 liefert Energie an die Komponenten des Systems 1300. Spezifischer bildet die Energiequelle 1302 typischerweise eine Schnittstelle mit einer oder mehreren Energiezufuhren 1304 im System 1302, um Energie an die Komponenten des Systems 1300 zu liefern. In einer Ausführungsform umfasst die Energiezufuhr 1304 einen WS-GS- (Wechselstrom-Gleichstrom-) Adapter, um in einen Wandauslass eingesteckt zu werden. Ein solche WS-Energie kann eine Energiequelle 1302 für erneuerbare Energie sein (z.B. Solarenergie). In einer Ausführungsform umfasst die Energiequelle 1302 eine GS-Energiequelle, wie einen externen WS-GS-Wandler. In einer Ausführungsform umfasst die Energiequelle 1302 oder die Energiequelle 1304 drahtlose Lade-Hardware, um durch die Nähe zu einem Ladefeld zu laden. In einer Ausführungsform kann die Energiequelle 1302 eine interne Batterie oder Brennstoffzellenquelle umfassen.
  • In einer Ausführungsform umfasst das System 1300 den Rollback-Verwalter 1390, der Logik repräsentiert, um eine Prüfpunktsetzung gemäß irgendeiner hier beschriebenen Ausführungsform vorzunehmen. Der Rollback-Verwalter 1390 repräsentiert Komponenten innerhalb des Speichersystems, um die Prüfpunktsetzungs- und Rollback-Fähigkeiten zu implementieren. Gemäß dem, was hier beschrieben wird, kann der Rollback-Verwalter 1390 in einer Speichersteuereinheit implementiert werden. In einer Ausführungsform ist die Speichersteuereinheit die Speichersteuereinheit innerhalb der Speichervorrichtung, wie eines SSD. In einer Ausführungsform ist die Speichersteuereinheit die Speichersteuereinheit innerhalb der Hardware-Plattform des Systems 1300. Der Rollback-Verwalter 1390 ermöglicht es dem System 1300, eine kontinuierliche Prüfpunktsetzung von Schreibvorgängen vorzunehmen, und irgendeinen Speicherpunkt bis zu einer auslegbaren Menge einer Rollback-Fähigkeit zu lesen oder zu diesem zurückzurollen. Der Rollback-Verwalter 1392 repräsentiert Operationen, die innerhalb des Prozessors 1310 ausgeführt werden, um eine Prüfpunktsetzung oder ein Rollback innerhalb des Systems 1300 vorzunehmen.
  • 14 ist ein Blockbild einer Ausführungsform einer mobilen Vorrichtung, in der eine kontinuierliche Prüfpunktsetzung implementiert werden kann. Die Vorrichtung 1400 repräsentiert eine mobile Rechenvorrichtung, wie ein Rechen-Tablet, ein Mobiltelefon oder ein Smartphon, einen drahtlos versorgten E-Reader, eine tragbare Rechenvorrichtung, eine Internet-der-Dinge-Vorrichtung oder eine andere mobile Vorrichtung, oder eine eingebettete Rechenvorrichtung. Es ist klar, dass bestimmte der Komponenten allgemein gezeigt sind, und nicht alle Komponenten einer solchen Vorrichtung in der Vorrichtung 1400 gezeigt sind.
  • Die Vorrichtung 1400 umfasst den Prozessor 1410, der die primären Verarbeitungsoperationen der Vorrichtung 1400 vornimmt. Der Prozessor 1410 kann eine oder mehrere physische Vorrichtungen umfassen, wie Mikroprozessoren, Anwendungsprozessoren, Mikrosteuereinheiten, programmierbare Logikvorrichtungen oder andere Verarbeitungsmittel. Die Verarbeitungsoperationen, die vom Prozessor 1410 vorgenommen werden, umfassen die Ausführung einer Betriebsplattform oder eines Betriebssystems, auf dem Anwendungen und Vorrichtungsfunktionen ausgeführt werden. Die Verarbeitungsoperationen umfassen Operationen in Bezug auf die I/O (Eingabe/Ausgabe) mit einem menschlichen Benutzer oder mit anderen Vorrichtungen, Operationen in Bezug auf die Energieverwaltung, Operationen in Bezug auf die Verbindungsvorrichtung 1400 oder eine andere Vorrichtung, oder eine Kombination. Die Verarbeitungsoperationen können auch Operationen in Bezug auf Audio-I/O, Anzeige-I/O oder eine andere Schnittstellenbildung oder eine Kombination umfassen. Der Prozessor 1410 kann Daten ausführen, die im Speicher gespeichert sind. Der Prozessor 1410 kann Daten, die im Speicher gespeichert sind, schreiben oder editieren.
  • In einer Ausführungsform umfasst das System 1400 einen oder mehrere Sensoren 1412. Die Sensoren 1412 repräsentieren eingebettete Sensoren oder Schnittstellen mit externen Sensoren, oder eine Kombination. Die Sensoren 1412 ermöglichen es dem System 1400, einen oder mehrere Zustände einer Umgebung oder einer Vorrichtung zu überwachen oder zu detektieren, worin das System 1400 implementiert ist. Die Sensoren 1412 können umfassen: Umgebungssensoren (wie Temperatursensoren, Bewegungsdetektoren, Lichtdetektoren, Kameras, chemische Sensoren (z.B. Kohlenmonoxid-, Kohlendioxid- oder andere chemische Sensoren)), Drucksensoren, Akzelerometer, Gyroskope, medizinische oder physiologische Sensoren (z.B. Biosensoren, Herzratenmonitore oder andere Sensoren zur Detektion physiologischer Attribute) oder andere Sensoren, oder eine Kombination davon. Die Sensoren 1412 können auch Sensoren für biometrische Systeme umfassen, wie Fingerabdruckerkennungssysteme, Gesichtsdetektions- oder -erkennungssysteme, oder andere Systeme, die Benutzermerkmale detektieren oder erkennen. Die Sensoren 1412 sollten breit verstanden werden und nicht auf die vielen verschiedenen Typen von Sensoren beschränkt sein, die mit dem System 1400 implementiert werden könnten. In einer Ausführungsform ist einer oder sind mehrere Sensoren 1412 mit dem Prozessor 1410 über eine Front End-Schaltung gekoppelt, die mit dem Prozessor 1410 integriert ist. In einer Ausführungsform ist einer oder sind mehrere Sensoren 1412 mit dem Prozessor 1410 über eine andere Komponente des Systems 1400 gekoppelt.
  • In einer Ausführungsform umfasst die Vorrichtung 1400 ein Audio-Subsystem 1420, das Komponenten von Hardware (z.B. Audio-Hardware und Audio-Schaltungen) und Software (z.B. Treiber, Codecs) repräsentiert, die mit dem Vorsehen von Audio-Funktionen für die Rechenvorrichtung assoziiert sind. Audio-Funktionen können eine Lautsprecher- oder Kopfhörerausgabe umfassen, sowie eine Mikrofoneingabe. Vorrichtungen für solche Funktionen können in die Vorrichtung 1400 integriert werden oder mit der Vorrichtung 1400 verbunden werden. In einer Ausführungsform interagiert ein Benutzer mit der Vorrichtung 1400 durch das Erteilen von Audio-Befehlen, die vom Prozessor 1410 empfangen und verarbeitet werden.
  • Das Anzeigesubsystem 1430 repräsentiert Komponenten von Hardware (z.B. Anzeigevorrichtungen) und Software (z.B. Treiber), die eine visuelle Anzeige zur Präsentation für einen Benutzer vorsehen. In einer Ausführungsform umfasst die Anzeige taktile Komponenten oder Berührungsbildschirmelemente, damit ein Benutzer mit der Rechenvorrichtung interagieren kann. Das Anzeigesubsystem 1430 umfasst eine Anzeigeschnittstelle 1432, die den bestimmten Bildschirm oder die Hardware-Vorrichtung umfasst, welche verwendet wird, um eine Anzeige für einen Benutzer vorzusehen. In einer Ausführungsform umfasst die Anzeigeschnittstelle 1432 eine Logik getrennt vom Prozessor 1410 (wie einen Grafikprozessor), um mindestens einen Teil der Verarbeitung in Bezug auf die Anzeige vorzunehmen. In einer Ausführungsform umfasst das Anzeigesubsystem 1430 eine Berührungsbildschirmvorrichtung, die sowohl eine Eingabe als auch Ausgabe für einen Benutzer vorsieht. In einer Ausführungsform umfasst das Anzeigesubsystem 1430 eine High Definition- (HD-) Anzeige, die eine Ausgabe für einen Benutzer vorsieht. High Definition kann sich auf eine Anzeige mit einer Pixeldichte von ungefähr 100 PPI (Pixel pro Zoll) oder mehr beziehen, und kann Formate umfassen, wie Full HD (z.B. 1080p), Retinaanzeigen, 4K (Ultra High Definition oder UHD) oder andere. In einer Ausführungsform umfasst das Anzeigesubsystem eine Berührungsbildschirmanzeige umfassen. In einer Ausführungsform generiert das Anzeigesubsystem 1430 Anzeigeinformationen auf der Basis von Daten, die im Speicher gespeichert sind, oder auf der Basis von Operationen, die vom Prozessor 1410 ausgeführt werden, oder beidem.
  • Die I/O-Steuereinheit 1440 repräsentiert Hardware-Vorrichtungen und Software-Komponenten in Bezug auf eine Interaktion mit einem Benutzer. Die I/O-Steuereinheit 1440 kann arbeiten, um Hardware zu verwalten, die ein Teil des Audio-Subsystems 1420 ist, oder des Anzeigesubsystems 1430, oder von beidem. Zusätzlich veranschaulicht die I/O-Steuereinheit 1440 einen Verbindungspunkt für zusätzliche Vorrichtungen, die mit der Vorrichtung 1400 verbunden werden, durch die ein Benutzer mit dem System interagieren könnte. Beispielsweise könnten Vorrichtungen, die an die Vorrichtung 1400 angeschlossen werden können, umfassen: Mikrofonvorrichtungen, Lautsprecher- oder Stereosysteme, Videosysteme oder eine andere Anzeigevorrichtung, eine Tastatur oder Keypad-Vorrichtungen, oder andere I/O-Vorrichtungen zur Verwendung mit spezifischen Anwendungen, wie Kartenleser oder andere Vorrichtungen.
  • Wie oben angeführt, kann die I/O-Steuereinheit 1440 mit dem Audio-Subsystem 1420 oder Anzeigesubsystem 1430 oder beiden interagieren. Beispielsweise kann die Eingabe durch ein Mikrofon oder eine andere Audio-Vorrichtung eine Eingabe oder Befehle für eine oder mehrere Anwendungen oder Funktionen der Vorrichtung 1400 liefern. Zusätzlich kann eine Audio-Ausgabe anstelle oder zusätzlich zu einer Anzeigeausgabe geliefert werden. Wenn in einem weiteren Beispiel ein Anzeigesubsystem einen Berührungsbildschirm aufweist, wirkt die Anzeigevorrichtung auch als Eingabevorrichtung, die mindestens teilweise von der I/O-Steuereinheit 1440 verwaltet werden kann. Es können auch zusätzliche Knöpfe oder Schalter an der Vorrichtung 1400 vorhanden sein, um I/O-Funktionen vorzusehen, die von der I/O-Steuereinheit 1440 verwaltet werden.
  • In einer Ausführungsform verwaltet die I/O-Steuereinheit 1440 Vorrichtungen, wie Akzelerometer, Kameras, Lichtsensoren oder andere Umgebungssensoren, Gyroskope, ein Global Positionining System (GPS) oder andere Hardware, die in der Vorrichtung 1400 enthalten sein kann, oder Sensoren 1412. Der Eingang kann ein Teil einer direkten Benutzerinteraktion sein, sowie einen Umgebungseingang für das System vorsehen, um seine Betriebe zu beeinflussen (wie Filtern auf Rauschen, Einstellen von Anzeigen zur Helligkeitsdetektion, Auslösen eines Blitzes für eine Kamera oder andere Merkmale).
  • In einer Ausführungsform umfasst die Vorrichtung 1400 eine Energieverwaltung 1450, die einen Batterieenergieverbrauch, das Laden der Batterie und Merkmale in Bezug auf einen Energiesparbetrieb verwaltet. Die Energieverwaltung 1450 verwaltet Energie von der Energiequelle 1452, die Energie an die Komponenten des Systems 1400 liefert. In einer Ausführungsform umfasst die Energiequelle 1452 einen WS-GS-(Wechselstrom-Gleichstrom-) Adapter, um in einen Wandauslass eingesteckt zu werden. Eine solche WS-Energie kann erneuerbare Energie sein (z.B. Solarenergie, bewegungsbasierte Energie). In einer Ausführungsform umfasst die Energiequelle 1452 nur GS-Energie, die von einer GS-Energiequelle geliefert werden kann, wie einem externen WS-GS-Wandler. In einer Ausführungsform umfasst die Energiequelle 1452 drahtlose Lade-Hardware, um durch die Nähe eines Ladungsfelds zu laden. In einer Ausführungsform kann die Energiequelle 1452 eine interne Batterie oder eine Brennstoffzellenquelle umfassen.
  • Das Speichersubsystem 1460 umfasst eine oder mehrere Speichervorrichtungen 1462 zum Speichern von Informationen in der Vorrichtung 1400. Das Speichersubsystem 1460 kann nicht-flüchtige (Zustand ändert sich nicht, wenn die Energie zur Speichervorrichtung unterbrochen wird) oder flüchtige (Zustand ist unbestimmt, wenn die Energie zur Speichervorrichtung unterbrochen wird) Speichervorrichtungen oder eine Kombination umfassen. Der Speicher 1460 kann Anwendungsdaten, Benutzerdaten, Musik, Fotos, Dokumente oder andere Daten sowie Systemdaten (egal ob langfristig oder temporär) in Bezug auf die Ausführung der Anwendungen und Funktionen des Systems 1400 speichern. In einer Ausführungsform umfasst das Speichersubsystem 1460 die Speichersteuereinheit 1464 (die auch als Teil der Steuerung des Systems 1400 angesehen werden könnte und potentiell als Teil des Prozessors 1410 angesehen werden könnte). Die Speichersteuereinheit 1464 umfasst einen Scheduler, um Befehle zu generieren und auszugeben, um einen Zugriff auf die Speichervorrichtung 1462 zu steuern.
  • Die Konnektivität 1470 umfasst Hardware-Vorrichtungen (z.B. drahtlose oder verdrahtete Verbinder und Kommunikations-Hardware, oder eine Kombination von verdrahteter und drahtloser Hardware) und Software-Komponenten (z.B. Treiber, Protokollstapel), um es der Vorrichtung 1400 zu ermöglichen, mit externen Vorrichtungen zu kommunizieren. Die externen Vorrichtungen könnten getrennte Vorrichtungen sein, wie andere Rechenvorrichtungen, drahtlose Zugriffspunkte oder Basisstationen, sowie periphere Einrichtungen, wie Kopfhörer, Drucker oder andere Vorrichtungen. In einer Ausführungsform tauscht das System 1400 Daten mit einer externen Vorrichtung zum Speichern im Speicher oder zur Anzeige auf einer Anzeigevorrichtung aus. Die ausgetauschten Daten können Daten umfassen, die im Speicher zu speichern sind, oder Daten, die bereits im Speicher gespeichert sind, um Daten zu lesen, zu schreiben oder zu editieren.
  • Die Konnektivität 1470 kann mehrere verschiedene Typen einer Konnektivität umfassen. Zur Generalisierung wird die Vorrichtung 1400 mit einer zellulären Konnektivität 1472 und einer drahtlosen Konnektivität 1474 veranschaulicht. Die zelluläre Konnektivität 1472 bezieht sich allgemein auf eine zelluläre Netzkonnektivität, die von drahtlosen Trägern vorgesehen wird, wie vorgesehen über GSM (Global System for Mobile Communications) oder Variationen oder Derivate, CDMA (Code Division Multiple Access) oder Variationen oder Derivate, TDM (Time Division Multiplexing) oder Variationen oder Derivate, LTE (Long Term Evolution auch als „4G“ bezeichnet) oder andere zelluläre Dienststandards. Die drahtlose Konnektivität 1474 bezieht sich auf eine drahtlose Konnektivität, die nicht zellulär ist, und kann persönliche Netze (wie Bluetooth), lokale Netze (wie WiFi), oder Weitverkehrsnetze (wie WiMax) oder eine andere drahtlose Kommunikation oder eine Kombination umfassen. Die drahtlose Kommunikation bezieht sich auf den Transfer von Daten durch die Verwendung modulierter elektromagnetischer Strahlung durch ein nicht-festes Medium. Die verdrahtete Kommunikation tritt durch ein festes Kommunikationsmedium auf.
  • Periphere Verbindungen 1480 umfassen Hardware-Schnittstellen und -Verbinder sowie Software-Komponenten (z.B. Treiber, Protokollstapel), um periphere Verbindungen herzustellen. Es ist klar, dass die Vorrichtung 1400 sowohl eine periphere Vorrichtung („zu“ 1482) zu anderen Rechenvorrichtungen sein könnte als auch periphere Vorrichtungen („von“ 1484) aufweisen könnte, die mit dieser verbunden sind. Die Vorrichtung 1400 hat üblicherweise einen „Docking“-Verbinder, um mit anderen Rechenvorrichtungen für Zwecke verbunden zu werden, wie die Verwaltung (z.B. Herunterladen, Hochladen, Ändern, Synchronisieren) von Inhalten auf der Vorrichtung 1400. Zusätzlich kann der Docking-Verbinder es der Vorrichtung 1400 ermöglichen, mit bestimmten peripheren Einrichtungen verbunden zu werden, die es der Vorrichtung 1400 ermöglichen, Inhalte zu steuern, die beispielsweise an audiovisuelle oder andere Systeme ausgegeben werden.
  • Zusätzlich zu einem herstellerspezifischen Docking-Verbinder oder anderer herstellerspezifischer Verbindungs-Hardware kann die Vorrichtung 1400 periphere Verbindungen 1480 über übliche oder standardbasierte Verbinder herstellen. Übliche Typen können umfassen: einen Universal Serial Bus- (USB-) Anschluss (der eine beliebige Anzahl von verschiedenen Hardware-Schnittstellen umfassen kann), DisplayPort, einschließlich MiniDisplayPort (MDP), High Definition Multimedia Interface (HDMI), oder einen anderen Typ.
  • In einer Ausführungsform umfasst das System 1400 einen Rollback-Verwalter 1490, der Logik repräsentiert, um eine Prüfpunktsetzung gemäß irgendeiner hier beschriebenen Ausführungsform vorzunehmen. Der Rollback-Verwalter 1490 repräsentiert Komponenten innerhalb des Speichersystems, um die Prüfpunktsetzungs- und Rollback-Fähigkeiten zu implementieren. Gemäß dem, was hier beschrieben ist, kann der Rollback-Verwalter 1490 in einer Speichersteuereinheit implementiert werden. In einer Ausführungsform ist die Speichersteuereinheit die Speichersteuereinheit innerhalb der Speichervorrichtung, wie eines SSD. In einer Ausführungsform ist die Speichersteuereinheit die Speichersteuereinheit innerhalb der Hardware-Plattform des Systems 1400. Der Rollback-Verwalter 1490 ermöglicht es dem System 1400, eine kontinuierliche Prüfpunktsetzung von Schreibvorgängen vorzunehmen, und irgendeinen Speicherpunkt bis zu einer auslegbaren Menge einer Rollback-Fähigkeit zu lesen und zu diesem zurückzurollen. Der Rollback-Verwalter 1492 repräsentiert Operationen, die innerhalb des Prozessors 1410 ausgeführt werden, um eine Prüfpunktsetzung oder ein Rollback innerhalb des Systems 1400 vorzunehmen.
  • In einem Aspekt umfasst eine Vorrichtung, um eine Schnittstelle zu Speicherressourcen zu bilden: eine Hardware-Schnittstelle, um mit einem nicht-flüchtigen Speichermedium gekoppelt zu werden; und eine Steuereinheit, um logische Adressen in physische Adressen für Schreibvorgänge in das nicht-flüchtige Speichermedium zu übersetzen, wobei die Steuereinheit ein Protokoll der neuesten N Schreibvorgänge zu halten hat, wobei N eine auslegbare Datenmenge repräsentiert, und wobei die Steuereinheit Daten in ungenutzte physische Adressen als aktive Daten zu schreiben hat, und veraltete Daten für die neuesten N Schreibvorgänge zu halten hat.
  • In einer Ausführungsform zeigt N eine Anzahl von Schreibvorgängen an, die innerhalb einer Zeitperiode auftreten. In einer Ausführungsform zeigt N eine Anzahl von Schreibvorgängen an, die einen Betrag einer Speicherkapazität repräsentieren. In einer Ausführungsform hat die Steuereinheit eine Anwendungsdatenschnittstelle zu exponieren, um eine Änderung eines aktiven Zustands des nicht-flüchtigen Speichermediums zurück zu irgendwo von vor 1 bis N Schreibvorgängen zuzulassen. In einer Ausführungsform hat die Steuereinheit eine Anwendungsdatenschnittstelle zu exponieren, um ein Lesen eines Zustands des nicht-flüchtigen Speichermediums zurück zu irgendwo von vor 1 bis N Schreibvorgängen ohne Änderung eines aktiven Zustands des nicht-flüchtigen Speichermediums zuzulassen. In einer Ausführungsform umfasst N eine vom Benutzer ausgewählte Einstellung, um eine Rollback-Fähigkeit anzuzeigen. In einer Ausführungsform umfasst das Halten der veralteten Daten, dass die Steuereinheit eine Speicherbereinigung oder Defragmentierung verhindert. In einer Ausführungsform umfasst das Protokoll Einträge, um eine logische Blockadresse und eine oder mehrere physische Adressen anzuzeigen, die mit veralteten Daten assoziiert sind. In einer Ausführungsform umfasst das Schreiben eine Modifikation von Daten, die bereits auf dem nicht-flüchtigen Speichermedium gespeichert sind. In einer Ausführungsform umfasst das nicht-flüchtige Speichermedium einen Flash-Speicher. In einer Ausführungsform umfasst das nicht-flüchtige Speichermedium entweder ein Festplattenlaufwerk oder eine serielle periphere Schnittstellenspeichervorrichtung. In einer Ausführungsform umfasst die Steuereinheit eine Steuereinheit auf einem Solid State-Laufwerk (SSD). In einer Ausführungsform umfasst die Steuereinheit eine Steuereinheit auf einem Host getrennt von einem Solid State-Laufwerk. In einer Ausführungsform hat die Steuereinheit ferner eine Rollback-Anforderung als gesicherten Befehl zu empfangen, und hat die Rollback-Anforderung nur nach einer Verifikation des gesicherten Befehls auszuführen. In einer Ausführungsform hat die Steuereinheit ferner das Protokoll mindestens teilweise auf der Basis einer Priorität der Daten zu halten, wobei die mit einer logischen Adresse assoziierten Daten, die als Prioritätsdaten identifiziert werden, in dem Protokoll vor Daten mit einer niedrigeren Priorität zu halten sind. In einer Ausführungsform hat die Steuereinheit ferner das Protokoll mindestens teilweise auf der Basis einer Priorität der Daten zu halten, wobei die Steuereinheit automatisch Daten auf der Basis einer Dateiverwendung zu priorisieren hat.
  • In einer Ausführungsform umfasst ein Computersystem: einen Host-Prozessor; eine nicht-flüchtige Speichervorrichtung, um Daten zu speichern, die von dem Host-Prozessor verarbeitet werden, wobei die Speichervorrichtung Modifikationen an den Daten in ungenutzte physische Adressen als aktive Daten zu schreiben hat; und eine Steuereinheit, um logische Adressen in physische Adressen für Schreibvorgänge in die Speichervorrichtung zu übersetzen, und ein Protokoll der neuesten N Schreibvorgänge zu halten, wobei N eine auslegbare Datenmenge repräsentiert, und wobei die Steuereinheit zu bewirken hat, dass die Speichervorrichtung veraltete Daten für die neuesten N Schreibvorgänge hält.
  • In einer Ausführungsform zeigt N eine Anzahl von Schreibvorgängen an, die innerhalb einer Zeitperiode auftreten. In einer Ausführungsform zeigt N eine Anzahl von Schreibvorgängen an, die einen Betrag einer Speicherkapazität repräsentieren. In einer Ausführungsform hat die Steuereinheit eine Anwendungsdatenschnittstelle zu exponieren, um eine Änderung eines aktiven Zustands der Speichervorrichtung zurück zu irgendwo von vor 1 bis N Schreibvorgängen zuzulassen. In einer Ausführungsform hat die Steuereinheit eine Anwendungsdatenschnittstelle zu exponieren, um ein Lesen eines Zustands der Speichervorrichtung zurück zu irgendwo von vor 1 bis N Schreibvorgängen ohne Änderung eines aktiven Zustands der Speichervorrichtung zuzulassen. In einer Ausführungsform umfasst das Halten der veralteten Daten, dass die Steuereinheit eine Speicherbereinigung oder Defragmentierung verhindert. In einer Ausführungsform umfasst die nicht-flüchtige Speichervorrichtung eine eingebettete Speichervorrichtung, die auf einer gemeinsamen Hardware-Plattform mit einem Prozessor eingebettet ist. In einer Ausführungsform umfasst das Protokoll Einträge, um eine logische Blockadresse und eine oder mehrere physische Adressen anzuzeigen, die mit den veralteten Daten assoziiert sind. In einer Ausführungsform umfasst das Schreiben eine Modifikation von Daten, die bereits auf dem nicht-flüchtigen Speichermedium gespeichert sind. In einer Ausführungsform umfasst das nicht-flüchtig Speichermedium einen Flash-Speicher. In einer Ausführungsform umfasst das nicht-flüchtige Speichermedium entweder ein Festplattenlaufwerk oder eine serielle periphere Schnittstellenspeichervorrichtung. In einer Ausführungsform umfasst die nicht-flüchtige Speichervorrichtung ein Solid State-Laufwerk (SSD). In einer Ausführungsform umfasst die Steuereinheit eine Steuereinheit auf einem Host getrennt von einem Solid State-Laufwerk. In einer Ausführungsform hat die Steuereinheit ferner eine Rollback-Anforderung als sicheren Befehl zu empfangen, und hat die Rollback-Anforderung nur nach der Verifikation des gesicherten Befehls auszuführen. In einer Ausführungsform hat die Steuereinheit ferner das Protokoll mindestens teilweise auf der Basis einer Priorität der Daten zu halten, wobei die mit einer logischen Adresse assoziierten Daten, die als Prioritätsdaten identifiziert werden, in dem Protokoll vor Daten mit einer niedrigeren Priorität zu halten sind. In einer Ausführungsform hat die Steuereinheit ferner das Protokoll mindestens teilweise auf der Basis einer Priorität der Daten zu halten, wobei die Steuereinheit automatisch Daten auf der Basis einer Dateiverwendung zu priorisieren hat. In einer Ausführungsform, umfassend eines oder mehrere von: wobei der Host-Prozessor eine Mehrkern-Zentraleinheit (CPU) umfasst; einer Anzeige, die kommunikativ mit dem Prozessor gekoppelt ist; einer Batterie, um das Computersystem mit Energie zu versorgen; oder einer Netzschnittstelle, die kommunikativ mit dem Prozessor gekoppelt ist.
  • In einem Aspekt umfasst ein Verfahren zum Schreiben von Daten in ein nicht-flüchtiges Speichermedium: Empfangen einer Schreibanforderung für eine logische Adresse eines nicht-flüchtigen Speichermediums; Ausführen der Schreibanforderung durch Schreiben in eine ungenutzte physische Adresse als aktive Daten; Assoziieren der logischen Adresse mit der ungenutzten physischen Adresse; und Protokollieren einer vorherigen physischen Adresse für die logische Adresse als veraltete Daten, um Daten an der vorherigen physischen Adresse für N Schreibvorgänge zu halten, wobei N eine auslegbare Datenmenge repräsentiert.
  • In einer Ausführungsform zeigt N eine Anzahl von Schreibvorgängen an, die innerhalb einer Zeitperiode auftreten. In einer Ausführungsform zeigt N eine Anzahl von Schreibvorgängen an, die einen Betrag einer Speicherkapazität repräsentieren. In einer Ausführungsform, ferner umfassend: Exponieren einer Anwendungsdatenschnittstelle, um eine Änderung eines aktiven Zustands des nicht-flüchtigen Speichermediums zurück zu irgendwo von vor 1 bis N Schreibvorgängen zuzulassen. In einer Ausführungsform, ferner umfassend: Exponieren einer Anwendungsdatenschnittstelle, um ein Lesen eines Zustands der Speichervorrichtung zurück zu irgendwo von vor 1 bis N Schreibvorgängen ohne Änderung eines aktiven Zustands des nicht-flüchtigen Speichermediums zuzulassen. In einer Ausführungsform umfasst N eine von einem Benutzer ausgewählte Einstellung, um eine Rollback-Fähigkeit anzuzeigen. In einer Ausführungsform umfasst das Halten der veralteten Daten, dass eine Speicherbereinigung oder Defragmentierung verhindert wird. In einer Ausführungsform umfasst das Protokollieren der vorherigen physischen Adresse ein Generieren von Protokolleinträgen, um eine logische Blockadresse und eine oder mehrere physische Adressen anzuzeigen, die mit veralteten Daten assoziiert sind. In einer Ausführungsform umfasst die Schreibanforderung eine Anforderung zur Modifikation der Daten, die bereits auf dem nicht-flüchtigen Speichermedium gespeichert sind. In einer Ausführungsform umfasst das nicht-flüchtige Speichermedium einen Flash-Speicher. In einer Ausführungsform umfasst das nicht-flüchtige Speichermedium entweder ein Festplattenlaufwerk oder eine serielle periphere Schnittstellenspeichervorrichtung. In einer Ausführungsform umfasst die Steuereinheit eine Steuereinheit auf einem Solid State-Laufwerk (SSD). In einer Ausführungsform umfasst die Steuereinheit eine Steuereinheit auf einem Host getrennt von einem Solid State-Laufwerk. In einer Ausführungsform hat die Steuereinheit ferner eine Rollback-Anforderung als sicheren Befehl zu empfangen, und hat die Rollback-Anforderung nur nach der Verifikation des gesicherten Befehls auszuführen. In einer Ausführungsform umfasst das Protokollieren der vorherigen physischen Adresse ein Halten eines Protokolls mindestens teilweise auf der Basis der Priorität der Daten, wobei Daten, die mit einer logischen Adresse assoziiert sind, und die als Prioritätsdaten identifiziert werden, im Protokoll vor den Daten mit einer niedrigeren Priorität zu halten sind. In einer Ausführungsform umfasst das Protokollieren der vorherigen physischen Adresse ein Halten eines Protokolls mindestens teilweise auf der Basis der Priorität der Daten, einschließlich eines automatischen Priorisierens der Daten auf der Basis der Dateiverwendung.
  • In einem Aspekt umfasst eine Vorrichtung Mittel zum Vornehmen eines Verfahrens gemäß irgendeiner Ausführungsform des Verfahrens der vorhergehenden zwei Absätze. In einem Aspekt umfasst ein Herstellungsartikel ein computerlesbares Medium, das darauf gespeicherten Inhalt aufweist, um Instruktionen zu liefern, um zu bewirken, dass sich eine Maschine gemäß irgendeiner Ausführungsform des Verfahrens der vorhergehenden zwei Absätze verhält.
  • Flussdiagramme, wie hier verwendet, liefern Beispiele von Sequenzdn verschiedener Prozessaktionen. Die Flussdiagramme können Operationen anzeigen, die von einer Software- oder Firmware-Routine auszuführen sind, sowie physische Operationen. In einer Ausführungsform kann ein Flussdiagramm den Zustand einer endlichen Zustandsmaschine (FSM) veranschaulichen, die in Hardware und/oder Software implementiert werden kann. Obwohl in einer bestimmten Sequenz oder Reihenfolge gezeigt, kann die Reihenfolge von Aktionen modifiziert werden, wenn nichts anderes angegeben ist. Somit sind die veranschaulichten Ausführungsformen nur als Beispiel zu verstehen, und der Prozess kann in einer anderen Reihenfolge vorgenommen werden, und einige Aktionen können parallel vorgenommen werden. Zusätzlich kann eine oder können mehrere Aktionen in verschiedenen Ausführungsformen weggelassen werden; somit sind nicht alle Aktionen in jeder Ausführungsform erforderlich. Andere Prozessflüsse sind möglich.
  • In dem Ausmaß, in dem verschiedene Operationen oder Funktionen hier beschrieben werden, können sie als Software-Code, Instruktionen, Auslegungen und/oder Daten beschrieben oder definiert werden. Der Inhalt kann direkt ausführbar sein („Objekt“ oder „ausführbare“ Form), Quellcode oder Differenzcode („Delta“ oder „Patch“ Code). Der Software-Inhalt der hier beschriebenen Ausführungsformen kann über einen Herstellungsartikel mit dem darauf gespeicherten Inhalt vorgesehen werden, oder über ein Verfahren zum Betreiben einer Kommunikationsschnittstelle, um Daten über die Kommunikationsschnittstelle zu senden. Ein maschinenlesbares Speichermedium kann bewirken, dass die Maschine die beschriebenen Funktionen oder Operationen vornimmt, und umfasst irgendeinen Mechanismus, der Informationen in einer Form speichert, auf die eine Maschine zugreifen kann (z.B. eine Rechenvorrichtung, ein elektronisches System usw.), wie beschreibbare/nicht-beschreibbare Medien (z.B. Nurlesespeicher (ROM), Speicher mit wahlfreiem Zugriff (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen usw.). Eine Kommunikationsschnittstelle umfasst irgendeinen Mechanismus, der mit irgendeinem von einem festverdrahteten, drahtlosen, optischen usw. Medium eine Schnittstelle bildet, um mit einer andere Vorrichtung zu kommunizieren, wie einer Speicherbusschnittstelle, einer Prozessorbusschnittstelle, einer Internet-Verbindung, einer Plattensteuereinheit usw. Die Kommunikationsschnittstelle kann ausgelegt werden, indem Auslegungsparameter geliefert werden und/oder Signale gesendet werden, um die Kommunikationsschnittstelle vorzubereiten, ein Datensignal zu liefern, das den Software-Inhalt beschreibt. Auf die Kommunikationsschnittstelle kann über einen oder mehrere Befehle oder Signale zugegriffen werden, die an die Kommunikationsschnittstelle gesendet werden.
  • Verschiedene hier beschriebene Komponenten können ein Mittel zum Vornehmen der beschriebenen Operationen oder Funktionen sein. Jede hier beschriebene Komponente umfasst Software, Hardware oder eine Kombination davon. Die Komponenten können als Software-Module, Hardware-Module, Spezial-Hardware (z.B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASICs), digitale Signalprozessoren (DSPs) usw.), eingebettete Steuereinheiten, festverdrahtete Schaltungen usw. implementiert werden.
  • Abgesehen von dem, was hier beschrieben wird, können verschiedene Modifikationen an den geoffenbarten Ausführungsformen und Implementierungen der Erfindung vorgenommen werden, ohne von ihrem Umfang abzuweichen. Daher sind die Veranschaulichungen und Beispiele hierin in einem veranschaulichenden und nicht einschränkenden Sinn auszulegen. Der Umfang der Erfindung ist nur mit Bezugnahme auf die folgenden Ansprüche zu bemessen.

Claims (24)

  1. Vorrichtung, um eine Schnittstelle zu Speicherressourcen zu bilden, umfassend: eine Hardware-Schnittstelle, um mit einem nicht-flüchtigen Speichermedium gekoppelt zu werden; und eine Steuereinheit, um logische Adressen in physische Adressen für Schreibvorgänge in das nicht-flüchtige Speichermedium zu übersetzen, wobei die Steuereinheit ein Protokoll der neuesten N Schreibvorgänge zu halten hat, wobei N eine auslegbare Datenmenge repräsentiert, und wobei die Steuereinheit Daten in ungenutzte physische Adressen als aktive Daten zu schreiben hat, und veraltete Daten für die neuesten N Schreibvorgänge zu halten hat.
  2. Vorrichtung nach Anspruch 1, wobei N eine Anzahl von Schreibvorgängen anzeigt, die innerhalb einer Zeitperiode auftreten.
  3. Vorrichtung nach Anspruch 1, wobei N eine Anzahl von Schreibvorgängen anzeigt, die einen Betrag einer Speicherkapazität repräsentieren.
  4. Vorrichtung nach Anspruch 1, wobei die Steuereinheit eine Anwendungsdatenschnittstelle zu exponieren hat, um eine Änderung eines aktiven Zustands des nicht-flüchtigen Speichermediums zurück zu irgendwo von vor 1 bis N Schreibvorgängen zuzulassen.
  5. Vorrichtung nach Anspruch 1, wobei die Steuereinheit eine Anwendungsdatenschnittstelle zu exponieren hat, um ein Lesen eines Zustands des nicht-flüchtigen Speichermediums zurück zu irgendwo von vor 1 bis N Schreibvorgängen ohne Änderung eines aktiven Zustands des nicht-flüchtigen Speichermediums zuzulassen.
  6. Vorrichtung nach Anspruch 1, wobei N eine vom Benutzer ausgewählte Einstellung umfasst, um eine Rollback-Fähigkeit anzuzeigen.
  7. Vorrichtung nach Anspruch 1, wobei das Halten der veralteten Daten umfasst, dass die Steuereinheit eine Speicherbereinigung oder Defragmentierung verhindert.
  8. Vorrichtung nach Anspruch 1, wobei das Protokoll Einträge umfasst, um eine logische Blockadresse und eine oder mehrere physische Adressen anzuzeigen, die mit veralteten Daten assoziiert sind.
  9. Vorrichtung nach Anspruch 1, wobei das Schreiben eine Modifikation von Daten umfasst, die bereits auf dem nicht-flüchtigen Speichermedium gespeichert sind.
  10. Vorrichtung nach Anspruch 1, wobei das nicht-flüchtige Speichermedium einen Flash-Speicher umfasst.
  11. Vorrichtung nach Anspruch 1, wobei das nicht-flüchtige Speichermedium entweder ein Festplattenlaufwerk oder eine serielle periphere Schnittstellenspeichervorrichtung umfasst.
  12. Vorrichtung nach Anspruch 1, wobei die Steuereinheit eine Steuereinheit auf einem Solid State-Laufwerk (SSD) umfasst.
  13. Vorrichtung nach Anspruch 1, wobei die Steuereinheit eine Steuereinheit auf einem Host getrennt von einem Solid State-Laufwerk umfasst.
  14. Vorrichtung nach Anspruch 1, wobei die Steuereinheit ferner eine Rollback-Anforderung als gesicherten Befehl zu empfangen hat, und die Rollback-Anforderung nur nach einer Verifikation des gesicherten Befehls auszuführen hat.
  15. Vorrichtung nach Anspruch 1, wobei die Steuereinheit ferner das Protokoll mindestens teilweise auf der Basis einer Priorität der Daten zu halten hat, wobei die mit einer logischen Adresse assoziierten Daten, die als Prioritätsdaten identifiziert werden, in dem Protokoll vor Daten mit einer niedrigeren Priorität zu halten sind.
  16. Vorrichtung nach Anspruch 1, wobei die Steuereinheit ferner das Protokoll mindestens teilweise auf der Basis einer Priorität der Daten zu halten hat, wobei die Steuereinheit automatisch Daten auf der Basis einer Dateiverwendung zu priorisieren hat.
  17. Computersystem, umfassend: einen Host-Prozessor; eine nicht-flüchtige Speichervorrichtung, um Daten zu speichern, die von dem Host-Prozessor verarbeitet werden, wobei die Speichervorrichtung Modifikationen an Daten in ungenutzte physische Adressen als aktive Daten zu schreiben hat; und eine Steuereinheit, um logische Adressen in physische Adressen für Schreibvorgänge in die Speichervorrichtung zu übersetzen, und ein Protokoll der neuesten N Schreibvorgänge zu halten, wobei N eine auslegbare Datenmenge repräsentiert, und wobei die Steuereinheit zu bewirken hat, dass die Speichervorrichtung veraltete Daten für die neuesten N Schreibvorgänge hält.
  18. Computersystem nach Anspruch 17, wobei N eine Anzahl von Schreibvorgängen, die innerhalb einer Zeitperiode auftreten, oder eine Anzahl von Schreibvorgängen, die einen Betrag einer Speicherkapazität repräsentieren, anzeigt.
  19. Computersystem nach Anspruch 17, wobei die Steuereinheit eine Anwendungsdatenschnittstelle zu exponieren hat, um eine Änderung eines aktiven Zustands der Speichervorrichtung zurück zu irgendwo von vor 1 bis N Schreibvorgängen zuzulassen, oder um ein Lesen eines Zustands der Speichervorrichtung zurück zu irgendwo von vor 1 bis N Schreibvorgängen ohne Änderung eines aktiven Zustands der Speichervorrichtung zuzulassen.
  20. Computersystem nach Anspruch 17, wobei das Halten der veralteten Daten umfasst, dass die Steuereinheit eine Speicherbereinigung oder Defragmentierung verhindert.
  21. Computersystem nach Anspruch 17, wobei die nicht-flüchtige Speichervorrichtung eine eingebettete Speichervorrichtung umfasst, die auf einer gemeinsamen Hardware-Plattform mit dem Prozessor, einem Festplattenlaufwerk oder einer seriellen peripheren Schnittstellenspeichervorrichtung eingebettet ist.
  22. Computersystem nach Anspruch 17, wobei die Steuereinheit ferner das Protokoll mindestens teilweise auf der Basis einer Priorität der Daten zu halten hat, wobei die mit einer logischen Adresse assoziierten Daten, die als Prioritätsdaten identifiziert werden, in dem Protokoll vor Daten mit einer niedrigeren Priorität zu halten sind.
  23. Computersystem nach Anspruch 17, umfassend eines oder mehrere von: wobei der Host-Prozessor eine Mehrkern-Zentraleinheit (CPU) umfasst; einer Anzeige, die kommunikativ mit dem Prozessor gekoppelt ist; einer Batterie, um das Computersystem mit Energie zu versorgen; oder einer Netzschnittstelle, die kommunikativ mit dem Prozessor gekoppelt ist.
  24. Verfahren zum Schreiben von Daten in ein nicht-flüchtiges Speichermedium, umfassend: Empfangen einer Schreibanforderung für eine logische Adresse eines nicht-flüchtigen Speichermediums; Ausführen der Schreibanforderung durch Schreiben in eine ungenutzte physische Adresse als aktive Daten; Assoziieren der logischen Adresse mit der ungenutzten physischen Adresse; und Protokollieren einer vorherigen physischen Adresse für die logische Adresse als veraltete Daten, um Daten an der vorherigen physischen Adresse für N Schreibvorgänge zu halten, wobei N eine auslegbare Datenmenge repräsentiert.
DE102018214013.8A 2017-09-29 2018-08-20 Automatische kontinuierliche Prüfpunktsetzung Pending DE102018214013A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/721,625 US20190102262A1 (en) 2017-09-29 2017-09-29 Automated continuous checkpointing
US15/721,625 2017-09-29

Publications (1)

Publication Number Publication Date
DE102018214013A1 true DE102018214013A1 (de) 2019-05-09

Family

ID=65896640

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018214013.8A Pending DE102018214013A1 (de) 2017-09-29 2018-08-20 Automatische kontinuierliche Prüfpunktsetzung

Country Status (3)

Country Link
US (1) US20190102262A1 (de)
CN (1) CN109634775A (de)
DE (1) DE102018214013A1 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294743B2 (en) * 2017-10-26 2022-04-05 SK Hynix Inc. Firmware event tracking for NAND-based storage devices, and methods and instruction sets for performing the same
KR102444421B1 (ko) * 2017-10-31 2022-09-16 아브 이니티오 테크놀로지 엘엘시 중복 작업 결과를 사용하는 컴퓨팅 클러스터 관리
US11481362B2 (en) * 2017-11-13 2022-10-25 Cisco Technology, Inc. Using persistent memory to enable restartability of bulk load transactions in cloud databases
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US10754785B2 (en) * 2018-06-28 2020-08-25 Intel Corporation Checkpointing for DRAM-less SSD
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US20210382992A1 (en) * 2019-11-22 2021-12-09 Pure Storage, Inc. Remote Analysis of Potentially Corrupt Data Written to a Storage System
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11500788B2 (en) * 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
DE102020203024A1 (de) * 2020-03-10 2021-09-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung eingetragener Verein Widerstandsnetzwerk
US20220284974A1 (en) * 2021-03-02 2022-09-08 Micron Technology, Inc. Accelerating configuration updates for memory devices
CN114816832B (zh) * 2022-04-15 2023-03-17 巨翊科技(上海)有限公司 一种单片机的数据管理方法、装置以及系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481694A (en) * 1991-09-26 1996-01-02 Hewlett-Packard Company High performance multiple-unit electronic data storage system with checkpoint logs for rapid failure recovery
US7613875B2 (en) * 2004-12-29 2009-11-03 Intel Corporation Apparatus and method for incremental package deployment
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US20090271563A1 (en) * 2008-04-28 2009-10-29 Microsoft Corporation Flash memory transactioning
US8473700B2 (en) * 2010-03-29 2013-06-25 International Business Machines Corporation Providing versioning in a storage device
US8224781B2 (en) * 2010-05-14 2012-07-17 Lsi Corporation Data protection in a data storage system
US8224780B2 (en) * 2010-06-15 2012-07-17 Microsoft Corporation Checkpoints for a file system
US8935458B2 (en) * 2011-01-05 2015-01-13 Intel Corporation Drive assisted system checkpointing via system restore points
US9336132B1 (en) * 2012-02-06 2016-05-10 Nutanix, Inc. Method and system for implementing a distributed operations log
US9116793B2 (en) * 2012-06-12 2015-08-25 International Business Machines Corporation Maintaining versions of data in solid state memory
US9239715B1 (en) * 2013-09-25 2016-01-19 Amazon Technologies, Inc. Cancel and rollback update stack requests
US9671971B2 (en) * 2015-03-27 2017-06-06 Intel Corporation Managing prior versions of data for logical addresses in a storage device
US10216429B2 (en) * 2015-06-26 2019-02-26 International Business Machines Corporation Performing post-processing operations for log file writes
US9892004B2 (en) * 2015-09-18 2018-02-13 Vmware, Inc. Space efficient persistence of an in-memory table
JP6189488B1 (ja) * 2016-06-27 2017-08-30 株式会社東芝 データベース管理装置、データベース管理方法、およびデータベース管理プログラム

Also Published As

Publication number Publication date
US20190102262A1 (en) 2019-04-04
CN109634775A (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
US20240095233A1 (en) Persistent memory management
US9489258B2 (en) Green NAND SSD application and driver
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102010013389B4 (de) Verfahren und System zum Durchführen von Caching, basierend auf der Heuristik auf Dateiebene
DE102013204972B4 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
US9122582B2 (en) File system for maintaining data versions in solid state memory
US9342256B2 (en) Epoch based storage management for a storage device
US9116793B2 (en) Maintaining versions of data in solid state memory
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE102017124079A1 (de) Speichervorrichtung zum Verarbeiten von beschädigten Metadaten und Verfahren zum Betreiben derselben
DE112014003349T5 (de) Verfahren und Gerät zum Ausführen atomarer Schreibvorgänge
DE112011105984T5 (de) Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen
DE112013004250T5 (de) Systeme, Verfahren und Schnittstellen für adaptive Persistenz
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102008015034A1 (de) Speicherkarte, Speicherkartensystem, Verfahren zum Steuern eines Hosts und Verfahren zum Betreiben einer Speicherkarte
JP2019514146A (ja) 高速システム状態クローニング
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE112017005782T5 (de) Warteschlange für Speichervorgänge