DE102018128601A1 - Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen - Google Patents

Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen Download PDF

Info

Publication number
DE102018128601A1
DE102018128601A1 DE102018128601.5A DE102018128601A DE102018128601A1 DE 102018128601 A1 DE102018128601 A1 DE 102018128601A1 DE 102018128601 A DE102018128601 A DE 102018128601A DE 102018128601 A1 DE102018128601 A1 DE 102018128601A1
Authority
DE
Germany
Prior art keywords
ssd
blocks
data
host
time stamp
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
DE102018128601.5A
Other languages
English (en)
Inventor
Ning Wu
Shankar Natarajan
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 DE102018128601A1 publication Critical patent/DE102018128601A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

Es sind Techniken zum Durchführen einer Hintergrundauffrischung für Speicherungseinrichtungen unter Verwendung eines Zeitstempels vom Host beschrieben. Bei einem Beispiel beinhaltet ein Verfahren Empfangen eines Zeitstempels von einem Host, Speichern des Zeitstempels in einer Speicherungseinrichtung und Bestimmen einer Haltezeit für Daten, die in einem oder mehreren Blöcken der Speicherungseinrichtung gespeichert sind, basierend auf dem Zeitstempel bezüglich eines zweiten Zeitstempels, der angibt, wann die Daten zu dem einen oder den mehreren Blöcken geschrieben wurden. Als Reaktion auf das Bestimmen, dass die Haltezeit eine Schwelle überschreitet, verschiebt die Speicherungseinrichtung die Daten zu einem oder mehreren anderen Blöcken der Speicherungseinrichtung, was ein Verzahnen der Auffrischungsschreiboperationen mit einer Aktivität vom Host beinhalten kann.

Description

  • GEBIET
  • Die Beschreibungen betreffen allgemein Speicherungseinrichtungen, wie etwa Halbleiterlaufwerke, und spezielle Beschreibungen betreffen Techniken zur Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels für Speicherungseinri chtungen.
  • HINTERGRUND
  • Es besteht eine Tendenz für Systeme über die Mobil-, Client- und Unternehmenssegmente hinweg, Halbleiterlaufwerke (SSDs) zur Datenspeicherung zu verwenden. Halbleiterlaufwerke, wie etwa NAND-SSDs, beinhalten eine nicht flüchtige Speicherung. Eine nicht flüchtige Speicherung bezieht sich auf eine Speicherung, deren Zustand bestimmt ist, selbst wenn Leistung zu der Einrichtung unterbrochen wird. Selbst nicht flüchtige Speicherungseinrichtungen weisen jedoch endliche Datenhaltungsfähigkeiten auf und können erfordern, dass Daten, die in einer nicht flüchtigen Speicherungseinrichtung gespeichert sind, aufgefrischt werden. Das Scheitern, Daten aufzufrischen, kann zu Verlust von Daten führen, die auf der nicht flüchtigen Speicherung gespeichert sind.
  • Figurenliste
  • Die folgende Beschreibung beinhaltet eine Besprechung von Figuren, die Veranschaulichungen aufweisen, die als ein Beispiel für Implementierungen von Ausführungsformen der Erfindung gegeben sind. Die Zeichnungen sollten beispielshalber und nicht beschränkend verstanden werden. Wie hierin verwendet, sollen Bezüge auf eine oder mehrere „Ausführungsformen“ oder ein oder mehrere „Beispiele“ als ein spezielles Merkmal, eine spezielle Struktur und/oder eine spezielle Charakteristik beschreibend verstanden werden, das bzw. die in mindestens einer Implementierung der Erfindung enthalten ist. Somit beschreiben hierin auftretende Phrasen wie etwa „bei einer Ausführungsform“ oder „bei einem Beispiel“ verschiedene Ausführungsformen und Implementierungen der Erfindung und beziehen sich nicht notwendigerweise alle auf dieselbe Ausführungsform. Sie sind jedoch auch nicht notwendigerweise gegenseitig ausschließend.
    • 1 veranschaulicht ein Blockdiagramm eines Systems mit einem SSD, bei dem eine Hintergrunddatenauffrischung gemäß einem Beispiel implementiert werden kann.
    • 2 ist ein Blockdiagramm, das ein Beispiel für eine Kommunikation von Systemtaktinformationen von einem Host zu einem SSD veranschaulicht.
    • 3A veranschaulicht ein Beispiel für einen Superblock für ein SSD.
    • 3B ist eine Tabelle, die ein Beispiel für Informationen veranschaulicht, die das SSD speichern kann, um eine akkurate Datenauffrischung zu ermöglichen.
    • 4A veranschaulicht ein Beispiel für eine Identifiziersteuerung-Datenstruktur, die verwendet kann, um zu identifizieren, welche Merkmale durch eine gegebene Speicherungseinrichtung unterstützt werden, einschließlich, ob die Speicherungseinrichtung Systemtaktinformationen annehmen kann.
    • 4B ist eine Tabelle, die ein Beispiel dafür darstellt, wie die Systemtaktinformationen vom Host über einen Merkmal-Einstellen-Befehl zu der Speicherungseinrichtung gesendet werden können.
    • 5 ist ein Flussdiagramm, das ein Beispiel für ein Verfahren zum Durchführen einer Hintergrundauffrischung unter Verwendung eines Systemzeitstempels veranschaulicht.
    • 6 ist ein Flussdiagramm, das ein Beispiel für ein Verfahren veranschaulicht, das durch eine Speicherungseinrichtung zum Durchführen einer Hintergrundauffrischung unter Verwendung eines Systemzeitstempels durchgeführt wird.
    • 7 ist ein Flussdiagramm, das ein Beispiel für ein Verfahren veranschaulicht, das durch einen Host zum Bereitstellen eines Systemzeitstempels durchgeführt wird, um eine Hintergrundauffrischung zu ermöglichen.
    • 8 ist ein Beispiel für Pseudocode zum Einstellen der Hintergrundauffri schungsrate.
    • 9 ist ein Blockdiagramm eines Beispiels für eine Datenverarbeitungseinrichtung mit einem SSD, bei der eine Hintergrunddatenauffrischung implementiert werden kann, gemäß einem Beispiel.
    • 10 ist ein Blockdiagramm eines Beispiels für eine mobile Einrichtung mit einem SSD, bei der eine Hintergrunddatenauffrischung implementiert werden kann, gemäß einem Beispiel.
  • Es folgen Beschreibungen von speziellen Einzelheiten und Implementierungen, einschließlich einer Beschreibung der Figuren, die manche oder alle der nachstehend beschriebenen Ausführungsformen abbilden können, sowie einer Besprechung anderer potenzieller Ausführungsformen oder Implementierungen der hierin dargelegten erfinderischen Konzepte.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Hierin beschrieben sind Techniken zur Hintergrunddatenauffrischung für nicht flüchtige Speicherungseinrichtungen, wie etwa Halbleiterlaufwerke (SSDs). Eine Hintergrunddatenauffrischung beinhaltet das Auffrischen von „kalten Daten“, die in einer Speicherungseinrichtung gespeichert sind, um haltungsbezogene Fehler oder Ausfälle zu vermeiden. Kalte Daten sind Daten, die auf der Speicherungseinrichtung gespeichert sind und auf die nicht häufig zugegriffen wird. Kalte Daten können auf der Speicherungseinrichtung gespeichert sein, ohne, dass auf sie für einen Zeitraum, der sich der maximalen Haltungsfähigkeit einer Speicherungseinrichtung nähert oder diese überschreitet, zugegriffen wird. Das Auffrischen von Daten beinhaltet ein Schreiben der Daten zu einem anderen Ort (oder Neuschreiben der Daten zu demselben Ort), was Datenverlust verhindern kann.
  • Unternehmens-Halbleiterlaufwerke (SSDs), wie etwa SSDs, die in Servern verwendet werden, implementieren Auffrischungstechniken, die auf einen internen Zeittakt angewiesen sind. Es ist üblich, dass Unternehmens-SSDs immer eingeschaltet sind und einen Zeittakt verwalten, wann Daten zu den SSD-Blöcken geschrieben wurden. SSDs, die in mobilen oder anderen Verbrauchereinrichtungen verwendet werden, sind jedoch nicht kontinuierlich eingeschaltet und treten häufig in Niederleistungszustände ein, um den Leistungsverbrauch zu reduzieren und die Batterielebensdauer zu bewahren. Wenn sie heruntergefahren werden oder sich in den Modi mit niedrigster Leistung befinden, sind die meisten der Komponenten der Speicherungseinrichtung ausgeschaltet, einschließlich Komponenten zum Verwalten eines Zeittaktes. Daher sind bestehende Techniken zum Auffrischen von Daten, die in SSDs gespeichert sind, für mobile und andere Verbraucher-SSDs unwirksam.
  • Eine Technik zur Hintergrunddatenauffrischung, die den Systemtakt verwendet, anstatt auf einen internen Takt angewiesen zu sein, kann eine Auffrischung von kalten Daten, die auf den Speicherungseinrichtungen gespeichert sind, ermöglichen, selbst wenn die Speicherung ausgeschaltet worden ist oder sich in einem Niederleistungszustand befindet. Bei einem Beispiel verwaltet die Speicherungseinrichtung Zeitstempelinformationen für jeden Superblock (oder jeden Block, Page oder eine andere Granularität), der Daten speichert, um anzugeben, wann die Daten in den Superblock geschrieben wurden. Wenn die Speicherungseinrichtung ausgeschaltet wird oder in einen Niederleistungszustand übergeht, speichert die Speicherungseinrichtung die Zeitstempelinformationen zu nicht flüchtigen Medien (NVM) ab. Nachdem die Speicherungseinrichtung hochgefahren wird oder aus einem Niederleistungszustand austritt, lädt die Speicherungseinrichtung die Zeitstempelinformationen aus der nicht flüchtigen Speicherung und empfängt auch einen Zeitstempel von einem Host, der die aktuelle Zeit angibt. Im Gegensatz zu bestehenden Techniken kann die Speicherungseinrichtung den aktuellen Zeitstempel, der vom Host empfangen wird, verwenden, um die Haltezeit für Daten an jedem der datenspeichernden Superblöcke akkurat zu bestimmen, selbst wenn die Einrichtung ausgeschaltet war oder sich für einen Zeitraum in einem Niederleistungszustand befand. Falls die Haltezeit eine Schwelle überschreitet, kann die Speicherungseinrichtung die Daten auffrischen. Bei einem Beispiel frischt die Speicherungseinrichtung die Daten auf, indem diese Superblöcke in eine Warteschlange gesetzt werden und Schreiboperationen von der Warteschlange mit Host-Verkehr verzahnt werden. Somit können Auffrischungstechniken, die den Systemtakt vom Host verwenden, eine akkurate Bestimmung von Haltezeiten in mobilen und anderen Verbrauchereinrichtungen ermöglichen und den Verlust von Daten reduzieren.
  • 1 veranschaulicht ein Blockdiagramm eines Systems mit einem SSD, bei dem eine Hintergrunddatenauffrischung gemäß einem Beispiel implementiert werden kann. Ein System 100 beinhaltet ein Halbleiterlaufwerk (SSD) 102, das mit einem Host 110 gekoppelt ist.
  • Der Host 110 repräsentiert eine Host-Hardwareplattform, die mit dem SSD 102 verbunden ist. Der Host 110 beinhaltet eine CPU (Zentralverarbeitungseinheit) 120 oder einen anderen Prozessor als einen Host-Prozessor. Die CPU 120 repräsentiert einen beliebigen Host-Prozessor, der Anforderungen für den Zugriff auf Daten, die auf dem SSD 102 gespeichert sind, entweder zum Lesen der Daten von und zum Schreiben von Daten zu der Speicherung 122, erzeugt. Ein derartiger Prozessor kann einen Einzel- oder Mehrkernprozessor, einen Primärprozessor für eine Datenverarbeitungseinrichtung, einen Grafikprozessor, einen Peripherieprozessor oder einen Ergänzungs- oder Hilfsprozessor oder eine Kombination beinhalten. Der Host 110 beinhaltet einen Chipsatz 114, der Hardwarekomponenten repräsentiert, die den Fluss von Daten zwischen der CPU 120 und anderen Komponenten des Systems 100 einschließlich des SSD 102 steuern oder verwalten können. Der Chipsatz 114 kann zum Beispiel Interconnect-Schaltungen und Logik beinhalten, um einen Zugriff auf das SSD 102 zu ermöglichen. Bei einem Beispiel beinhaltet der Chipsatz 114 eine Speicherungssteuerung, die eine hostseitige Speicherung ist, die von einer Steuerung 130 innerhalb des SSD 102 getrennt ist. Obwohl 1 einen Chipsatz im Host veranschaulicht, der Logik zum Steuern eines Zugriffs auf das SSD beinhaltet, beinhaltet der Host 110 bei anderen Beispielen möglicherweise keinen Chipsatz, oder falls er einen Chipsatz beinhaltet, kann die Speicherungssteuerung unabhängig vom Chipsatz sein. Bei einem Beispiel ist bzw. sind der Chipsatz, die Speicherungssteuerung oder beide in der CPU 120 integriert. Der Host 110 beinhaltet auch einen Taktgenerator 132 zum Erzeugen eines Systemtaktes. Bei einem Beispiel beinhaltet der Taktgenerator 132 eine Schaltung, wie etwa einen Schwingkreis und einen Verstärker, um ein Timing-Signal zur Verwendung bei der Synchronisierung des Betriebs der Plattform 100 zu erzeugen.
  • Der Host beinhaltet außerdem Firmware und Software, die auf der Hardware ausgeführt werden, wie etwa ein Betriebssystem 112, ein Dateisystem 124, ein Basic Input/Output System (BIOS) 118, Treiber 116 und andere Firmware und Software. Wenn das System eingeschaltet wird, ist das BIOS 118 typischerweise für die Initialisierung der Hardware und das Laden des Betriebssystems 112 verantwortlich. Das Betriebssystem 112 ist typischerweise für die Verwaltung, Koordination und Planung von Aktivitäten auf dem System 100 sowie für das gemeinsame Nutzen von Ressourcen des Systems verantwortlich. Das Dateisystem 124 interagiert mit Software, Firmware oder beiden, um auf das SSD 102 zuzugreifen. Der Host 110 kann zum Beispiel einen SSD-Treiber beinhalten, über den das Betriebssystem 112 und das Dateisystem 124 auf das SSD zugreifen können. Ein Beispiel für einen SSD-Treiber ist der Intel®-Rapid-Storage-Technology(RST)-Treiber. Obwohl das System 100 als ein Computersystem mit einem Host-Betriebssystem und einem SSD zum Speichern von Daten veranschaulicht ist, kann das System 100 alternativ dazu eine SPI(Serial Peripheral Interface)-Speicherung oder eine Speicherung, die mit einem SPI-Bus verbunden ist, LSM-basierte (Log-Structured-Merge-basierte) Schlüsselwörterlösungen, Lösungen basierend auf dreidimensionalem Kreuzpunktspeicher oder andere Speicherungssysteme beinhalten.
  • Das SSD 102 repräsentiert ein Halbleiterlaufwerk, das eine nicht flüchtige Speicherung 122 (die auch als nicht flüchtige Medien (NVM) bezeichnet werden kann) zum Speichern von Daten beinhaltet. Das SSD 102 kann ein Flash-basiertes Laufwerk sein, das unter Verwendung einer Schnittstelle eines PCI Express (PCIe), eines seriellen Advanced Technology Attachment (ATA), eines parallelen ATA und/oder eines Universal Serial Bus (USB) mit einem Prozessor verbunden ist. Die Speicherung 122 kann NAND und/oder NOR-Flash und/oder Phasenänderungsspeicher (PCM) und/oder Phasenänderungsspeicher mit Switch (PCMS) und/oder resistiven Speicher und/oder andere nicht flüchtige Speicherungsmedien beinhalten. Daten können in einem Einzelpegelzellen(SLC)-, Dreipegelzellen(TLC)-, Vierpegelzellen(QLC)- und/oder Mehrpegelzellen(MLC)-Format gespeichert werden. Die TLC-, QLC- und/oder MLC-Zellen oder -Blöcke werden typischerweise zum Speichern von Benutzerdaten verwendet. Die SLC-Zellen oder -Blöcke, die gewöhnlich schnellere Zugangsgeschwindigkeiten zu Lasten einer Reduzierung in der Speicherungsdichte aufweisen, speichern typischerweise keine Benutzerdaten und sind typischerweise nicht für den Host zugänglich. Die SLC-Zellen oder -Blöcke können durch das SSD zum Speichern von „Systemdaten“ bezüglich des Betriebs des SSD verwendet werden.
  • Zusätzlich zu der nicht flüchtigen Speicherung 122 kann das SSD 102 auch einen DRAM 108 (oder einen anderen flüchtigen Speicher) beinhalten. Der DRAM 108 beinhaltet einen flüchtigen Speicher, der Daten speichern kann, während das Halbleiterlaufwerk 102 eingeschaltet ist (z. B. betriebsfähig ist). Der DRAM 108 kann zum Beispiel LPDDR3 (Niederleistung-Doppeldatenrate-Version 3, ursprüngliche Veröffentlichung durch JEDEC (Joint Electronic Device Engineering Council) JESD209-3B, August 2013 durch JEDEC), LPDDR4 (Niederleistung-Doppeldatenrate (LPDDR) Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014) oder andere Arten von DRAMs beinhalten. Der DRAM kann einem Standard entsprechen, der durch das Joint Electronic Device Engineering Council (JEDEC) veröffentlicht wird, wie etwa JESD79F für DDR-Doppeldatenrate(DDR)-SDRAM, JESD79-2F für DDR2-SDRAM, JESD79-3F für DDR3-SDRAM oder JESD79-4A für DDR4-SDRAM (diese Standards sind bei www.jedec.org verfügbar). Ein anderer flüchtiger Speicher kann verwendet werden. Manche SSDs beinhalten keinen DRAM (z. B. „DRAM-lose“ SSDs). Bei einem derartigen Beispiel kann das SSD einen SSD-Steuerungsspeicher (nicht dargestellt) beinhalten, der typischerweise SRAM ist. Der DRAM 108 kann zum Speichern von Daten bezüglich des Betriebs des SSD 102 verwendet werden, wie etwa eine Logisch-zu-Physisch-Dereferenzierungstabelle oder andere derartige Informationen.
  • Das SSD 102 beinhaltet auch eine Steuerung 130 zum Steuern eines Zugriffs auf die Speicherung 122. Bei einem Beispiel beinhaltet die Steuerung 130 eine Schnittstelle zu der Speicherung 122 und beinhaltet eine Schnittstelle zum Host 110. Die Steuerung 130 beinhaltet Hardwarelogik zum Steuern des Schreibens zu der Speicherung 122 und des Lesens aus der Speicherung 122. Die Steuerung 130 kann eine anwendungsspezifische integrierte Schaltungssteuerungseinrichtung (ASIC-Einrichtung) sein, die mit einer Schnittstelle verbunden ist, wie etwa einem seriellen ATA oder einer integrierten Antriebselektroniksteuerung. Bei einem anderen Beispiel beinhaltet die Steuerung 130 einen Prozessor oder einen anderen Verarbeitungsschaltkreis (nicht dargestellt). Bei einem Beispiel kann die Steuerung 130 in einem System-aufeinem-Chip (SoC) auf einem einzigen integrierten Schaltungschip enthalten sein.
  • Das SSD 102 beinhaltet auch Firmware 104. Die Firmware 104 kann eine Vielfalt von Funktionen durchführen, wie etwa Übersetzung, Ausschussdatensammlung, Verschleißausgleich und andere Funktionen für den Betrieb und die Optimierung des SSD 102. Bei einem Beispiel kann die Firmware 104 die Flash-Übersetzungsschicht (FTL) beinhalten, die Logik zum Bereitstellen einer Dereferenzierung beinhaltet, um den physischen Adressraum für logische Adressen, wie etwa logische Blockadressen (LBAs) von Anforderungen, die vom Dateisystem 124 empfangen werden, zu identifizieren.
  • Bei dem veranschaulichten Beispiel beinhaltet die Firmware 104 eine Auffrischungslogik 140 zum Durchführen einer Hintergrundauffrischung, um zu gewährleisten, dass Daten, die in der Speicherung 122 gespeichert sind, nicht verloren gehen oder beschädigt werden. Bestehende Techniken zum Auffrischen von Daten in SSDs sind typischerweise auf SSD-„Betriebsstunden“ oder einen Takt intern zum SSD (wie etwa einen ASIC-Zeittakt der Steuerung 130) angewiesen, um zu bestimmen, welche Daten aufzufrischen sind. Derartige bestehende Techniken sind für das Bestimmen, wann Daten aufzufrischen sind, für manche Systeme, wie etwa mobile Einrichtungen, in denen das SSD häufig heruntergefahren wird oder in einen Niederleistungszustand gesetzt wird, unwirksam. Die SSD-„Betriebsstunden“ sind zum Beispiel eine Zählung, die auf dem SSD (z. B. in einem Register auf dem SSD oder an einem anderen Ort auf dem SSD, wie etwa in Blöcken des SSD, auf die der Host nicht zugreifen kann) gespeichert sind und angeben, wie viele Stunden sich das SSD in einem eingeschalteten Zustand befunden hat. Auffrischungstechniken, die auf die SSD-„Betriebsstunden“ angewiesen sind, berücksichtigen nicht die Zeit, für die Daten in der Speicherung 122 gehalten werden, aber für die die Einrichtung entweder ausgeschaltet ist oder sich in einem Niederleistungszustand befindet. Daher können derartige Techniken zu einer unzureichend häufigen Auffrischung von Daten und Datenverlust führen. Gleichermaßen sind Auffrischungstechniken, die auf einen Zeittakt angewiesen sind, der sich auf dem SSD 102 befindet, ebenfalls möglicherweise nicht ausreichend genau, da der Schaltkreis, der den Takt beinhaltet, heruntergefahren wird, wenn das SSD 102 heruntergefahren wird oder sich in den Zuständen mit niedrigster Leistung befindet.
  • Im Gegensatz zu bestehenden Techniken kann die SSD-Firmware 104 jedoch die Haltezeit von Daten, die in der SSD-Speicherung 122 gespeichert sind, genau verfolgen, indem Informationen darüber, wann Daten zu jedem Superblock geschrieben wurden, und basierend auf einem aktuellen Zeitstempel vom Host verwaltet werden. Durch die genaue Verfolgung der Haltezeit kann die SSD-Firmware 104 genauer bestimmen, wann Daten aufgefrischt werden müssen, um Datenverlust zu vermeiden. 2 ist zum Beispiel ein Blockdiagramm, das ein Beispiel für eine Kommunikation von Systemtaktinformationen von einem Host zu einem SSD veranschaulicht. 2 stellt einen SSD-Treiber 202 dar, der mit einem SSD 204 gekoppelt ist. Der SSD-Treiber kann derselbe wie der SSD-Treiber 128 des in 1 veranschaulichten Hosts 110 sein oder diesem ähneln und das SSD 204 kann dasselbe sein wie das SSD 102 von 1 oder diesem ähneln. Blöcke 206, 208 und 210 repräsentieren Operationen in einem Verfahren zum Kommunizieren eines Zeitstempels vom Host zum SSD. Bei dem veranschaulichten Beispiel finden die Operationen 206, 208 und 210 nach dem Einschalten oder dem Austritt aus einem Niederleistungszustand statt. Der Niederleistungszustand kann ein „Schlafzustand“ sein. Bei einem Beispiel ist der Niederleistungszustand ein Zustand, bei dem die Mehrheit der Komponenten (einschließlich der SSD-Steuerung, des DRAM, des NVM und anderer diskreter Komponenten auf der Platine) des SSD 204 abgeschaltet sind (z. B. PS4 im Nonvolatile-Memory-Express(NVMe)-Protokoll und L1 oder L1.2 im PCI-Express(PCIe)-Protokoll). Das NVMe-Protokoll kann sich auf das Protokoll beziehen, das in der NVMe-Spezifikation Version 1.3, veröffentlicht am 1. Mai 2017, oder auf eine andere Version der NVMe-Spezifikation bezieht. Das PCIe-Protokoll kann sich auf das Protokoll, das in der PCI-Express®-Basisspezifikation Version 3.0, veröffentlicht am 10. November 2010, oder auf eine andere Version der PCI-Express®-Basisspezifikation beziehen.
  • Nachdem das SSD 204 eingeschaltet ist oder nachdem das SSD 204 aus einem Niederleistungszustand austritt, benachrichtigt das SSD 204 bei Block 206 den SSD-Treiber 202, dass das SSD initialisiert und zum Annehmen von Host-Befehlen bereit ist. Bei einem Beispiel sendet der SSD-Treiber 202 bei (z. B. unmittelbar nach) dem ersten E/A-Befehl (bei Operation 208) Systemtaktinformationen (z. B. in Form eines Zeitstempels) bei Operation 210 zum SSD 204. Bei einem anderen Beispiel kann der SSD-Treiber 202 die Systemtaktinformationen vor dem ersten E/A-Befehl zum SSD senden. Bei einem Beispiel wird ein Befehl, über den die Systemtaktinformationen gesendet werden, durch den Speicherungstreiber nach Beendigung eines PCIe-/NVMe-Protokoll-Handshakes für Einrichtung(SSD)-Bereit ausgelöst. Sobald das SSD 204 die Systemtaktinformationen vom Host empfängt, kann das SSD die Systemtaktinformationen vom Host zum genauen Bestimmen von Haltezeiten verwenden und Daten auffrischen, die aufgrund eines Überschreitens einer Schwelle Gefahr laufen, verloren zu gehen oder beschädigt zu werden. Das SSD kann zum Beispiel Zeitstempel speichern, die angeben, wann Daten zu einem gegebenen Superblock geschrieben wurden. Basierend auf den Zeitstempeln, die angeben, wann Daten zu einem gegebenen Superblock geschrieben wurden, bezüglich des aktuellen Zeitstempels vom Host kann das SSD auch Haltezeiten für die Superblöcke bestimmen und speichern. Bei einem Beispiel kann das SSD die Zeitstempelinformationen und Haltezeiten in einem flüchtigen Speicher des SSD speichern, während das SSD betrieben wird (z. B. in einem Zustand, in dem der DRAM des SSD eingeschaltet und betriebsfähig ist).
  • Wie zuvor kurz erwähnt, kann das SSD derartige Informationen über eine Superblockgranularität (z. B. für jeden Superblock, in den geschrieben wurde) verfolgen. Ein Superblock (auch als ein Band bekannt) ist ein Block über alle Ebenen über alle Dies. 3A veranschaulicht ein Beispiel für einen Superblock für einen Quad-Plane-4-NAND-Die-SSD. In dem in 3A veranschaulichten Beispiel weist das SSD vier unterschiedliche Dies auf (z. B. Dies 0, 1, 2 und 3), wobei jeder Die vier Ebenen (z. B. 0, 1, 2 und 3) aufweist und jede Ebene Blöcke (z. B. Blöcke 0-n) aufweist. In dem veranschaulichten Beispiel beinhaltet somit der Superblock 0 einen Block 0 in jeder Ebene jedes Dies. Dementsprechend kann das SSD bei einem Beispiel Zeitstempel und Haltezeiten für jeden Superblock (z. B. die Superblöcke 0-n) verfolgen. 3B ist eine Tabelle, die Informationen veranschaulicht, die das SSD speichern kann, um eine akkurate Datenauffrischung zu ermöglichen. Die in der Tabelle von 3B veranschaulichten Informationen (z. B. Zeitstempel und Haltezeiten) können in einem flüchtigen Speicher gespeichert werden, während das SSD betrieben wird, und in einer nicht flüchtigen Speicherung gespeichert werden, wenn das SSD ausgeschaltet ist oder sich in einem Niederleistungsmodus befindet (z. B. einem Niederleistungsmodus, bei dem der DRAM nicht betriebsfähig ist). Mit Bezug auf 1 kann der DRAM 108 des SSD 102 zum Beispiel Zeitstempel- und Haltezeitinformationen speichern, wenn das SSD betriebsfähig ist. In einem DRAM-losen SSD können die Zeitstempel- und Haltezeitinformationen an einem anderen Ort gespeichert werden, wie etwa einem SSD-Steuerungsspeicher. Dann kann das SSD 102 vor dem Eintreten in einen Niederleistungsmodus oder bevor es ausgeschaltet wird, die Zeitstempel- und Haltezeitinformationen zu der SSD-Speicherung 122 speichern. Bei einem derartigen Beispiel speichert das SSD 102 die Zeitstempel- und Haltezeitinformationen zu SLC-Blöcken (z. B. reservierten oder „System“-SLC-Blöcken, auf die der Host nicht typischerweise direkt zugreifen kann) der SSD-Speicherung 122. Wiederum unter Bezugnahme auf 3B ist anzumerken, dass, obwohl die Zeitstempel und die Haltezeit in Sekunden sind, andere Zeitgranularitäten verwendet werden können (z. B. Minuten, Stunden, Tage oder andere Zeiteinheiten). Gleichermaßen, obwohl die Tabelle in 3B ein Beispiel veranschaulicht, bei dem Zeitstempel für jeden Superblock gespeichert werden, können andere Granularitäten verwendet werden. Das SSD kann zum Beispiel Zeitstempelinformationen für jeden Block oder nur für Blöcke oder Superblöcke, in die geschrieben worden ist, oder für andere Granularitäten speichern.
  • Bei dem veranschaulichten Beispiel beinhaltet jeder Eintrag der Tabelle einen Schreiboperationszeitstempel, der die Zeit angibt, wann in den Superblock geschrieben wurde. Das SSD speichert auch einen aktuellen Zeitstempel basierend auf einem Zeittakt auf dem Host. Bei dem unter Bezugnahme auf 2 beschriebenen Beispiel sendet der Host den aktuellen Zeitstempel zum SSD als Reaktion auf den Empfang einer Benachrichtigung vom SSD, dass das SSD initialisiert ist und bereit ist, Befehle anzunehmen (z. B. nach dem Hochfahren oder dem Austritt aus einem Niederleistungsmodus). Es ist anzumerken, dass, obwohl die Tabelle von 3B den aktuellen Zeitstempel mehrere Male (für jeden Superblock) darstellt, das SSD den aktuellen Zeitstempel nur einmal, anstatt für jeden Superblock, speichern kann. Bei einem Beispiel speichert das SSD auch die Datenhaltezeit für jeden Superblock. Bei einem Beispiel wird die Datenhaltezeit berechnet, indem der Schreibezeitstempel vom aktuellen Zeitstempel subtrahiert wird.
  • Erneut unter Bezugnahme auf den aktuellen Zeitstempel wird bei einem Beispiel ein Protokoll zur Kommunikation des aktuellen Zeitstempels vom Host zum SSD erstellt. Durch das Aufweisen eines Protokolls, dem sowohl die SSD-Firmware als auch der SSD-Treiber entspricht, kann der SSD-Treiber einen Zeitstempel bereitstellen, der mit dem vom SSD erwarteten übereinstimmt, und das SSD kann den vom Host empfangenen Zeitstempel korrekt interpretieren. Die 4A und 4B veranschaulichen ein Beispiel für manche Merkmale eines Protokolls zum Kommunizieren des Zeitstempels vom Host zum SSD.
  • 4A veranschaulicht ein Beispiel für eine Identifiziersteuerung-Datenstruktur, die verwendet werden kann, um zu identifizieren, welche Merkmale durch eine gegebene Speicherungseinrichtung unterstützt werden, einschließlich, ob die Speicherungseinrichtung Systemtaktinformationen annehmen kann. Die Datenstruktur 400A kann in einem Protokoll, wie etwa Nonvolatile-Memory-Express (NVMe) oder einem anderen Speicherungsprotokoll, verwendet werden. NVMe definiert einen Identifizier-Befehl, den der Host zu der Speicherungseinrichtung sendet, um zu identifizieren, welche Fähigkeiten und Einstellungen bei einer Speicherungssteuerung (z. B. der SSD-Steuerung 130 von 1) gelten. Als Reaktion auf den Empfang des Identifizier-Befehls wird die Speicherungseinrichtung eine Datenstruktur (z. B. die Identifiziersteuerung-Datenstruktur 400A) zurückgeben, die Informationen bezüglich eines oder mehrerer Merkmale beinhaltet. In der Datenstruktur 400A wird ein Bereich von Bytes für anbieterspezifische Merkmale reserviert. Bei dem veranschaulichten Beispiel werden Bytes 4095:3072 für anbieterspezifische Merkmale reserviert, einschließlich eines Bytes zum Identifizieren, ob die Speicherungseinrichtung das Merkmal zum Annehmen von Systemtaktinformationen unterstützt. Durch das Einstellen des Bits 0 von Byte 3072 zu einer logischen 1 gibt die Speicherungseinrichtung an, dass das Merkmal unterstützt wird, und durch das Einstellen des Bits zu einer logischen 0 gibt die Speicherungseinrichtung an, dass das Merkmal nicht unterstützt wird. Die entgegengesetzte Konvention kann auch verwendet werden (z. B. kann eine logische 0 angeben, dass ein Merkmal unterstützt wird). Obwohl das Byte als zwingend dargestellt ist (wie durch das ,M‘ in der ,O/M‘-Spalte angegeben), kann das Byte bei anderen Beispielen optional sein.
  • Falls die Speicherungseinrichtung das Merkmal zum Annehmen von Systemtaktinformationen unterstützt (wie z. B. durch Byte 3072 in der Datenstruktur 400A angegeben), kann der Host die Systemtaktinformationen zu der Speicherungseinrichtung zu manchen vorbestimmten Zeiten kommunizieren, wie etwa nach dem Hochfahren oder nach dem Austritt aus einem Niederleistungszustand. Der Host kann zum Beispiel die Systemtaktinformationen über einen anbietereindeutigen Merkmal-Einstellen-Befehl kommunizieren.
  • 4B ist eine Tabelle, die ein Beispiel dafür darstellt, wie die Systemtaktinformationen über einen Merkmal-Einstellen-Befehl vom Host zu der Speicherungseinrichtung gesendet werden können. Die Tabelle 400B veranschaulicht zum Beispiel Merkmalskennungen für den NVMe-Merkmale-Einstellen-Befehl. Bevor der Host den Merkmale-Einstellen-Befehl zu der Speicherungseinrichtung sendet, stellt der Host (z. B. über einen Speicherungstreiber, wie etwa den SSD-Treiber 128) die Merkmalskennung C0h ein, um die aktuelle Zeit widerzuspiegeln, wie durch den Systemtakt angegeben. Der aktuelle Zeitstempel kann als die Anzahl von Sekunden (oder Millisekunden (ms), Minuten, Stunden oder eine andere Zeitgranularität) definiert werden, die seit einem vorbestimmten Datum und einer vorbestimmten Zeit verstrichen ist. Andere Zeitstempelformate sind möglich, solange das Format durch ein Protokoll definiert wird und von sowohl dem Host als auch der Speicherungseinrichtung befolgt wird. Bei dem veranschaulichten Beispiel befindet sich das Systemtaktinformationen-Merkmal in den anbieterspezifischen Merkmalen (die anbieterspezifischen Merkmalskennungen beinhalten z. B. Bytes C0h-FFh im veranschaulichten Beispiel). Andere Merkmalskennungen oder andere Befehle können jedoch verwendet werden. Der Host sendet dann den Befehl einschließlich der Merkmalskennungen zu der Speicherungseinrichtung. Die Speicherungseinrichtung kann den aktuellen Zeitstempel zur Bestimmung einer Datenhaltezeit speichern, wie oben und nachstehend ausführlicher beschrieben.
  • Die 5-7 sind Flussdiagramme, die Beispiele für Verfahren zum Durchführen einer Hintergrundauffrischung unter Verwendung eines Systemzeitstempels veranschaulichen. 5 ist ein Flussdiagramm von einer Systemperspektive aus, das Operationen beinhaltet, die durch sowohl den Host als auch die Speicherungseinrichtung durchgeführt werden. 6 ist ein Flussdiagramm von der Speicherungseinrichtungsperspektive aus. 7 ist ein Flussdiagramm von einer Host-Perspektive aus. Wie oben erwähnt, können bestehende Techniken zum Auffrischen von Daten in nicht flüchtigen Medien für Speicherungseinrichtungen unwirksam sein, die häufig ausgeschaltet oder in einen Niederleistungszustand gesetzt werden. In den Verfahren der 5-7 wird ein Zeitstempel vom Host verwendet, um eine Datenhaltezeit genauer zu bestimmen, und daher kann dies eine verbesserte Datenauffrischung ermöglichen.
  • Mit Bezug auf 5 beginnt das Verfahren 500 mit einem Einschalten eines SSD bei Operation 502. Alternativ dazu könnte das Verfahren 500 damit beginnen, dass das SSD aus einem Niederleistungszustand austritt (z. B. aufwacht oder in einen Zustand mit höherer Leistung eintritt). Das SSD kann dasselbe sein wie das SSD 102 von 1 oder diesem ähneln. Die SSD-Firmware lädt dann bei Operation 504 eine Zeitstempeltabelle aus der nicht flüchtigen Speicherung zum DRAM. Unter Bezugnahme auf 1 kann zum Beispiel die SSD-Firmware 104 die Zeitstempeltabelle aus der SSD-Speicherung 122 zum DRAM 108 laden. Bei einem Beispiel, bei dem das SSD keinen DRAM beinhaltet, kann die SSD-Firmware die Zeitstempeltabelle aus der SSD-Speicherung 122 zum SSD-Steuerungsspeicher laden. Das Laden der Zeitstempeltabelle kann ein Laden der Schreiboperationszeitstempel für einen oder mehrere Superblöcke (oder eine andere Granularität) aus der SSD-Speicherung 122 beinhalten. Der SSD-Treiber an der Host-Seite sendet dann bei Operation 506 den aktuellen Zeitstempel auf dem ersten Host-E/A-Befehl. Der SSD-Treiber 128 kann zum Beispiel einen Zeitstempel über einen anbietereindeutigen Merkmale-Einstellen-Befehl senden, wie in 4B veranschaulicht. Bei einem derartigen Beispiel sendet der SSD-Treiber den Zeitstempel über einen anbietereindeutigen Merkmale-Einstellen-Befehl unmittelbar nach dem ersten Host-E/A-Befehl (z. B. nach dem ersten Schreib-, Lese- oder anderen E/A-Befehl). Bei einem Beispiel sendet der Host die Zeitstempelinformationen unmittelbar nach dem ersten E/A-Befehl (z. B. ohne Zwischenbefehle zwischen dem ersten E/A-Befehl und dem anbietereindeutigen Merkmale-Einstellen-Befehl), um ein deterministisches Verhalten zu ermöglichen. Bei einem anderen Beispiel kann der SSD-Treiber den Zeitstempel vor dem ersten E/A-Befehl senden, oder falls der Zeitstempel nach dem ersten Schreibbefehl gesendet wird, kann es einen oder mehrere Zwischenbefehle zwischen dem ersten E/A und dem anbietereindeutigen Merkmale-Einstellen-Befehl geben. Andere Befehle außer dem anbietereindeutigen Merkmale-Einstellen-Befehl können verwendet werden.
  • Die SSD-Firmware aktualisiert dann bei Operation 508 die Zeitstempeltabelle mit einer Haltezeit für jeden Superblock in der Tabelle. Die SSD-Firmware 104 kann zum Beispiel die Datenhaltezeit für jeden Superblock berechnen, indem der Schreiboperationszeitstempel vom aktuellen Zeitstempel subtrahiert wird. Bei einem Beispiel speichert die SSD-Firmware die berechnete Datenhaltezeit für jeden Superblock.
  • Nach dem Bestimmen der Haltezeiten für einen oder mehrere Superblöcke kann die SSD-Firmware dann bei Operation 510 überprüfen, ob die Haltezeit eine Schwelle überschreitet. Die Schwelle kann eine vorbestimmte Zahl sein, die von den Charakteristiken des SSD abhängt. Die Schwelle kann statisch (z. B. wird dieselbe Schwelle im Verlauf der Lebenszeit des SSD verwendet) oder dynamisch (z. B. kann die Schwelle aktualisiert werden, während das SSD mit der Zeit verwendet wird) sein. Falls die Haltezeit die Schwelle überschritten hat, 510-JA-Zweig, dann verschiebt die SSD-Firmware bei Operation 512 die Superblöcke in eine Hintergrunddatenauffrischung-Warteschlange (BDR-Warteschlange; BDR - Background Data Refresh) und setzt ein Flag (z. B. ein BDR-Flag) für den Superblock, um anzugeben, dass die Daten verschoben werden sollten. Die Warteschlange kann in Firmware, Hardware oder einer Kombination implementiert werden. Bei einem Beispiel kann das Verschieben eines Superblocks in die BDR-Warteschlange ein Setzen des BDR-Flags für den Superblock beinhalten. Das Flag kann ein Bit oder mehrere Bits beinhalten und das Setzen des Flags, um anzugeben, dass die Daten an einem gegebenen Superblock zu verschieben sind, kann ein Setzen des Flags zu einer logischen 1 oder einer logischen 0 oder einem anderen Wert beinhalten, um anzugeben, dass die Daten am Superblock verschoben werden sollten. Bei einem anderen Beispiel kann das Verschieben eines Superblocks in die BDR-Warteschlange außerdem oder alternativ ein Speichern mancher Informationen zum Identifizieren des Superblocks in eine Warteschlangendatenstruktur beinhalten. Falls das BDR-Flag gesetzt ist (z. B. zu einem Wert gesetzt, um anzugeben, dass die Daten verschoben werden sollen), 514-JA-Zweig, verzahnt die SSD-Firmware bei 516 eine Host-Aktivität mit BDR-Schreiboperationen, um die zulässigen Daten von Superblöcken in der BDR-Warteschlange zu neuen Superblöcken zu verschieben. Eine oder mehrere der Operationen können durch eine Ausschussdatensammlungsroutine durchgeführt werden, die typischerweise eine Routine der SSD-Firmware (z. B. ein Teil der Firmware 104 von 1) ist. Das Verzahnen der Host-Aktivität mit BDR-Schreiboperationen und die Durchführung der BDR-Schreiboperationen können zum Beispiel durch eine Ausschussdatensammlungsroutine durchgeführt werden.
  • Falls die Haltezeit eines gegebenen Superblocks nicht die Schwelle überschreitet, 510-NEIN-Zweig, dann wird der Superblock nicht in die Warteschlange platziert, das BDR-Flag wird nicht gesetzt (514-NEIN-Zweig) und das SSD fährt damit fort, laufende Host-Aktivität bei Operation 518 zu verarbeiten. Bei einem Beispiel tastet die SSD-Firmware somit bei jedem Leistungszyklus die Datenhaltezeit für jeden Superblock ab. Falls die Haltezeit die Haltezeitschwelle überschreitet, werden die Superblöcke in eine BDR-Warteschlange gesetzt, sodass sie durch eine Ausschussdatensammlungsroutine aufgenommen werden, um die Daten zu verschieben, und das BDR-Flag wird durch Firmware gesetzt. Die Firmware sucht nach dem BDR-Flag und falls es gesetzt ist, löst die Firmware eine Ausschussdatensammlungsroutine aus und die Blöcke in der BDR-Warteschlange können zur Ausschussdatensammlung priorisiert werden. Wenn das SSD in einen Niederleistungszustand übergeht oder ausgeschaltet wird, speichert die SSD-Firmware die Zeitstempelinformationen zu der SSD-Speicherung 122, sodass die Informationen abgerufen werden können, wenn das SSD aufwacht oder hochgefahren wird.
  • 6 ist auch ein Flussdiagramm eines Verfahrens zum Durchführen einer Hintergrundauffrischung unter Verwendung eines Zeitstempels vom Host gemäß einem Beispiel. Das Verfahren 600 von 6 wird durch eine Speicherungseinrichtung durchgeführt (z. B. durch SSD-Firmware durchgeführt, wie etwa die Firmware 104 von 1). Das Verfahren 600 beginnt bei Operation 602 mit dem Empfangen eines Zeitstempels von einem Host (z. B. dem Host 110 von 1). Die Firmware kann zum Beispiel einen Befehl, wie etwa einen anbietereindeutigen Merkmale-Einstellen-Befehl, der einen Zeitstempel beinhaltet, vom Host empfangen. Die SSD-Firmware speichert dann bei Operation 604 den Zeitstempel in der Speicherungseinrichtung. Die Firmware kann zum Beispiel den Zeitstempel in einem DRAM des SSD (z. B. dem DRAM 108 des SSD 102 von 1) speichern. Nach dem Empfangen des Zeitstempels vom Host bestimmt die Firmware bei Operation 606 eine Haltezeit für Daten, die in einem oder mehreren Blöcken der Speicherungseinrichtung gespeichert sind, basierend auf dem Zeitstempel bezüglich eines Schreiboperationszeitstempels. Der Schreiboperationszeitstempel gibt an, wann die Daten zu dem einen oder den mehreren Blöcken (z. B. Blöcken, Superblöcken oder einer anderen Granularität von Speicherungsplatz) geschrieben wurden. Die Firmware kann auch die Haltezeiten des einen oder der mehreren Blöcke zum DRAM speichern. Falls die Haltezeit eine Schwelle überschreitet, verschiebt die Firmware die Daten bei Operation 608 zu einem oder mehreren anderen Blöcken der Speicherungseinrichtung. Die Firmware (z. B. die Auffrischungslogik 140 von 1) kann zum Beispiel Auffrischungsschreiboperationen mit Host-Aktivität verzahnen, um Daten im Hintergrund der Host-Aktivität aufzufrischen.
  • 7 ist ein Flussdiagramm eines Verfahrens zum Übertragen eines aktuellen Zeitstempels basierend auf einem Systemtakt zu einer Speicherungseinrichtung gemäß einem Beispiel. Das Verfahren 700 von 7 kann durch einen Host (z. B. den SSD-Treiber 128 des Hosts 110 von 1) durchgeführt werden. Das Verfahren 700 beginnt bei Operation 702 damit, dass der Host eine Benachrichtigung von einer Speicherungseinrichtung (z. B. dem SSD 102 von 1) empfängt, die angibt, dass die Speicherungseinrichtung bereit ist, Befehle zu empfangen. Der Host sendet dann bei Operation 704 aktuelle Zeitstempelinformationen basierend auf einem Systemtakt des Hosts über einen anbietereindeutigen Merkmale-Einstellen-Befehl zu der Speicherungseinrichtung. Der Host kann zum Beispiel den Zeitstempel über einen Befehl, wie in 4B spezifiziert, senden. Andere Befehle können jedoch auch zum Bereitstellen des Zeitstempels für die Speicherungseinrichtung verwendet werden. Die Speicherungseinrichtung speichert den aktuellen Zeitstempel und kann eine Haltezeit von Daten, die in Blöcken der Speicherungseinrichtung gespeichert sind, basierend auf dem aktuellen Zeitstempel bestimmen.
  • Somit veranschaulichen die Verfahren der 5-7 Verfahren zum Übertragen eines aktuellen Zeitstempels von einem Host zu einer Speicherungseinrichtung, wodurch Haltezeiten von Daten, die auf der Speicherungseinrichtung gespeichert sind, unter Verwendung des aktuellen Zeitstempels bestimmt werden und eine Hintergrundauffrischung basierend auf den Haltezeiten durchgeführt wird. Wie zuvor kurz erwähnt, kann eine Auffrischung von Daten im Hintergrund in dem Sinne durchgeführt werden, dass eine Auffrischungsaktivität mit einer Host-Aktivität verzahnt werden kann. Das Volumen von Schreiboperationen, die aufgrund einer Auffrischung durchgeführt werden müssen, sowie von Host-Aktivität kann jedoch erheblich variieren. Bei einem Beispiel kann die Speicherungseinrichtung (z. B. SSD-Firmware) daher das Verhältnis von Auffrischungsschreiboperationen zu Host-Aktivität dynamisch bestimmen. Das Verhältnis zum Verzahnen von Auffrischungsschreiboperationen und Host-Aktivität kann zum Beispiel auf einem oder mehreren der Folgenden basieren: Haltezeiten von Blöcken in der Warteschlange, der Anzahl von Befehlen vom Host, der Anzahl von aufzufrischenden Blöcken und dem verfügbaren Platz zum Durchführen der Auffrischung (z. B. der Anzahl von leeren Blöcken).
  • 8 ist ein Beispiel für Pseudocode 800 zum Einstellen der Hintergrundauffrischungsrate. Im Pseudocode 800 wird die Rate von Hintergrundschreiboperationen zur Auffrischung basierend auf den folgenden Variablen variieren: dem Anteil von gültigen Einheiten, die vom Quellblock verschoben werden sollen, und dem Anteil von leeren Blöcken, die für das Ziel verfügbar sind. Der Anteil von gültigen Einheiten, die vom Quellblock verschoben werden sollen, ist durch Folgendes gegeben: die gültigen Einheiten im Block dividiert durch die Gesamteinheiten im Block (wobei die Gesamteinheiten sowohl die gültigen als auch ungültigen Blöcke einschließen). Der Anteil von leeren Blöcken ist durch die aktuell leeren Blöcke dividiert durch die gesamten zugewiesenen leeren Blöcke gegeben. Falls der Anteil von gültigen Einheiten geringer als 25 % ist oder falls der Anteil von leeren Blöcken größer als 75 % ist (bei Zeile 802), dann ist dies eine Angabe, dass es weniger Daten zum Schreiben oder mehr verfügbaren Platz zum Schreiben gibt, somit kann das Host-Aktivitätzu-Hintergrundschreiboperation-Aktivität-Verhältnis bei den Zeilen 804-810 auf ein relativ hohes Verhältnis eingestellt werden, wie etwa 4:1. Falls der Anteil von gültigen Einheiten geringer als 50 % ist oder der Anteil von leeren Blöcken größer als 50 % ist (bei Zeile 812), dann kann die Firmware bei den Zeilen 814-818 das Verhältnis von Host-Aktivität zu Hintergrundschreiboperation-Aktivität auf 2:1 einstellen. Falls der Anteil von gültigen Einheiten geringer als 75 % ist oder der Anteil von leeren Blöcken größer als 25 % ist (bei Zeile 820), dann kann das Verhältnis von Host-Aktivität zu Hintergrundschreiboperation-Aktivität bei den Zeilen 822-826 auf 1:2 eingestellt werden. Ansonsten (bei Zeile 828) kann das Verhältnis von Host-Aktivität zu Hintergrundschreiboperation-Aktivität bei den Zeilen 830-834 auf 1:4 eingestellt werden. Diese Verhältnisse sind Beispiele und andere Verhältnisse können zum Durchführen einer Hintergrundauffrischung verwendet werden, um Leistungsfähigkeitsziele zu erzielen und Datenkorruption zu verhindern. Zum Beispiel kann ein Verhältnis, das höher als 4:1 ist (z. B. 8:1, 16:1, 32:1 oder ein höheres Verhältnis), verwendet werden oder ein Verhältnis, das niedriger als 1:4 ist (z.B. 1:8, 1:16, 1:32 oder ein niedrigeres Verhältnis) kann verwendet werden.
  • 9 ist ein Blockdiagramm eines Beispiels für ein Datenverarbeitungssystem, das eine nicht flüchtige Speicherungseinrichtung beinhaltet, die Hintergrunddatenauffrischungstechniken implementiert. Ein System 900 repräsentiert eine Datenverarbeitungseinrichtung gemäß einem beliebigen Beispiel hierin und kann ein Laptop-Computer, ein Desktop-Computer, ein Tablet-Computer, ein Server, ein Gaming- oder Entertainment-Steuersystem, ein Smartphone oder eine andere elektronische Einrichtung sein.
  • Das System 900 beinhaltet einen Prozessor 910, der eine Verarbeitung, Betriebsverwaltung und Ausführung von Anweisungen für das System 900 bereitstellt. Der Prozessor 910 kann einen beliebigen Typ von Mikroprozessor, Zentralverarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder anderer Verarbeitungshardware, um eine Verarbeitung für das System 900 bereitzustellen, oder eine Kombination von Prozessoren beinhalten. Der Prozessor 910 steuert den Gesamtbetrieb des Systems 900 und kann ein oder mehrere programmierbare Allgemein- oder Spezialmikroprozessoren, ein oder mehrere Digitalsignalprozessoren (DSPs), eine oder mehrere programmierbare Steuerungen, eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), eine oder mehrere programmierbare Logikeinrichtungen (PLDs) oder dergleichen oder eine Kombination derartiger Einrichtungen sein oder diese beinhalten.
  • Bei einem Beispiel beinhaltet das System 900 eine Schnittstelle 912, die mit dem Prozessor 910 gekoppelt ist und eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten, die Verbindungen mit höherer Bandbreite benötigen, wie etwa ein Speicheruntersystem 920 oder Grafikschnittstellenkomponenten 940, repräsentieren kann. Die Schnittstelle 912 repräsentiert eine Schnittstellenschaltung, die eine unabhängige Komponente sein kann oder auf einen Prozessor-Die integriert sein kann. Die Schnittstelle 912 kann als eine Schaltung auf den Prozessor-Die integriert sein oder als eine Komponente auf einem System auf einem Chip integriert sein. Wenn vorhanden, verbindet sich die Grafikschnittstelle 940 über eine Schnittstelle mit Grafikkomponenten zum Bereitstellen einer visuellen Anzeige für einen Benutzer des Systems 900. Die Grafikschnittstelle 940 kann eine unabhängige Komponente sein oder auf den Prozessor-Die oder das System auf einem Chip integriert sein. Bei einem Beispiel kann die Grafikschnittstelle 940 eine hochauflösende (HD) Anzeige antreiben, die eine Ausgabe für einen Benutzer bereitstellt. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige beinhalten.
  • Das Speicheruntersystem 920 repräsentiert den Hauptspeicher des Systems 900 und stellt Speicherung für Code, der durch den Prozessor 910 ausgeführt werden soll, oder Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicheruntersystem 920 kann eine oder mehrere Speichereinrichtungen 930 beinhalten, wie etwa Nurlesespeicher (ROM), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM), wie etwa DRAM, oder andere Speichereinrichtungen oder eine Kombination derartiger Einrichtungen. Ein Speicher 930 speichert und hostet unter anderem ein Betriebssystem (OS) 932, um eine Softwareplattform zur Ausführung von Anweisungen im System 900 bereitzustellen. Zusätzlich dazu können Anwendungen 934 auf der Softwareplattform des OS 932 vom Speicher 930 ausgeführt werden. Die Anwendungen 934 repräsentieren Programme, die ihre eigene Operationslogik zum Durchführen einer Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 936 repräsentieren Agenten oder Routinen, die dem OS 932 oder einer oder mehreren Anwendungen 934 oder einer Kombination Hilfsfunktionen bereitstellen. Bei einem Beispiel beinhaltet das Speicheruntersystem 920 eine Speichersteuerung 922, die eine Speichersteuerung zum Erzeugen und Ausstellen von Befehlen zum Speicher 930 ist. Es versteht sich, dass die Speichersteuerung 922 ein physischer Teil des Prozessors 910 oder ein physischer Teil der Schnittstelle 112 sein könnte. Die Speichersteuerung 922 kann zum Beispiel eine integrierte Speichersteuerung sein, die auf einer Schaltung mit dem Prozessor 910 integriert ist, wie etwa auf den Prozessor-Die oder ein System auf einem Chip integriert.
  • Obwohl nicht spezifisch veranschaulicht, wird verstanden werden, dass das System 900 einen oder mehrere Busse oder ein oder mehrere Bussysteme zwischen Einrichtungen beinhalten kann, wie etwa einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln oder können die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Bridges, Adapter, Steuerungen oder einen anderen Schaltkreis oder eine Kombination beinhalten. Busse können zum Beispiel einen Systembus und/oder einen Peripheral-Component-Interconnect(PCI)-Bus und/oder PCI-Express (PCIe) und/oder einen HyperTransport- oder Industriestandardarchitektur(ISA)-Bus und/oder einen Small-Computer-System-Interface(SCSI)-Bus und/oder einen Universal-Serial-Bus (USB) und/oder einen Institute of Electrical and Electronics Engineers (IEEE)-Standard-994-Bus beinhalten.
  • Bei einem Beispiel beinhaltet das System 900 eine Schnittstelle 914, die mit der Schnittstelle 912 gekoppelt sein kann. Die Schnittstelle 914 kann eine Schnittstelle mit niedrigerer Geschwindigkeit als die Schnittstelle 912 sein. Bei einem Beispiel repräsentiert die Schnittstelle 914 eine Schnittstellenschaltung, die unabhängige Komponenten und einen integrierten Schaltkreis beinhalten kann. Bei einem Beispiel sind mehrere Benutzeroberflächenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 914 gekoppelt. Eine Netzwerkschnittstelle 950 liefert dem System 900 die Fähigkeit, über ein oder mehrere Netzwerke mit entfernten Einrichtungen (z. B. Servern oder anderen Datenverarbeitungseinrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 950 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zellulare Netzwerkverbindungskomponenten, USB (Universal Serial Bus) oder andere Schnittstellen basierend auf verdrahteten oder drahtlosen Standards oder anderen proprietären Schnittstellen beinhalten.
  • Bei einem Beispiel beinhaltet das System 900 eine oder mehrere Eingabe/Ausgabe(E/A)-Schnittstellen 960. Die E/A-Schnittstelle 960 kann eine oder mehrere Schnittstellenkomponenten beinhalten, durch die ein Benutzer mit dem System 900 interagiert (z. B. Audio, alphanumerisch, taktil/Berührung oder eine andere Kopplung). Eine Peripherieschnittstelle 970 kann eine beliebige Hardwareschnittstelle beinhalten, die nicht spezifisch oben erwähnt wurde. Peripheriegeräte bezeichnen allgemein Einrichtungen, die abhängig vom System 900 verbunden werden. Eine abhängige Verbindung ist eine, bei der das System 900 die Softwareplattform oder Hardwareplattformen oder beide, auf der eine Operation ausgeführt wird und mit der ein Benutzer interagiert, bereitstellt. Das System 900 beinhaltet auch eine Leistungsquelle 902, die Leistung zu den Komponenten des Systems 900 bereitstellt. Genauer gesagt ist die Leistungsquelle 902 typischerweise über eine Schnittstelle mit einer oder mehreren Leistungsversorgungen 904 im System 902 verbunden, um den Komponenten des Systems 900 Leistung bereitzustellen.
  • Bei einem Beispiel beinhaltet das System 900 ein Speicherungsuntersystem 980 zum Speichern von Daten auf eine nicht flüchtige Art und Weise. Bei einem Beispiel können bei gewissen Systemimplementierungen zumindest gewisse Komponenten der Speicherung 980 Komponenten des Speicheruntersystem 920 überlappen. Das Speicherungsuntersystem 980 beinhaltet eine oder mehrere Speicherungseinrichtungen 981, die eine nicht flüchtige Speicherung 984 beinhalten. Die nicht flüchtige Speicherung 984 kann ein beliebiges herkömmliches Medium zum Speichern von großen Mengen an Daten auf eine nicht flüchtige Art und Weise sein, wie etwa eine oder mehrere magnetisch, Halbleiter- oder optisch basierte Platten oder eine Kombination. Die Speicherung 984 hält Code oder Anweisungen und Daten 986 in einem beständigen Zustand (d. h. der Wert wird trotz einer Unterbrechung der Leistung zum System 900 behalten). Die Speicherung 984 kann generisch als ein „Speicher“ angesehen werden, obwohl der Speicher 930 typischerweise der Ausführungs- oder Betriebsspeicher zum Bereitstellen von Anweisungen zum Prozessor 910 ist. Während die Speicherung 984 nicht flüchtig ist, kann der Speicher 930 flüchtigen Speicher beinhalten (d. h. der Wert oder Zustand der Daten ist unbestimmt, falls die Leistung zum System 900 unterbrochen wird). Bei einem Beispiel beinhaltet das Speicherungsuntersystem 980 eine hostseitige Steuerung 982 zum Verbinden mit der Speicherungseinrichtung 981 und eine speicherungsseitige Steuerung 985 zum Verbinden mit dem Host. Bei einem Beispiel ist die Steuerung 982 ein physischer Teil der Schnittstelle 914 oder des Prozessors 910 oder kann Schaltungen oder Logik in sowohl dem Prozessor 910 als auch der Schnittstelle 914 beinhalten. Die Speicherungseinrichtung 981 beinhaltet auch Firmware 983, die eine Vielfalt von Funktionen durchführen kann, wie etwa oben hinsichtlich der Firmware 104 von 1 beschrieben ist. Bei einem Beispiel kann die Speicherungseinrichtung 981 dieselbe sein wie das SSD 102 von 1 oder diesem ähneln. Bei einem derartigen Beispiel führt die Speicherungseinrichtung 981 verbesserte Hintergrundauffrischungstechniken unter Verwendung eines Zeitstempels vom Host durch, wie hierin beschrieben.
  • 10 ist ein Blockdiagramm eines Beispiels für eine mobile Einrichtung, die eine nicht flüchtige Speicherungseinrichtung beinhaltet, die Hintergrunddatenauffrischungstechniken implementiert. Eine Einrichtung 1000 repräsentiert eine mobile Datenverarbeitungseinrichtung, wie etwa ein Datenverarbeitungs-Tablet, ein Mobiltelefon oder Smartphone, einen drahtlosfähigen E-Reader oder eine andere mobile Einrichtung. Es versteht sich, dass gewisse der Komponenten allgemein dargestellt sind und nicht alle Komponenten einer derartigen Einrichtung in der Einrichtung 1000 dargestellt sind.
  • Die Einrichtung 1000 beinhaltet einen Prozessor 1010, der die primären Verarbeitungsoperationen der Einrichtung 1000 durchführt. Der Prozessor 1010 kann eine oder mehrere physische Einrichtungen, wie etwa Mikroprozessoren, Anwendungsprozessoren, Mikrocontroller, programmierbare Logikeinrichtungen oder andere Verarbeitungsmittel, beinhalten. Die durch den Prozessor 1010 durchgeführten Verarbeitungsoperationen beinhalten die Ausführung einer Betriebsplattform oder eines Betriebssystems, auf der bzw. dem Anwendungen und Einrichtungsfunktionen ausgeführt werden. Die Verarbeitungsoperationen beinhalten Operationen bezüglich E/A (Eingabe/Ausgabe) mit einem menschlichen Benutzer oder mit anderen Einrichtungen, Operationen bezüglich Leistungsverwaltung, Operationen bezüglich des Verbindens der Einrichtung 1000 mit einer anderen Einrichtung oder eine Kombination. Die Verarbeitungsoperationen können auch Operationen bezüglich Audio-E/A, Anzeige-E/A oder einer anderen Schnittstellenverbindung oder eine Kombination beinhalten. Der Prozessor 1010 kann Daten ausführen, die in einem Speicher gespeichert sind. Der Prozessor 1010 kann Daten, die im Speicher gespeichert sind, schreiben oder bearbeiten.
  • Bei einem Beispiel beinhaltet das System 1000 einen oder mehrere Sensoren 1012. Die Sensoren 1012 repräsentieren eingebettete Sensoren oder Schnittstellen zu externen Sensoren oder eine Kombination. Die Sensoren 1012 ermöglichen dem System 1000, eine oder mehrere Bedingungen einer Umgebung oder einer Einrichtung, in der das System 1000 implementiert ist, zu überwachen oder zu detektieren. Bei einem Beispiel sind ein oder mehrere Sensoren 1012 über eine Frontend-Schaltung, die mit dem Prozessor 1010 integriert ist, mit dem Prozessor 1010 gekoppelt. Bei einem Beispiel sind ein oder mehrere Prozessoren 1012 über eine andere Komponente des Systems 1000 mit dem Prozessor 1010 gekoppelt.
  • Bei einem Beispiel beinhaltet die Einrichtung 1000 ein Audiountersystem 1020, das Hardware- (z. B. Audiohardware und Audioschaltungen) und Softwarekomponenten (z. B. Treiber, Codecs) repräsentiert, die mit dem Bereitstellen von Audiofunktionen für die Datenverarbeitungseinrichtung assoziiert sind. Audiofunktionen können eine Lautsprecher- oder Kopfhörerausgabe sowie eine Mikrofoneingabe beinhalten. Einrichtungen für derartige Funktionen können in die Einrichtung 1000 integriert oder mit der Einrichtung 1000 verbunden sein. Bei einem Beispiel interagiert ein Benutzer mit der Einrichtung 1000 durch das Bereitstellen von Audiobefehlen, die durch den Prozessor 1010 empfangen und verarbeitet werden.
  • Ein Anzeigeuntersystem 1030 repräsentiert Hardware- (z.B. Anzeigeeinrichtungen) und Softwarekomponenten (z. B. Treiber), die eine visuelle Anzeige zur Darstellung für einen Benutzer bereitstellen. Bei einem Beispiel beinhaltet die Anzeige taktile Komponenten oder Touchscreen-Elemente, damit ein Benutzer mit der Datenverarbeitungseinrichtung interagieren kann. Das Anzeigeuntersystem 1030 beinhaltet eine Anzeigeschnittstelle 1032, die den speziellen Bildschirm oder die spezielle Hardwareeinrichtung beinhaltet, die zum Bereitstellen einer Anzeige für einen Benutzer verwendet wird. Bei einem Beispiel beinhaltet die Anzeigeschnittstelle 1032 Logik getrennt vom Prozessor 1010 (wie etwa einen Grafikprozessor), um zumindest manche Verarbeitung bezüglich der Anzeige durchzuführen. Bei einem Beispiel beinhaltet das Anzeigeuntersystem 1030 eine Touchscreen-Einrichtung, die sowohl eine Ausgabe als auch eine Eingabe für einen Benutzer bereitstellt.
  • Eine E/A-Steuerung 1040 repräsentiert Hardwareeinrichtungen und Softwarekomponenten bezüglich einer Interaktion mit einem Benutzer. Die E/A-Steuerung 1040 kann funktionsfähig sein, Hardware zu verwalten, die Teil des Audiountersystems 1020 oder des Anzeigeuntersystems 1030 oder beider ist. Zusätzlich dazu veranschaulicht die E/A-Steuerung 1040 einen Verbindungspunkt für zusätzliche Einrichtungen, die mit der Einrichtung 1000 verbunden sind und durch die ein Benutzer mit dem System interagieren könnte. Einrichtungen, die an der Einrichtung 1000 angebracht sein können, könnten zum Beispiel Mikrofoneinrichtungen, Lautsprecher- oder Stereosysteme, Videosysteme oder eine andere Anzeigeeinrichtung, Tastatur- oder Tastenfeldeinrichtungen oder andere E/A-Einrichtungen zur Verwendung mit spezifischen Anwendungen, wie etwa Kartenleser oder andere Einrichtungen, beinhalten.
  • Bei einem Beispiel beinhaltet die Einrichtung 1000 eine Leistungsverwaltung 1050, die den Batterieleistungsverbrauch, das Laden der Batterie und Merkmale bezüglich eines Leistungssparbetriebs verwaltet. Die Leistungsverwaltung 1050 verwaltet Leistung von einer Leistungsquelle 1052, die Leistung für die Komponenten des Systems 1000 bereitstellt.
  • Ein Speicheruntersystem 1060 beinhaltet eine oder mehrere Speichereinrichtungen 1062 zum Speichern von Informationen in der Einrichtung 1000. Das Speicheruntersystem 1060 kann nicht flüchtige (der Zustand ändert sich nicht, falls Leistung zu der Speichereinrichtung unterbrochen wird) oder flüchtige (der Zustand ist unbestimmt, falls Leistung zu der Speichereinrichtung unterbrochen wird) Speichereinrichtungen oder eine Kombination beinhalten. Der Speicher 1060 kann Anwendungsdaten, Benutzerdaten, Musik, Fotos, Dokumente oder andere Daten sowie Systemdaten (egal ob dauerhaft oder temporär) bezüglich der Ausführung der Anwendung und Funktionen des Systems 1000 speichern. Bei einem Beispiel beinhaltet das Speicheruntersystem 1060 eine Speichersteuerung 1064 (die auch als Teil der Steuerung des Systems 1000 angesehen werden könnte und potenziell als Teil des Prozessors 1010 angesehen werden könnte). Die Speichersteuerung 1064 beinhaltet einen Scheduler zum Erzeugen und Ausstellen von Befehlen zum Steuern des Zugriffs auf die Speichereinrichtung 1062.
  • Eine Konnektivität 1070 beinhaltet Hardwareeinrichtungen (z. B. drahtlose oder verdrahtete Verbinder und Kommunikationshardware oder eine Kombination von verdrahteter und drahtloser Hardware) und Softwarekomponenten (z. B. Treiber, Protokollstapel), um zu ermöglichen, dass die Einrichtung 1000 mit externen Einrichtungen kommuniziert. Die externe Einrichtung könnte separate Einrichtungen sein, wie etwa andere Datenverarbeitungseinrichtungen, drahtlose Zugangspunkte oder Basisstationen sowie Peripheriegeräte, wie etwa Headsets, Drucker oder andere Einrichtungen. Bei einem Beispiel tauscht das System 1000 Daten mit einer externen Einrichtung zur Speicherung in einem Speicher oder zur Anzeige auf einer Anzeigeeinrichtung aus. Die ausgetauschten Daten können Daten, die in einem Speicher zu speichern sind, oder schon im Speicher gespeicherte Daten zum Lesen, Schreiben oder Bearbeiten von Daten beinhalten.
  • Die Konnektivität 1070 kann mehrere unterschiedliche Arten von Konnektivität beinhalten. Zur Verallgemeinerung ist die Einrichtung 1000 mit einer zellularen Konnektivität 1072 und einer drahtlosen Konnektivität 1074 veranschaulicht. Die zellulare Konnektivität 1072 bezieht sich allgemein auf eine zellulare Netzwerkkonnektivität, die durch drahtlose Träger bereitgestellt wird, wie etwa über GSM (Global System for Mobile Communications) oder Variationen oder Ableitungen, CDMA (Codemultiplex-Mehrfachzugriff) oder Variationen oder Ableitungen, TDM (Zeitmultiplexing) oder Variationen oder Ableitungen, LTE (Long Term Evolution - auch als „4G“ bezeichnet) oder andere zellulare Dienststandards bereitgestellt. Die drahtlose Konnektivität 1074 bezieht sich auf eine drahtlose Konnektivität, die nicht zellular ist, und kann persönliche Netzwerke (wie etwa Bluetooth), Lokalnetze (wie etwa WiFi) oder großflächige Netze (wie etwa WiMax) oder eine andere drahtlose Kommunikation oder eine Kombination beinhalten. Eine drahtlose Kommunikation bezieht sich auf den Transfer von Daten durch die Verwendung von modulierter elektromagnetischer Strahlung durch ein nicht festes Medium. Eine verdrahtete Kommunikation findet durch ein festes Kommunikationsmedium statt.
  • Peripherieverbindungen 1080 beinhalten Hardwareschnittstellen und -verbinder sowie Softwarekomponenten (z. B. Treiber, Protokollstapel) zum Bilden von Peripherieverbindungen. Es versteht sich, dass die Einrichtung 1000 sowohl eine Peripherieeinrichtung („zu“ 1082) zu anderen Datenverarbeitungseinrichtungen sein könnte sowie Peripherieeinrichtungen („von“ 1084) mit dieser verbunden sein könnten. Die Einrichtung 1000 weist gewöhnlich einen „Andock“-Verbinder zum Verbinden mit anderen Datenverarbeitungseinrichtungen für Zwecke wie etwa Verwaltung (z. B. Herunterladen, Heraufladen, Ändern, Synchronisieren) von Inhalt auf der Einrichtung 1000 auf. Zusätzlich dazu kann ein Andockverbinder der Einrichtung 1000 ermöglichen, sich mit gewissen Peripheriegeräten zu verbinden, die der Einrichtung 1000 ermöglichen, eine Inhaltsausgabe zum Beispiel zu audiovisuellen oder anderen Systemen zu steuern.
  • Zusätzlich zu einem proprietären Andockverbinder oder einer anderen proprietären Verbindungshardware kann die Einrichtung 1000 Peripherieverbindungen 1080 über allgemeine oder standardbasierte Verbinder bilden. Allgemeine Arten können einen Universal-Serial-Bus(USB)-Verbinder (der eine beliebige einer Anzahl unterschiedlicher Hardwareschnittstellen beinhalten kann), DisplayPort einschließlich MiniDisplayPort (MDP), High Definition Multimedia Interface (HDMI), Firewire oder eine andere Art beinhaltet.
  • Die Einrichtung 1000 beinhaltet auch ein Halbleiterlaufwerk (SSD) 1011, das eine nicht flüchtige Speicherung für die Einrichtung 1000 bereitstellt. Das SSD 1011 kann dasselbe sein wie das SSD 102 von 1 oder diesem ähneln. Bei einem derartigen Beispiel führt das SSD 1011 verbesserte Hintergrundauffrischungstechniken unter Verwendung eines Zeitstempels vom Host durch, wie hierin beschrieben.
  • Es folgen Beispiele für Verfahren, Vorrichtungen und Systeme zum Implementieren von Hintergrundauffrischungstechniken. Bei einem Beispiel beinhaltet ein Verfahren Empfangen eines Zeitstempels von einem Host, Speichern des Zeitstempels in einer Speicherungseinrichtung, Bestimmen einer Haltezeit für Daten, die in einem oder mehreren Blöcken der Speicherungseinrichtung gespeichert sind, basierend auf dem Zeitstempel bezüglich eines zweiten Zeitstempels, der angibt, wann die Daten zu dem einen oder den mehreren Blöcken geschrieben wurden, und als Reaktion auf das Bestimmen, dass die Haltezeit eine Schwelle überschreitet, Verschieben der Daten zu einem oder mehreren anderen Blöcken der Speicherungseinrichtung. Bei einem Beispiel findet das Empfangen des Zeitstempels vom Host als Reaktion auf das Einschalten der Speicherungseinrichtung oder auf den Austritt der Speicherungseinrichtung aus einem Niederleistungszustand statt. Bei einem Beispiel findet das Empfangen des Zeitstempels vom Host ferner als Reaktion auf einen ersten Schreibbefehl nach dem Einschalten der Speicherungseinrichtung oder nach dem Austritt aus dem Niederleistungszustand statt. Bei einem Beispiel beinhaltet das Verfahren ferner, für jeden mehrerer Superblöcke, Speichern eines Zeitstempels, der angibt, wann Daten zu einem gegebenen Superblock geschrieben wurden, und der Haltezeit für die Daten, die zu dem gegebenen Superblock geschrieben wurden, als Reaktion auf das Einschalten der Speicherungseinrichtung oder den Austritt der Speicherungseinrichtung aus einem Niederleistungszustand, Abtasten durch Datenhaltezeiten für die mehreren Superblöcke und als Reaktion auf das Bestimmen, dass die Haltezeit eines oder mehrerer der mehreren Superblöcke eine Schwelle überschreitet, Verschieben der Daten von dem einen oder den mehreren der mehreren Superblöcke zu einem oder mehreren anderen Superblöcken.
  • Bei einem Beispiel beinhaltet das Verfahren, als Reaktion auf das Eintreten in einen Niederleistungszustand oder das Herunterfahren der Speicherungseinrichtung, Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in einem nicht flüchtigen Speicher und als Reaktion auf das Austreten aus dem Niederleistungszustand oder das Einschalten der Speicherungseinrichtung, Laden des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke aus dem nicht flüchtigen Speicher. Bei einem Beispiel beinhaltet das Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke ein Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in einer oder mehreren Einzelpegelzellen(SLC)-Superblöcken der Speicherungseinrichtung. Bei einem Beispiel beinhaltet das Verschieben der Daten ein Platzieren des einen oder der mehreren Blöcke in eine Warteschlange, um anzugeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat, und Verzahnen von Zugriffen vom Host mit Schreiboperationen von der Warteschlange. Bei einem Beispiel beinhaltet das Platzieren des einen oder der mehreren Blöcke in die Warteschlange ein Setzen eines Flags zum Identifizieren des einen oder der mehreren Blöcke und zum Angeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat. Bei einem Beispiel beinhaltet das Verfahren Anpassen eines Verhältnisses zum Verzahnen der Zugriffe vom Host mit den Schreiboperationen von der Warteschlange, wobei das Verhältnis zum Verzahnen auf einem oder mehreren der Folgenden basiert: Haltezeiten von Blöcken in der Warteschlange, einer Anzahl von Befehlen vom Host, einer Anzahl von aufzufrischenden Blöcken und verfügbarem Platz zum Durchführen einer Auffrischung. Bei einem Beispiel beinhaltet das Empfangen des Zeitstempels ein Empfangen des Zeitstempels über einen anbietereindeutigen Befehl vom Host.
  • Bei einem Beispiel beinhaltet eine Halbleiterspeicherungseinrichtung (SSD) einer Halbleiterspeicherung zum Speichern von Daten und Logik zum Empfangen eines Zeitstempels von einem Host, zum Speichern des Zeitstempels in der Halbleiterspeicherung, zum Bestimmen einer Haltezeit für Daten, die in einem oder mehreren Blöcken der Halbleiterspeicherung gespeichert sind, basierend auf dem Zeitstempel bezüglich eines zweiten Zeitstempels, der angibt, wann die Daten zu dem einen oder den mehreren Blöcken geschrieben wurden, und als Reaktion auf eine Bestimmung, dass die Haltezeit eine Schwelle überschreitet, zum Verschieben der Daten zu einem oder mehreren anderen Blöcken in der Speicherungseinrichtung. Bei einem Beispiel findet der Empfang des Zeitstempels vom Host als Reaktion auf das Einschalten der SSD oder darauf, dass die SSD aus einem Niederleistungszustand austritt, statt. Bei einem Beispiel findet der Empfang des Zeitstempels vom Host ferner als Reaktion auf einen ersten Schreibbefehl nach dem Einschalten der SSD oder nach dem Austritt aus der SSD statt. Bei einem Beispiel besteht die Logik ferner, für jeden mehrerer Superblöcke, zum Speichern eines Zeitstempels, der angibt, wann Daten zu einem gegebenen Superblock geschrieben wurden, und der Haltezeit für die Daten, die zu dem gegebenen Superblock geschrieben wurden.
  • Bei einem Beispiel besteht die Logik ferner, als Reaktion auf das Einschalten der Speicherungseinrichtung oder darauf, dass die Speicherungseinrichtung aus einem Niederleistungszustand austritt, Abtasten von Datenhaltezeiten der mehreren Superblöcke und, als Reaktion auf das Bestimmen, dass die Haltezeit eines oder mehrerer der mehreren Superblöcke eine Schwelle überschreitet, zum Verschieben der Daten von dem einen oder den mehreren der mehreren Superblöcke zu einem oder mehreren anderen Superblöcken. Bei einem Beispiel beinhaltet die SSD ferner einen flüchtigen Speicher, wobei als Reaktion auf das Eintreten in einen Niederleistungszustand oder das Herunterfahren der SSD, die Logik besteht zum Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in der nicht flüchtigen Speicherung, und wobei als Reaktion auf das Austreten aus dem Niederleistungszustand oder auf das Einschalten der SSD die Logik besteht zum Laden des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke aus der nicht flüchtigen Speicherung zu dem flüchtigen Speicher. Bei einem Beispiel besteht die Logik als Reaktion auf das Eintreten in den Niederleistungszustand oder das Herunterfahren der SSD zum Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in einem oder mehreren Einzelpegelzellen(SLC)-Superblöcken der Speicherungseinrichtung. Bei einem Beispiel besteht die Logik zum Verschieben dieser Daten zum Platzieren des einen oder der mehreren Blöcke in eine Warteschlange, um anzugeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat, und zum Verzahnen von Zugriffen vom Host mit Schreiboperationen von der Warteschlange. Bei einem Beispiel besteht die Logik zum Platzieren des einen oder der mehreren Blöcke in die Warteschlange zum: Setzen eines Flags zum Identifizieren des einen oder der mehreren Blöcke und zum Angeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat. Bei einem Beispiel besteht die Logik zum: Anpassen eines Verhältnisses zum Verzahnen der Zugriffe vom Host mit den Schreiboperationen von der Warteschlange, wobei das Verhältnis zum Verzahnen auf einem oder mehreren der Folgenden basiert: Haltezeiten von Blöcken in der Warteschlange, einer Anzahl von Befehlen vom Host, einer Anzahl von aufzufrischenden Blöcken und verfügbarem Platz zum Durchführen einer Auffrischung. Bei einem Beispiel besteht die Logik zum Empfangen des Zeitstempels über einen anbietereindeutigen Befehl vom Host. Bei einem Beispiel umfasst die Logik Firmware für die SSD.
  • Bei einem Beispiel beinhaltet ein System einen Prozessor und eine nicht flüchtige Speicherungseinrichtung, die mit dem Prozessor gekoppelt ist, wobei die nicht flüchtige Speicherungseinrichtung hierin beschriebene Merkmale beinhaltet. Bei einem Beispiel beinhaltet eine Halbleiterspeicherungseinrichtung (SSD) eine nicht flüchtige Speicherung zum Speichern von Daten und Mittel zum: Empfangen eines Zeitstempels von einem Host, Speichern des Zeitstempels in der nicht flüchtigen Speicherung, Bestimmen einer Haltezeit für Daten, die in einem oder mehreren Blöcken der nicht flüchtigen Speicherung gespeichert sind, basierend auf dem Zeitstempel bezüglich eines zweiten Zeitstempels, der angibt, wann die Daten zu dem einen oder den mehreren Blöcken geschrieben wurden, und als Reaktion auf eine Bestimmung, dass die Haltezeit eine Schwelle überschreitet, Verschieben der Daten zu einem oder mehreren anderen Blöcken der nicht flüchtigen Speicherung.
  • Bei einem Beispiel findet der Empfang des Zeitstempels vom Host als Reaktion auf das Einschalten der SSD oder darauf, dass die SSD aus einem Niederleistungszustand austritt, statt. Bei einem Beispiel findet der Empfang des Zeitstempels vom Host ferner als Reaktion auf einen ersten Eingabe/Ausgabe(E/A)-Befehl nach dem Einschalten der SSD oder nach dem Austritt aus dem Niederleistungszustand statt. Bei einem Beispiel beinhaltet die SSD Mittel zum: für jeden mehrerer Superblöcke, Speichern eines Zeitstempels, der angibt, wann Daten zu einem gegebenen Superblock geschrieben wurden, und der Haltezeit für die Daten, die zu dem gegebenen Superblock geschrieben wurden. Bei einem Beispiel beinhaltet die SSD Mittel zum, als Reaktion auf das Einschalten der SSD oder darauf, dass die SSD-Einrichtung aus einem Niederleistungszustand austritt, Abtasten durch Datenhaltezeiten für die mehreren Superblöcke und als Reaktion auf das Bestimmen, dass die Haltezeit eines oder mehrerer der mehreren Superblöcke eine Schwelle überschreitet, Verschieben der Daten von dem einen oder den mehreren der mehreren Superblöcke zu einem oder mehreren anderen Superblöcken. Bei einem Beispiel beinhaltet die SSD ferner einen flüchtigen Speicher und Mittel zum: als Reaktion auf das Eintreten in einen Niederleistungszustand oder das Herunterfahren der SSD, Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in der nicht flüchtigen Speicherung und als Reaktion auf das Austreten aus dem Niederleistungszustand oder das Einschalten der Speicherungseinrichtung, Laden des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke aus der nicht flüchtigen Speicherung zu dem flüchtigen Speicher. Bei einem Beispiel beinhaltet die SSD ferner Mittel zum, als Reaktion auf das Eintreten in einen Niederleistungszustand oder das Herunterfahren der SSD, Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in einem oder mehreren Einzelpegelzellen(SLC)-Superblöcken der SSD. Bei einem Beispiel sollen die Mittel zum Verschieben dieser Daten: den einen oder die mehreren Blöcke in eine Warteschlange platzieren, um anzugeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat, und Zugriffe vom Host mit Schreiboperationen von der Warteschlange verzahnen. Bei einem Beispiel sollen die Mittel zum Platzieren des einen oder der mehreren Blöcken in die Warteschlange: ein Flag zum Identifizieren des einen oder der mehreren Blöcke und zum Angeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat, setzen. Bei einem Beispiel beinhaltet die SSD Mittel zum Anpassen eines Verhältnisses zum Verzahnen der Zugriffe vom Host mit den Schreiboperationen von der Warteschlange, wobei das Verhältnis zum Verzahnen auf einem oder mehreren der Folgenden basiert: Haltezeiten von Blöcken in der Warteschlange, einer Anzahl von Befehlen vom Host, einer Anzahl von aufzufrischenden Blöcken und verfügbarem Platz zum Durchführen einer Auffrischung. Bei einem Beispiel beinhaltet die SSD Mittel zum Empfangen des Zeitstempels über einen anbietereindeutigen Befehl vom Host. Bei einem Beispiel beinhaltet ein Herstellungsartikel ein computerlesbares Speicherungsmedium mit darauf gespeichertem Inhalt, der bei Zugriff die Durchführung von Operationen zum Ausführen eines Verfahrens zum Durchführen einer Hintergrundauffrischung, wie hierin beschrieben, veranlasst.
  • Flussdiagramme, wie hierin veranschaulicht, liefern Beispiele für Sequenzen verschiedener Prozesshandlungen. Die Flussdiagramme können Operationen, die durch eine Software- oder Firmwareroutine ausgeführt werden sollen, sowie physische Operationen angeben. Bei einem Beispiel kann ein Flussdiagramm den Zustand einer endlichen Zustandsmaschine (FSM) veranschaulichen, die in Hardware, Software oder einer Kombination implementiert werden kann. Obwohl in einer speziellen Sequenz oder Reihenfolge dargestellt, kann die Reihenfolge der Handlungen, sofern nicht anderweitig spezifiziert, modifiziert werden. Somit sollten die veranschaulichten Ausführungsformen nur als ein Beispiel verstanden werden und der Prozess kann in einer anderen Reihenfolge durchgeführt werden und manche Handlungen können parallel durchgeführt werden. Zusätzlich dazu können eine oder mehrere Handlungen bei verschiedenen Beispielen weggelassen werden; somit sind nicht alle Handlungen in jeder Ausführungsform erforderlich. Andere Prozessflüsse sind möglich.
  • Zu dem Umfang, mit dem verschiedene Operationen oder Funktionen hierin beschrieben sind, können sie als Softwarecode, Anweisungen, Konfiguration, Daten oder eine Kombination beschrieben oder definiert werden. Der Inhalt kann direkt ausführbar („Objekt-“ oder „ausführbare“ Form), Quellcode oder Differenzcode („Delta“- oder „Patch“-Code) sein. Der Softwareinhalt der hierin beschriebenen Ausführungsformen kann über einen Herstellungsartikel, auf dem der Inhalt gespeichert ist, oder über ein Verfahren zum Betreiben einer Kommunikationsschnittstelle zum Senden von Daten über die Kommunikationsschnittstelle bereitgestellt werden. Ein maschinenlesbares Speicherungsmedium kann veranlassen, dass eine Maschine die beschriebenen Funktionen oder Operationen durchführt und beinhaltet einen beliebigen Mechanismus, der Informationen in einer Form speichert, die durch eine Maschine (z. B. eine Datenverarbeitungseinrichtung, ein elektronisches System usw.) zugänglich ist, wie etwa beschreibbare/nicht beschreibbare Medien (z. B. Nurlesespeicher (ROM), Direktzugriffsspeicher (RAM), magnetische Plattenspeicherungsmedien, optische Speicherungsmedien, Flash-Speichereinrichtungen usw.). Eine Kommunikationsschnittstelle beinhaltet einen beliebigen Mechanismus, der über eine Schnittstelle mit einem beliebigen eines fest verdrahteten, drahtlosen, optischen usw. Mediums verbunden ist, um mit einer anderen Einrichtung, wie etwa einer Speicherbusschnittstelle, einer Prozessorbusschnittstelle, einer Internetverbindung, einer Plattensteuerung usw., zu kommunizieren. Die Kommunikationsschnittstelle kann durch das Bereitstellen von Konfigurationsparametern oder das Senden von Signalen oder beides konfiguriert werden, um die Kommunikationsschnittstelle zum Bereitstellen eines Datensignals, das den Softwareinhalt beschreibt, vorzubereiten. Auf die Kommunikationsschnittstelle kann über einen oder mehrere Befehle oder ein oder mehrere Signale, die zu der Kommunikationsschnittstelle gesendet werden, zugegriffen werden.
  • Verschiedene hierin beschriebene Komponenten können ein Mittel zum Durchführen der beschriebenen Operationen oder Funktionen sein. Jede hierin beschriebene Komponente beinhaltet Software, Hardware oder eine Kombination von diesen. Die Komponenten können als Softwaremodule, Hardwaremodule, Spezialhardware (z. B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASICs), Digitalsignalprozessoren (DSPs) usw.), eingebettete Steuerungen, ein fest verdrahteter Schaltkreis usw. implementiert werden.
  • Neben dem hierin Beschriebenen können verschiedene Modifikationen an den offenbarten Ausführungsformen und Implementierungen der Erfindung vorgenommen werden, ohne von deren Schutzumfang abzuweichen. Daher sollten die Veranschaulichungen und Beispiele hierin in einem veranschaulichenden und nicht beschränkenden Sinn verstanden werden. Der Schutzumfang der Erfindung sollte alleinig unter Bezugnahme auf die folgenden Ansprüche bemessen werden.

Claims (24)

  1. Verfahren, umfassend: Empfangen eines Zeitstempels von einem Host; Speichern des Zeitstempels in einer Speicherungseinrichtung; Bestimmen einer Haltezeit für Daten, die in einem oder mehreren Blöcken der Speicherungseinrichtung gespeichert sind, basierend auf dem Zeitstempel bezüglich eines zweiten Zeitstempels, der angibt, wann die Daten zu dem einen oder den mehreren Blöcken geschrieben wurden; und als Reaktion auf das Bestimmen, dass die Haltezeit eine Schwelle überschreitet, Verschieben der Daten zu einem oder mehreren anderen Blöcken der Speicherungseinrichtung.
  2. Verfahren nach Anspruch 1, wobei das Empfangen des Zeitstempels vom Host als Reaktion auf das Einschalten der Speicherungseinrichtung oder darauf, dass die Speicherungseinrichtung aus einem Niederleistungszustand austritt, stattfindet.
  3. Verfahren nach Anspruch 2, wobei das Empfangen des Zeitstempels vom Host ferner als Reaktion auf einen ersten Eingabe/Ausgabe(E/A)-Befehl nach dem Einschalten der Speicherungseinrichtung oder nach dem Austritt aus dem Niederleistungszustand stattfindet.
  4. Verfahren nach Anspruch 1, ferner umfassend: für jeden mehrerer Superblöcke, Speichern eines Zeitstempels, der angibt, wann Daten zu einem gegebenen Superblock geschrieben wurden, und der Haltezeit für die Daten, die zu dem gegebenen Superblock geschrieben wurden.
  5. Verfahren nach Anspruch 4, ferner umfassend: als Reaktion auf das Einschalten der Speicherungseinrichtung oder darauf, dass die Speicherungseinrichtung aus einem Niederleistungszustand austritt, Abtasten von Datenhaltezeiten für die mehreren Superblöcke; und als Reaktion auf das Bestimmen, dass die Haltezeit eines oder mehrerer der mehreren Superblöcke eine Schwelle überschreitet, Verschieben der Daten von dem einen oder den mehreren der mehreren Superblöcke zu einem oder mehreren anderen Superblöcken.
  6. Verfahren nach Anspruch 4, ferner umfassend: als Reaktion auf das Eintreten in einen Niederleistungszustand oder das Herunterfahren der Speicherungseinrichtung, Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in einer nicht flüchtigen Speicherung der Speicherungseinrichtung; und als Reaktion auf das Austreten aus dem Zustand mit niedrigerer Leistung oder das Einschalten der Speicherungseinrichtung, Laden des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke aus der nicht flüchtigen Speicherung zu einem flüchtigen Speicher der Speicherungseinrichtung.
  7. Verfahren nach Anspruch 6, wobei das Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in der nicht flüchtigen Speicherung Folgendes umfasst: Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in einem oder mehreren Einzelpegelzellen(SLC)-Superblöcken der Speicherungseinrichtung.
  8. Verfahren nach Anspruch 1, wobei das Verschieben der Daten Folgendes umfasst: Platzieren des einen oder der mehreren Blöcke in eine Warteschlange, um anzugeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschreitet; und Verzahnen von Zugriffen vom Host mit Schreiboperationen von der Warteschlange.
  9. Verfahren nach Anspruch 8, wobei das Platzieren des einen oder der mehreren Blöcke in die Warteschlange ein Setzen eines Flags zum Identifizieren des einen oder der mehreren Blöcke und zum Angeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat, umfasst.
  10. Verfahren nach Anspruch 9, ferner umfassend: Anpassen eines Verhältnisses zum Verzahnen der Zugriffe vom Host mit den Schreiboperationen von der Warteschlange; wobei das Verhältnis zum Verzahnen auf einem oder mehreren der Folgenden basiert: Haltezeiten von Blöcken in der Warteschlange, einer Anzahl von Befehlen vom Host, einer Anzahl von aufzufrischenden Blöcken und verfügbarem Platz zum Durchführen einer Auffrischung.
  11. Verfahren nach Anspruch 1, wobei das Empfangen des Zeitstempels Folgendes umfasst: Empfangen des Zeitstempels über einen anbietereindeutigen Befehl vom Host.
  12. Halbleiterspeicherungseinrichtung (SSD), umfassend: eine nicht flüchtige Speicherung zum Speichern von Daten; und Logik zum: Empfangen eines Zeitstempels von einem Host; Speichern des Zeitstempels in der nicht flüchtigen Speicherung; Bestimmen einer Haltezeit für Daten, die in einem oder mehreren Blöcken der nicht flüchtigen Speicherung gespeichert sind, basierend auf dem Zeitstempel bezüglich eines zweiten Zeitstempels, der angibt, wann die Daten zu dem einen oder den mehreren Blöcken geschrieben wurden; und als Reaktion auf eine Bestimmung, dass die Haltezeit eine Schwelle überschreitet, Verschieben der Daten zu einem oder mehreren anderen Blöcken der nicht flüchtigen Speicherung.
  13. SSD nach Anspruch 12, wobei der Empfang des Zeitstempels vom Host als Reaktion auf das Einschalten der SSD oder darauf, dass die SSD aus einem Niederleistungszustand austritt, stattfindet.
  14. SSD nach Anspruch 12, wobei der Empfang des Zeitstempels vom Host ferner als Reaktion auf einen ersten Eingabe/Ausgabe(E/A)-Befehl nach dem Einschalten der SSD oder nach dem Austritt aus einem Niederleistungszustand durch die SSD stattfindet.
  15. SSD nach Anspruch 12, wobei die Logik ferner besteht zum: für jeden mehrerer Superblöcke, Speichern eines Zeitstempels, der angibt, wann Daten zu einem gegebenen Superblock geschrieben wurden, und der Haltezeit für die Daten, die zu dem gegebenen Superblock geschrieben wurden.
  16. SSD nach Anspruch 15, wobei die Logik ferner besteht zum: als Reaktion auf das Einschalten der SSD oder darauf, dass die SSD aus einem Niederleistungszustand austritt, Abtasten von Datenhaltezeiten für die mehreren Superblöcke; und als Reaktion auf das Bestimmen, dass die Haltezeit eines oder mehrerer der mehreren Superblöcke eine Schwelle überschreitet, Verschieben der Daten von dem einen oder den mehreren der mehreren Superblöcke zu einem oder mehreren anderen Superblöcken.
  17. SSD nach Anspruch 15, ferner umfassend: einen flüchtigen Speicher; wobei als Reaktion auf das Eintreten in einen Niederleistungszustand oder das Herunterfahren der SSD, die Logik besteht zum Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke im nicht flüchtigen Speicher; und wobei, als Reaktion auf das Austreten aus dem Zustand mit niedrigerer Leistung oder das Einschalten der SSD, die Logik besteht zum Laden des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke aus der nicht flüchtigen Speicherung zu dem flüchtigen Speicher.
  18. SSD nach Anspruch 17, wobei: als Reaktion auf das Eintreten in den Niederleistungszustand oder das Herunterfahren der SSD, die Logik besteht zum Speichern des Zeitstempels und der Haltezeit für jeden der mehreren Superblöcke in einem oder mehreren Einzelpegelzellen(SLC)-Superblöcken der Speicherungseinrichtung.
  19. SSD nach Anspruch 15, wobei die Logik zum Verschieben dieser Daten besteht zum: Platzieren des einen oder der mehreren Blöcke in eine Warteschlange, um anzugeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat; und Verzahnen von Zugriffen vom Host mit Schreiboperationen von der Warteschlange.
  20. SSD nach Anspruch 19, wobei die Logik zum Platzieren des einen oder der mehreren Blöcke in die Warteschlange besteht zum: Setzen eines Flags zum Identifizieren des einen oder der mehreren Blöcke und zum Angeben, dass die Haltezeit für Daten, die in dem einen oder den mehreren Blöcken gespeichert sind, die Schwelle überschritten hat.
  21. SSD nach Anspruch 19, wobei die Logik besteht zum: Anpassen eines Verhältnisses zum Verzahnen der Zugriffe vom Host mit den Schreiboperationen von der Warteschlange; wobei das Verhältnis zum Verzahnen auf einem oder mehreren der Folgenden basiert: Haltezeiten von Blöcken in der Warteschlange, einer Anzahl von Befehlen vom Host, einer Anzahl von aufzufrischenden Blöcken und verfügbarem Platz zum Durchführen einer Auffrischung.
  22. SSD nach Anspruch 12, wobei die Logik besteht zum Empfangen des Zeitstempels über einen anbietereindeutigen Befehl vom Host.
  23. SSD nach Anspruch 12, wobei die Logik Firmware für die SSD umfasst.
  24. Herstellungsartikel, der ein computerlesbares Speicherungsmedium mit darauf gespeichertem Inhalt umfasst, der bei Zugriff die Durchführung von Operationen zum Ausführen eines Verfahrens nach einem der Ansprüche 1-11 veranlasst.
DE102018128601.5A 2017-12-14 2018-11-14 Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen Pending DE102018128601A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/842,799 US11099760B2 (en) 2017-12-14 2017-12-14 Background data refresh using a system timestamp in storage devices
US15/842,799 2017-12-14

Publications (1)

Publication Number Publication Date
DE102018128601A1 true DE102018128601A1 (de) 2019-06-19

Family

ID=65137937

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018128601.5A Pending DE102018128601A1 (de) 2017-12-14 2018-11-14 Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen

Country Status (5)

Country Link
US (1) US11099760B2 (de)
JP (1) JP7235226B2 (de)
KR (1) KR20190071582A (de)
CN (1) CN110045915A (de)
DE (1) DE102018128601A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10855754B1 (en) 2018-07-16 2020-12-01 Amazon Technologies, Inc. Isolated read channel categories at streaming data service
US10768830B1 (en) * 2018-07-16 2020-09-08 Amazon Technologies, Inc. Streaming data service with isolated read channels
US10798140B1 (en) 2018-07-16 2020-10-06 Amazon Technologies, Inc. Stream data record reads using push-mode persistent connections
US11599273B2 (en) * 2019-01-29 2023-03-07 Micron Technology, Inc. Providing time-stamps for a memory device and method for managing the same
US11899576B2 (en) * 2019-06-11 2024-02-13 Micron Technology, Inc. Dynamically modifying garbage collection rates for a memory subsystem in a closed-loop system
JP7321851B2 (ja) * 2019-09-09 2023-08-07 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
US11231863B2 (en) * 2019-12-19 2022-01-25 Micron Technology, Inc. Block family-based error avoidance for memory devices
TWI712045B (zh) * 2020-01-16 2020-12-01 慧榮科技股份有限公司 資料儲存裝置修復方法
JP2021121901A (ja) * 2020-01-31 2021-08-26 キオクシア株式会社 メモリシステムおよび制御方法
US11562792B2 (en) 2020-03-18 2023-01-24 Kioxia Corporation Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory
JP2021149549A (ja) 2020-03-19 2021-09-27 キオクシア株式会社 ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法
US11556257B2 (en) * 2020-08-14 2023-01-17 Micron Technology, Inc. Selectable wear life indicator based on data retention
US11422825B2 (en) 2020-12-30 2022-08-23 Kioxia Corporation Determination of power-off duration of NVMe SSD
US11698751B2 (en) * 2021-06-07 2023-07-11 Western Digital Technologies, Inc. Data storage device and method for low-latency power state transitions by having power islanding in a host memory buffer
US11543993B1 (en) * 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
CN113672450B (zh) * 2021-07-19 2022-11-22 荣耀终端有限公司 固态硬盘的处理方法和装置
CN114168077A (zh) * 2021-12-07 2022-03-11 深圳忆联信息系统有限公司 固态硬盘的时间戳管理方法、装置、计算机设备及存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493772B1 (en) * 1999-08-23 2002-12-10 International Business Machines Corporation System and method with guaranteed maximum command response time
US6513074B1 (en) * 2000-01-06 2003-01-28 International Business Machines Corporation SCSI bus intelligent listening device and method
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
WO2007019198A2 (en) * 2005-08-03 2007-02-15 Sandisk Corporation Non-volatile memory with scheduled reclaim operations
US9727473B2 (en) * 2008-09-30 2017-08-08 Intel Corporation Methods to communicate a timestamp to a storage system
US8411519B2 (en) * 2010-06-04 2013-04-02 Apple Inc. Selective retirement of blocks
US8650353B2 (en) * 2011-07-01 2014-02-11 Intel Corporation Apparatus, system, and method for refreshing non-volatile memory
JP2013047913A (ja) * 2011-08-29 2013-03-07 Toshiba Corp 情報処理装置、情報処理装置の制御方法、制御ツール、及びホスト装置
WO2013027642A1 (en) * 2011-08-19 2013-02-28 Kabushiki Kaisha Toshiba Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device
US8966343B2 (en) * 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8898548B1 (en) * 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
JP2015001909A (ja) * 2013-06-17 2015-01-05 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
US9165668B1 (en) * 2013-07-29 2015-10-20 Western Digital Technologies, Inc. Data retention monitoring using temperature history in solid state drives
CN106170773A (zh) * 2014-01-09 2016-11-30 桑迪士克科技有限责任公司 用于裸芯上缓冲式非易失性存储器的选择性回拷
US9811457B2 (en) * 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system
US20160093397A1 (en) * 2014-09-30 2016-03-31 Emc Corporation Method and system for improving flash storage utilization using read-threshold tables
US9547440B2 (en) * 2014-11-07 2017-01-17 International Business Machines Corporation Managing a set of blocks in a storage system
US9852799B2 (en) * 2014-11-19 2017-12-26 Sandisk Technologies Llc Configuration parameter management for non-volatile data storage
US9916237B2 (en) * 2014-12-12 2018-03-13 Sandisk Technologies Llc Model based configuration parameter management
US10048898B2 (en) * 2015-06-15 2018-08-14 Sandisk Technologies Llc Data retention in a memory block based on local heating
US20170062023A1 (en) * 2015-08-26 2017-03-02 Intel Corporation Systems and methods to rejuvenate nonvolatile memory using timestamps
KR102529696B1 (ko) * 2016-07-14 2023-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10255179B2 (en) * 2016-12-30 2019-04-09 Western Digital Technologies, Inc. Garbage collection read throttling
US10824376B2 (en) * 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory

Also Published As

Publication number Publication date
US11099760B2 (en) 2021-08-24
JP2019106174A (ja) 2019-06-27
KR20190071582A (ko) 2019-06-24
JP7235226B2 (ja) 2023-03-08
CN110045915A (zh) 2019-07-23
US20190034114A1 (en) 2019-01-31

Similar Documents

Publication Publication Date Title
DE102018128601A1 (de) Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen
DE102020104367A1 (de) Refresh-befehlssteuerung für eine hostunterstützung einer rowhammer-mitigation
DE112011106032B4 (de) Energieeinsparung durch Speicherkanal-Abschaltung
DE112017001020T5 (de) Unterstützung einer vielzahl von speichertypen in einem speichersteckplatz
DE112017003334T5 (de) Lastreduzierte nichtflüchtige speicherschnittstelle
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE112011106021T5 (de) Zugreifen auf Daten, die in einem Befehls-/Adressregister-Gerät gespeichert sind
DE102015014851A1 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE112016004243T5 (de) Hybrides Auffrischen mit verborgenen Auffrischungen und externen Auffrischungen
DE102020132764A1 (de) Solid-state-drive mit externer softwareausführung zum bewirken von internen operationen des solid-state-drive
KR101862112B1 (ko) 비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화
DE112017006599T5 (de) Programmierbare datenstruktur zum wiederholten schreiben in einen speicher
DE102020133273A1 (de) Leistungsüberwachung und Ressorcenverwaltung
DE112012006161T5 (de) Integrierter Selbsttest für Stapelspeicherarchitektur
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE102015223187A1 (de) Ein-Chip-Systeme zum Steuern von Leistung mittels Auslastungen, Verfahren zum Betreiben dieser, und Computervorrichtungen, die diese umfassen
DE112013006093T5 (de) System und Verfahren zum Vorsehen von Energieeinsparungen in einer Prozessorumgebung
US9965017B2 (en) System and method for conserving energy in non-volatile dual inline memory modules
DE112016003998T5 (de) Technologien für das management eines reservierten hochleistungsspeicherbereichs eines solid-state-laufwerks
DE102019120573A1 (de) Technologien zur rechnerischen speicherung über ablade-kernel-erweiterungen
US20180293187A1 (en) Systems and devices having a scalable basic input/output system (bios) footprint and associated methods
DE102021117226A1 (de) Konfigurierbarer reduzierter speicherstart