DE102018105651A1 - Änderung von Speicherparametern - Google Patents

Änderung von Speicherparametern Download PDF

Info

Publication number
DE102018105651A1
DE102018105651A1 DE102018105651.6A DE102018105651A DE102018105651A1 DE 102018105651 A1 DE102018105651 A1 DE 102018105651A1 DE 102018105651 A DE102018105651 A DE 102018105651A DE 102018105651 A1 DE102018105651 A1 DE 102018105651A1
Authority
DE
Germany
Prior art keywords
data
data storage
parameter
setup
storage element
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.)
Ceased
Application number
DE102018105651.6A
Other languages
English (en)
Inventor
Aaron Lee
Yi-Chieh Chen
Anne Koh
Gulzar Kathawala
Mrinal Kochar
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.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
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 SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE102018105651A1 publication Critical patent/DE102018105651A1/de
Ceased 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or 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/061Improving I/O performance
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/10Programming or data input circuits
    • 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C2029/1804Manipulation of word size
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer Hardware Design (AREA)

Abstract

Einrichtungen, Systeme, Verfahren und Computerprogrammprodukte zum Ändern von Speicherparametern sind offenbart. Ein Datenspeicherelement mit integrierter Schaltung (IC-Datenspeicherelement) empfängt einen Befehl, einen Wert eines Parameters, der dem IC-Datenspeicherelement zugeordnet ist, zu ändern. Ein Parameter enthält eine Einstellung für eine oder mehrere Speicheroperationen eines IC-Datenspeicherelements. Ein IC-Datenspeicherelement empfängt einen oder mehrere Datensätze mit einem Befehl. Ein Datensatz enthält einen Bezeichner, der einem Parameter zugeordnet ist, der geändert werden soll, und einen neuen Wert für den Parameter. Jeder des einen oder der mehreren Datensätze wird mit der gleichen Datenrate wie ein Befehl empfangen. Ein IC-Datenspeicherelement schreibt für jeden des einen oder der mehreren Datensätze einen neuen Wert für einen Parameter in einen Speicherort, der dem Parameter zugeordnet ist.

Description

  • Technisches Gebiet
  • Die vorliegende Offenbarung bezieht sich in verschiedenen Ausführungsformen auf Speichervorrichtungen [engl. storage devices] und bezieht sich insbesondere auf das Ändern von Speicherparametern von Speichervorrichtungen.
  • Hintergrund
  • Ein Datenspeicherelement [engl. memory element] mit integrierter Schaltung (IC-Datenspeicherelement) kann Werte für verschiedene Parameter speichern, die Operationen zugeordnet sind, die auf dem IC-Datenspeicherelement ausgeführt werden. Das Ändern, Modifizieren oder Anpassen der Werte der Parameter kann jedoch zeitaufwändig sein und kann deshalb die Ausführung des IC-Datenspeicherelements verlangsamen.
  • Zusammenfassung
  • Es werden Einrichtungen dargestellt, um Speicherparameter zu ändern. In einer Ausführungsform enthält eine Einrichtung ein Datenspeicherelement mit integrierter Schaltung („IC“-Datenspeicherelement). Ein IC-Datenspeicherelement empfängt in speziellen Ausführungsformen einen Befehl, einen Wert eines Parameters, der dem IC-Datenspeicherelement zugeordnet ist, zu ändern. Ein Parameter kann eine Einstellung für eine oder mehrere Speicheroperationen eines IC-Datenspeicherelements enthalten. In einer weiteren Ausführungsform empfängt ein IC-Datenspeicherelement einen oder mehrere Datensätze mit einem Befehl. Ein Datensatz kann einen Bezeichner, der einem Parameter zugeordnet ist, der geändert werden soll, und einen neuen Wert für den Parameter enthalten. Jeder des einen oder der mehreren Datensätze kann mit der gleichen Datenrate wie ein Befehl empfangen werden. In einigen Ausführungsformen schreibt ein IC-Datenspeicherelement für jeden des einen oder der mehreren Datensätze einen neuen Wert für einen Parameter in einen Speicherort, der dem Parameter zugeordnet ist.
  • Eine Einrichtung enthält in einer weiteren Ausführungsform Mittel zum Lesen innerhalb eines einzigen Taktzyklus von Gruppen von Daten zum Modifizieren einer oder mehrerer Ausführungsvariablen einer nichtflüchtigen Speichervorrichtung aus einem oder mehreren Datenauffangregistern der nichtflüchtigen Speichervorrichtung. Ausführungsvariablen können einer oder mehreren Funktionen einer nichtflüchtigen Speichervorrichtung zugeordnet sein. Eine Einrichtung enthält in einer weiteren Ausführungsform Mittel zum Identifizieren von Ausführungsvariablen einer nichtflüchtigen Speichervorrichtung, die modifiziert werden sollen gemäß den Bezeichnern innerhalb der Gruppen von Daten. Eine Einrichtung enthält in einigen Ausführungsformen Mittel zum Modifizieren identifizierter Ausführungsvariabler auf andere Werte, die innerhalb Gruppen von Daten bereitgestellt sind.
  • Es sind Systeme präsentiert, um Speicherparameter zu ändern. Ein System enthält in einer Ausführungsform ein nichtflüchtiges Datenspeichermedium und eine Steuereinheit. In speziellen Ausführungsformen ist eine Steuereinheit konfiguriert, mehrere Datentupel zum Ändern von Werten von Speicheroperationseinstellungen für ein nichtflüchtiges Datenspeichermedium zu empfangen. Jedes Datentupel kann eine Adresse für eine Gruppe von Einstellungen, eine Maske zum Identifizieren, welche Einstellung der Gruppe geändert werden soll, und einen Wert für die identifizierte Einstellung enthalten. Mehrere Datentupel können ohne eine Verzögerung zwischen dem Empfangen jedes Datentupels empfangen werden. Eine Steuereinheit ist in einer weiteren Ausführungsform konfiguriert, Werte von Datentupeln auf Einstellungen für ein nichtflüchtiges Datenspeichermedium, das durch Masken der Datentupel identifiziert ist, zu programmieren.
  • Figurenliste
  • Eine spezielle Beschreibung ist nachstehend mit Bezug auf spezifische in den beigefügten Zeichnungen dargestellte Ausführungsformen enthalten. Mit dem Verständnis, dass diese Zeichnungen nur spezielle Ausführungsformen der Offenbarung abbilden und deshalb nicht so betrachtet werden sollen, dass sie ihren Schutzbereich einschränken, ist die Offenbarung mit zusätzlicher Spezifität und Einzelheiten durch den Gebrauch der begleitenden Zeichnungen beschrieben und erläutert, in denen:
    • 1 ein schematisches Blockdiagramm ist, das eine Ausführungsform eines Systems darstellt, das ein Parametermanagementmodul umfasst;
    • 2 ein schematisches Blockdiagramm ist, das eine Ausführungsform eines Datenspeicherelements darstellt;
    • 3 ein schematisches Blockdiagramm ist, das eine Ausführungsform eines Parametermanagementmoduls darstellt;
    • 4 ein schematisches Blockdiagramm ist, das eine weitere Ausführungsform eines Parametermanagementmoduls darstellt;
    • 5 ein schematischer Ablaufplan ist, der eine Ausführungsform eines Verfahrens zum Ändern von Speicherparametern darstellt;
    • 6 ein schematischer Ablaufplan ist, der eine weitere Ausführungsform eines Verfahrens zum Ändern von Speicherparametern darstellt; und
    • 7 ein schematischer Ablaufplan ist, der noch eine weitere Ausführungsform eines Verfahrens zum Ändern von Speicherparametern darstellt.
  • Ausführliche Beschreibung
  • Aspekte der vorliegenden Offenbarung können als eine Einrichtung, ein System, ein Verfahren oder ein Computerprogrammprodukt verwirklicht sein. Dementsprechend können Aspekte der vorliegenden Offenbarung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (die Firmware, residente Software, Mikrocode oder dergleichen enthält) oder einer Ausführungsform, die Software- und Hardware-Aspekte kombiniert, annehmen, die alle allgemein hier als eine „Schaltung“, ein „Modul“, eine „Einrichtung“ oder ein „System“ bezeichnet sein können. Darüber hinaus können Aspekte der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren nicht-transitorischen computerlesbaren Speichermedien, die computerlesbaren und/oder ausführbaren Programmcode speichern, verwirklicht sein kann.
  • Viele der in dieser Spezifikation beschriebenen Funktionseinheiten sind als Module gekennzeichnet worden, um ganz besonders ihre Unabhängigkeit von der Implementierung zu betonen. Beispielsweise kann ein Modul als eine Hardware-Schaltung implementiert sein, die spezifisch angepasste VLSI-Schaltungen oder Gatter-Arrays, Standard-Halbleiter wie z. B. Logik-Chips, Transistoren oder andere diskrete Komponenten umfasst. Ein Modul kann auch in programmierbaren Hardware-Vorrichtungen wie z. B. feldprogrammierbare Gatter-Arrays, programmierbarer Array-Logik, programmierbaren Logik-Vorrichtungen oder dergleichen implementiert sein.
  • Module können auch wenigstens teilweise in Software zur Ausführung durch verschiedene Typen von Prozessoren implementiert sein. Ein identifiziertes Modul aus ausführbarem Code kann beispielsweise einen oder mehrere physikalische oder logische Blöcke von Computeranweisungen enthalten, die beispielsweise als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Einheiten eines identifizierbaren Moduls nicht physikalisch am selben Ort sein, sondern können disparate Anweisungen umfassen, die an unterschiedlichen Orten gespeichert sind, die dann, wenn sie logisch vereinigt werden, das Modul umfassen und den festgelegten Zweck für das Modul erreichen.
  • Tatsächlich kann ein Modul aus ausführbarem Code eine einzige Anweisung oder viele Anweisungen enthalten und kann sogar über mehrere unterschiedliche Code-Segmente, unter unterschiedlichen Programmen, über mehrere Speichervorrichtungen und dergleichen verteilt sein. Wenn ein Modul oder Abschnitte eines Moduls in Software implementiert sind, können die Software-Abschnitte in einem oder mehreren computerlesbaren und/oder - ausführbaren Speichermedien gespeichert sein. Irgendeine Kombination aus einem oder mehreren computerlesbaren Speichermedien kann benutzt werden. Ein computerlesbares Speichermedium kann beispielsweise ein/e elektronische/s, magnetische/s, optische/s, elektromagnetische/s, Infrarot- oder Halbleiter-System, Einrichtung oder Vorrichtung oder irgendeine geeignete Kombination des Vorstehenden enthalten, ohne darauf beschränkt zu sein, würde jedoch keine sich ausbreitenden Signale enthalten. Im Kontext dieses Dokuments kann ein computerlesbares und/oder -ausführbares Speichermedium irgendein greifbares und/oder nichttransitorisches Medium sein, das ein Programm zum Gebrauch durch ein Anweisungsausführungssystem, eine Einrichtung, einen Prozessor oder eine Vorrichtung oder in Verbindung damit enthalten oder speichern kann.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Offenbarung kann in irgendeiner Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, die eine objektorientierte Programmiersprache wie z. B. Python, Java, Smalltalk, C++, C#, Objective C oder dergleichen, herkömmliche prozedurale Programmiersprachen wie z. B. die „C“-Programmiersprache, Skript-Programmiersprachen und/oder andere ähnliche Programmiersprachen enthalten. Der Programmcode kann teilweise oder vollständig auf einem oder mehreren Computern eines Anwenders und/oder auf einem entfernten Computer oder Server über ein Datennetz oder dergleichen ablaufen.
  • Eine Komponente, wie sie hier verwendet ist, umfasst eine greifbare, physikalische, nicht-transitorische Vorrichtung. Beispielsweise kann eine Komponente als eine Hardware-Logikschaltung implementiert sein, die angepasste VLSI-Schaltungen, Gatter-Arrays oder andere integrierte Schaltungen; Standard-Halbleiter wie z. B. Logik-Chips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen umfasst. Eine Komponente kann auch in programmierbaren Hardware-Vorrichtungen wie z. B. feldprogrammierbaren Gatter-Arrays, programmierbarer Array-Logik, programmierbaren Logik-Vorrichtungen oder dergleichen implementiert sein. Eine Komponente kann eine oder mehrere integrierte Silizium-Schaltungsvorrichtungen (z. B. Chips, Baustein, Baustein-Ebenen, Gehäuse) oder andere diskrete elektrische Vorrichtungen in elektrischer Kommunikation mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Leiterplatte (PCB) oder dergleichen umfassen. Jedes der hier beschriebenen Module kann in speziellen Ausführungsformen alternativ durch eine Komponente ausgeführt werden oder als eine Komponente implementiert sein.
  • Durchgehend durch diese Spezifikation bedeutet die Bezugnahme auf „eine Ausführungsform“ oder eine ähnliche Ausdrucksweise, dass ein/e spezielle/s Merkmal, Struktur oder Eigenschaft, das/die in Verbindung mit der Ausführungsform beschrieben ist, in wenigstens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit kann sich das Auftreten des Ausdrucks „in einer Ausführungsform“ oder eine ähnliche Ausdrucksweise durchgehend durch diese Spezifikation immer auf dieselbe Ausführungsform beziehen, jedoch nicht notwendigerweise, sondern auch „eine oder mehrere jedoch nicht alle Ausführungsformen“ bedeuten, sofern nicht ausdrücklich anders angegeben. Die Begriffe „enthalten“, „umfassen“, „aufweisen“ und Variationen davon bedeuten „enthalten, jedoch nicht darauf beschränkt“, sofern nicht ausdrücklich anders angegeben. Eine nummerierte Liste von Elementen impliziert nicht, dass irgendeines der oder alle Elemente gegenseitig ausschließend und/oder gegenseitig einschließend sind, sofern nicht ausdrücklich anders angegeben. Die Begriffe „ein/eine/eines“ und „der/die/das“ beziehen sich ebenfalls auf „eines oder mehrere“, sofern nicht ausdrücklich anders angegeben.
  • Aspekte der vorliegenden Offenbarung sind nachstehend mit Bezug auf schematische Ablaufdiagramme und/oder schematische Blockdiagramme von Verfahren, Einrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen dieser Offenbarung beschrieben. Es ist zu verstehen, dass jeder Block der schematischen Ablaufdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Ablaufdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert sein können. Diese Computerprogrammanweisungen können für einen Prozessor eines Computers oder eine andere programmierbare Datenverarbeitungseinrichtung bereitgestellt werden, um eine Maschine zu produzieren, so dass die Anweisungen, die über den Prozessor oder die andere programmierbare Datenverarbeitungseinrichtung ablaufen, Mittel erzeugen zum Implementieren der Funktionen und/oder Aktionen, die in dem Block oder den Blöcken der schematischen Ablaufdiagramme und/oder schematischen Blockdiagramme spezifiziert sind.
  • Es wird außerdem darauf hingewiesen, dass in einigen alternativen Implementierungen die Funktionen, die in den Blöcken genannt sind, außerhalb der in den Figuren bezeichneten Reihenfolge auftreten können. Beispielsweise können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der beteiligten Funktionalität. Andere Schritte und Verfahren können vorstellbar sein, die in Funktion, Logik oder Effekt einem oder mehreren Blöcken, oder Abschnitten davon, der dargestellten Figuren äquivalent sind. Obwohl verschiedene Pfeiltypen und Linientypen ein den Ablauf- und/oder Blockdiagrammen eingesetzt sein können, sind sie so zu verstehen, dass sie den Umfang der entsprechenden Ausführungsformen nicht einschränken. Beispielsweise kann ein Pfeil eine Warte- oder Überwachungszeitspanne einer nicht spezifizierten Dauer zwischen nummerierten Schritten der abgebildeten Ausführungsform angeben.
  • In der folgenden ausführlichen Beschreibung wird auf die begleitenden Zeichnungen Bezug genommen, die einen Teil davon bilden. Die vorstehende Zusammenfassung ist nur erläuternd und soll in keiner Weise einschränkend sein. Zusätzlich zu den erläuternden Aspekten, Ausführungsformen und Merkmalen, die vorstehend beschrieben sind, werden weitere Aspekte, Ausführungsformen und Merkmale durch Bezugnahme auf die Zeichnungen und die folgende ausführlichen Beschreibung offensichtlich. Die Beschreibung von Elementen in jeder Figur kann sich auf Elemente weitergehender Figuren beziehen. Gleiche Zahlen können sich auf gleiche Elemente in den Figuren beziehen, einschließlich alternativer Ausführungsformen gleicher Elemente.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems 100, das ein Parametermanagementmodul 150 umfasst. Das Parametermanagementmodul 150 kann ein Teil von und/oder in Kommunikation mit einer oder mehreren aus einer Steuereinheit 124 des nichtflüchtigen Datenspeichers, einer Steuereinheit 126 nichtflüchtiger Datenspeichermedien, einem Vorrichtungstreiber oder einer Speichermanagementschicht (SML) 130 oder dergleichen sein. Das Parametermanagementmodul 150 kann auf einem nichtflüchtigen Datenspeichersystem 102 einer Berechnungsvorrichtung 110 arbeiten, die einen Prozessor 111, einen flüchtigen Datenspeicher 112 und eine Kommunikationsschnittstelle 113 enthalten kann. Der Prozessor 111 kann einen oder mehrere zentrale Verarbeitungseinheiten, einen oder mehrere Allzweck-Prozessoren, einen oder mehrere anwendungsspezifische Prozessoren, einen oder mehrere virtuelle Prozessoren (z. B. kann die Berechnungsvorrichtung 110 eine virtuelle Maschine sein, die innerhalb eines Hosts arbeitet), einen oder mehrere Prozessorkerne oder dergleichen umfassen. Die Kommunikationsschnittstelle 113 kann eine oder mehrere Netzschnittstellen umfassen, die konfiguriert sind, die Berechnungsvorrichtung 110 und/oder die Steuereinheit 124 des nichtflüchtige Datenspeichers mit einem Kommunikationsnetz 115 wie z. B. einem Internetprotokoll-Netz, einem Speicherbereichsnetz oder dergleichen kommunikativ zu koppeln.
  • Die Berechnungsvorrichtung 110 kann ferner nicht-transitorische computerlesbare Speichermedien 114 umfassen. Die computerlesbaren Speichermedien 114 können ausführbare Anweisungen umfassen, die konfiguriert sind, die Berechnungsvorrichtung 110 (z. B. den Prozessor 111) zu veranlassen, Schritte eines oder mehrerer der hier offenbarten Verfahren auszuführen. Alternativ oder zusätzlich kann das Parametermanagementmodul 150 als eine oder mehrere computerlesbare Anweisungen ausgeführt sein, die in den nicht-transitorischen Speichermedien 114 gespeichert sind.
  • Das nichtflüchtige Datenspeichersystem 102 enthält in der abgebildeten Ausführungsform ein Parametermanagementmodul 150. Das Parametermanagementmodul 150 ist in einer Ausführungsform konfiguriert, einen oder mehrere Speicherparameter der nichtflüchtigen Datenspeichervorrichtung 120 zu ändern, während die nichtflüchtige Datenspeichervorrichtung 120 in der Schaltbetriebsart 120 läuft. Wie hier verwendet ist die Schaltbetriebsart eine Hochleistungs-, Hochgeschwindigkeits-Ausführungsbetriebsart der nichtflüchtigen Datenspeichervorrichtung 120, ähnlich der doppelten Datenrate (DDR), die die Geschwindigkeit und/oder die Bandbreite der nichtflüchtigen Datenspeichervorrichtung 120 erhöhen kann, ohne den Energieverbrauch zu erhöhen. In einigen Ausführungsformen kann eine nichtflüchtige Datenspeichervorrichtung 120, die in der Schaltbetriebsart läuft, als ein asynchroner DDR-NAND ausgeführt sein, der kein separates Taktsignal verwendet, wenn er Daten liest oder schreibt. Das Parametermanagementmodul 150 verbessert in einer Ausführungsform die Leistung zum Ändern der Speicherparameter der nichtflüchtigen Datenspeichervorrichtung 120 durch Empfangen oder Lesen von Daten, die den neuen Parameterwerten zugeordnet sind, während sie in der Schaltbetriebsart ist, und deshalb wird die nichtflüchtige Datenspeichervorrichtung 120 nicht in eine Betriebsart mit niedrigerer Leistung oder langsamere Betriebsart, z. B. Einzeldatenraten (SDR-) Betriebsart, umgeschaltet, um die Parameterwerte zu empfangen und/oder zu ändern.
  • In einer Ausführungsform kann das Parametermanagementmodul 150 ausführbaren Software-Code, wie z. B. einen Vorrichtungstreiber, SML 130 oder dergleichen, umfassen, der auf den computerlesbaren Speichermedien 114 zur Ausführung auf dem Prozessor 111 gespeichert ist. In einer weiteren Ausführungsform kann das Parametermanagementmodul 150 Logik-Hardware einer oder mehrerer nichtflüchtiger Datenspeichervorrichtungen 120 umfassen, wie z. B. eine Steuereinheit 126 der nichtflüchtigen Datenspeichermedien, eine Steuereinheit 124 des nichtflüchtigen Datenspeichers, eine Vorrichtungssteuereinheit, ein feldprogrammierbares Gatter-Array (FPGA) oder andere programmierbare Logik, Firmware für ein FPGA oder andere programmierbare Logik, Mikrocode zur Ausführung auf einer Mikrosteuereinheit, eine anwendungsspezifische integrierte Schaltung (ASIC) der dergleichen. In einer weiteren Ausführungsform kann das Parametermanagementmodul 150 eine Kombination aus sowohl ausführbarem Software-Code als auch Logik-Hardware enthalten.
  • In einer Ausführungsform ist das Parametermanagementmodul 150 konfiguriert, Speicheranforderungen von der SML 130 über einen Baus 125 oder dergleichen zu empfangen. Das Parametermanagementmodul 150 kann ferner konfiguriert sein, Daten zu/von der SML 130 und/oder den Speicher-Clients 116 über den Bus 125 zu übertragen. Dementsprechend kann das Parametermanagementmodul 150 in einigen Ausführungsformen ein oder mehrere Datenspeicherdirektzugriffs-Module (DMA-Module), entfernte DMA-Module, Bussteuereinheiten, Bridges, Puffer und so weiter umfassen und/oder in Kommunikation damit sein, um die Übertragung von Speicheranforderungen und zugeordneten Daten zu unterstützen. In einer weiteren Ausführungsform kann das Parametermanagementmodul 150 Speicheranforderung als einen API-Aufruf von einem Speicher-Client 116, als einen IO-CTL-Befehl oder dergleichen empfangen. Das Parametermanagementmodul 150 ist nachstehend mit Bezug auf die 3 und 4 genauer beschrieben.
  • Gemäß verschiedenen Ausführungsformen kann eine Steuereinheit 124 eines nichtflüchtigen Datenspeichers, die das Parametermanagementmodul 150 umfasst, eine oder mehrere nichtflüchtige Datenspeichervorrichtungen 120 managen. Die nichtflüchtigen Datenspeichervorrichtung(en) 120 können Aufzeichnungs-, Datenspeicher- und/oder Speichervorrichtungen umfassen, wie z. B. Festkörperspeichervorrichtung(en), die in mehrere(n) adressierbare(n) Medienspeicherorte(n) angeordnet und/oder partitioniert sind. Wie hier verwendet bezieht sich ein Medienspeicherort auf irgendeine physikalische Datenspeichereinheit (z. B. irgendeine Menge physikalischer Speichermedien auf einer nichtflüchtigen Datenspeichervorrichtung 120). Datenspeichereinheiten können, ohne darauf beschränkt zu sein, enthalten: Seiten, Datenspeicherbereiche, Löschblöcke, Sektoren, Blöcke, Sammlungen oder Gruppen physikalischer Speicherorte (z. B. logische Seiten, logische Löschblöcke, nachstehend beschrieben) oder dergleichen.
  • Die Steuereinheit 124 des nichtflüchtigen Datenspeichers kann eine SML 130 umfassen, die einen logischen Adressenraum 134 für einen oder mehrere Speicher-Clients 115 präsentieren kann. Ein Beispiel einer SML ist die „Virtual Storage Layer®“ der SanDisk Corporation aus Milpitas, Kalifornien. Alternativ kann jede nichtflüchtige Datenspeichervorrichtung 120 eine Steuereinheit 126 nichtflüchtiger Datenspeichermedien umfassen, die einen logischen Adressenraum 134 für die Speicher-Clients 116 präsentieren kann. Wie hier verwendet bezieht sich ein logischer Adressenraum 134 auf eine logische Repräsentation von Datenspeicherbetriebsmitteln. Der logische Adressenraum 134 kann mehrere (z. B. einen Bereich von) logischen Adressen umfassen. Wie hier verwendet bezieht sich eine logische Adresse auf irgendeinen Bezeichner zum Referenzieren eines Datenspeicherbetriebsmittels (z. B. Daten), der, ohne darauf beschränkt zu sein, enthält: eine logische Blockadresse (LBA), Zylinder/Kopf/Sektor-Adresse (CHS-Adresse), einen Dateinamen, einen Objektbezeichner, einen Inode, einen universell eindeutigen Bezeichner (UUID), einen global eindeutigen Bezeichner (GUID), einen Hash-Code, eine Signatur, einen Indexeintrag, einen Bereich, einen Umfang oder dergleichen.
  • Die SML 130 kann Metadaten 135 pflegen, wie z. B. einen Vorwärtsindex, um logische Adressen des logischen Adressenraums 134 auf Medienspeicherorte auf der/den nichtflüchtigen Datenspeichervorrichtung(en) 120 abzubilden. Die SML 130 kann beliebige Any-to-any-Abbildungen von logischen Adressen auf physikalische Speicherbetriebsmittel bereitstellen. Wie hier verwendet kann eine „Any-to-any“-Abbildung irgendeine logische Adresse auf irgendein physikalisches Speicherbetriebsmittel abbilden. Dementsprechend können keine vordefinierten und/oder voreingestellten Abbildungen zwischen logischen Adressen und speziellen Medienspeicherorten und/oder Medienadressen vorhanden sein. Wie hier verwendet bezieht sich eine Medienadresse auf eine Adresse eines Datenspeicherbetriebsmittels, das ein Datenspeicherbetriebsmittel von einem weiteren für eine Steuereinheit, die mehrere Datenspeicherbetriebsmittel managt, eindeutig identifiziert. Als Beispiel enthält eine Medienadresse, ohne darauf beschränkt zu sein: die Adresse eines Medienspeicherorts, eine physikalische Datenspeichereinheit, eine Sammlung physikalischer Datenspeichereinheiten (z. B. eine logische Datenspeichereinheit), einen Abschnitt einer Datenspeichereinheit (z. B. eine Adresse und einen Versatz, Bereich und/oder Umfang einer logischen Datenspeichereinheit) oder dergleichen. Dementsprechend kann die SML 130 logische Adressen auf physikalische Datenbetriebsmittel irgendeiner Größe und/oder Granularität abbilden, die dem zugrundeliegenden Datenpartitionierungsschema des/der nichtflüchtigen Datenspeichervorrichtung(en) 120 entsprechen kann oder nicht. Beispielsweise ist in einigen Ausführungsformen die Steuereinheit 124 des nichtflüchtigen Datenspeichers konfiguriert, Daten innerhalb logischer Datenspeichereinheiten zu speichern, die durch logisches Kombinieren von mehreren physikalischen Datenspeichereinheiten gebildet sind, was es ermöglichen kann, dass die Steuereinheit 124 des nichtflüchtigen Datenspeichers viele unterschiedliche Größen und/oder Granularitäten virtueller Datenspeichereinheiten unterstützt.
  • Wie hier verwendet bezieht sich ein logisches Datenspeicherelement auf eine Gruppe aus zwei oder mehr nichtflüchtigen Datenspeicherelementen, die parallel (z. B. über einen I/O- oder Steuer-Bus) gemanagt werden oder gemanagt werden können. Ein logisches Datenspeicherelement kann mehrere logische Datenspeichereinheiten umfassen, wie z. B. logische Seiten, logische Datenspeicherbereiche (z. B. logische Löschblöcke) und so weiter. Wie hier verwendet bezieht sich eine logische Datenspeichereinheit auf ein logisches Konstrukt, das zwei oder mehr physikalische Datenspeichereinheiten kombiniert, wobei jede physikalische Datenspeichereinheit auf einem jeweiligen nichtflüchtigen Datenspeicherelement in dem jeweiligen logischen Datenspeicherelement ist (z. B. jedes nichtflüchtige Datenspeicherelement ist parallel zugreifbar). Wie hier verwendet bezieht sich ein logischer Datenspeicherbereich auf eine Gruppe aus zwei oder mehr physikalischen Datenspeicherbereichen, wobei jeder physikalische Datenspeicherbereich auf einem jeweiligen nichtflüchtigen Datenspeicherelement in dem jeweiligen logischen Datenspeicherelement ist.
  • Der logische Adressenraum 134, der durch die SML 130 präsentiert ist, kann eine logische Kapazität aufweisen, die der Anzahl verfügbarer logischer Adressen in dem logischen Adressenraum 134 und der Größe und/oder Granularität der Daten, die durch die logischen Adressen referenziert werden, entspricht. Beispielsweise kann die logische Kapazität eines logischen Adressenraums 134, der 2^32 eindeutige logische Adressen umfasst, von denen jede 2048 Bytes (2KiB) von Daten referenziert, 2^43 Bytes sein. Wie hier verwendet bezieht sich ein Kibibyte (kiB) auf 1024 Bytes. In einigen Ausführungsformen kann der logische Adressenraum 134 dünn bereitgestellt sein. Wie hier verwendet bezieht sich ein „dünn bereitgestellter“ logischer Adressenraum 134 auf einen logischen Adressenraum 134, der eine logische Kapazität aufweist, die die physikalische Kapazität der zugrundeliegenden nichtflüchtigen Datenspeichervorrichtung(en) übersteigt. Beispielsweise kann die SML 130 den Speicher-Clients 116 einen logischen 64-Bit-Adressenraum 134 präsentieren (z. B. einen logischen Adressenraum 134, der durch logische 64-Bit-Adressen referenziert ist), was die physikalische Kapazität der zugrundeliegenden nichtflüchtigen Datenspeichervorrichtungen 120 übersteigen kann. Der große logische Adressenraum 134 kann es Speicher-Clients 116 ermöglichen, zusammenhängende Bereich logischer Adressen zuzuweisen und/oder zu referenzieren, während er die Wahrscheinlichkeit für Benennungskonflikte reduziert. Die SML 130 kann die Any-to-any-Abbildungen zwischen logischen Adressen und physikalischen Speicherbetriebsmitteln wirksam einsetzen, um den logischen Adressenraum 134 unabhängig von den zugrundeliegenden physikalischen Speichervorrichtungen 120 zu managen. Beispielsweise kann die SML 130 physikalische Speicherbetriebsmittel nahtlos wie jeweils erforderlich hinzufügen und/oder entfernen, ohne die logischen Adressen, die durch die Speicher-Clients 116 verwendet werden, zu ändern.
  • Die Steuereinheit 124 des nichtflüchtigen Datenspeichers kann konfiguriert sein, Daten in einem kontextabhängigen Format zu speichern. Wie hier verwendet bezieht sich ein kontextabhängiges Format auf ein selbstbeschreibendes Datenformat, in dem persistente kontextabhängige Metadaten mit den Daten auf den physikalischen Speichermedien 122 gespeichert sind. Die persistenten kontextabhängigen Metadaten stellen den Kontext für die Daten bereit, mit denen sie gespeichert sind. In speziellen Ausführungsformen identifizieren die persistenten kontextabhängigen Metadaten die Daten, mit denen die persistenten kontextabhängigen Metadaten gespeichert sind, eindeutig. Beispielsweise können die persistenten kontextabhängigen Metadaten einen Sektor oder Block von Daten, der einem Speicher-Client 116 gehört, unter anderen Sektoren oder Blöcken, die dem Speicher-Client 116 gehören, eindeutig identifizieren. In einer weiteren Ausführungsform identifizieren die persistenten kontextabhängigen Metadaten eine Operation, die auf den Daten ausgeführt wird. In einer weiteren Ausführungsform identifizieren die persistenten kontextabhängigen Metadaten eine Sequenz von Operation, die auf den Daten ausgeführt werden. In einer weiteren Ausführungsform identifizieren die persistenten kontextabhängigen Metadaten Sicherheitssteuerelemente, einen Datentyp oder andere Attribute der Daten. In einer speziellen Ausführungsform identifizieren die persistenten kontextabhängigen Metadaten wenigstens einen aus mehreren Aspekten, die Datentyp, einen eindeutigen Datenbezeichner, eine Operation und eine Sequenz von Operationen, die auf den Daten ausgeführt werden, enthalten.
  • Die persistenten kontextabhängigen Metadaten können, ohne darauf beschränkt zu sein, enthalten: eine logische Adresse der Daten, einen Bezeichner der Daten (z. B. einen Dateinamen, eine Objekt-ID, ein Etikett, einen eindeutigen Bezeichner oder dergleichen), Referenz(en) auf andere Daten (z. B. ein Kennzeichen, dass die Daten anderen Daten zugeordnet sind), eine relative Position oder einen Versatz der Daten in Bezug auf andere Daten (z. B. Dateiversatz usw.), Datengröße und/oder Bereich und dergleichen. Das kontextabhängige Datenformat kann ein Paketformat umfassen, das ein Datensegment und einen oder mehrere Köpfe umfasst. Alternativ kann ein kontextabhängiges Datenformat Daten auf andere Weise Kontextinformationen zuordnen (z. B. in einem dedizierten Index auf den nichtflüchtigen Datenspeichermedien 122, einem Datenspeicherbereichsindex oder dergleichen).
  • In einigen Ausführungsformen kann das kontextabhängige Datenformat ermöglichen, dass Datenkontext basierend auf dem Inhalt der nichtflüchtigen Datenspeichermedien 122 und unabhängig von anderen Metadaten wie z. B. den vorstehend diskutierten beliebigen Any-to-any-Abbildungen bestimmt und/oder rekonstruiert wird. Da der Medienort von Daten unabhängig von der logischen Adresse der Daten ist, kann es ineffizient oder unmöglich sein, den Kontext von Daten nur basierend auf dem Medienort oder der Medienadresse der Daten zu bestimmen. Das Speichern von Daten in einem kontextabhängigen Format auf den nichtflüchtigen Datenspeichermedien 122 kann es ermöglichen, dass der Datenkontext ohne Bezug auf andere Metadaten bestimmt wird. Beispielsweise kann es das kontextabhängige Datenformat ermöglichen, dass die Metadaten nur basierend auf dem Inhalt der nichtflüchtigen Datenspeichermedien 122 rekonstruiert werden (z. B. Rekonstruieren der Any-to-any-Abbildungen zwischen logischen Adressen und Medienorten).
  • In einigen Ausführungsformen kann die Steuereinheit 124 des nichtflüchtigen Datenspeichers konfiguriert sein, Daten auf einem oder mehreren asymmetrischen einmal beschreibbaren Medien 122 wie z. B. Festkörper-Speichermedien zu speichern. Wie hier verwendet bezieht sich ein „einmal beschreibbares“ Speichermedium auf ein Speichermedium, das jedes Mal neu initialisiert (z. B. gelöscht) wird, wenn neue Daten darauf geschrieben oder programmiert werden. Wie hier verwendet bezieht sich ein „asymmetrisches“ Speichermedium auf ein Speichermedium 122, das unterschiedliche Latenzen für unterschiedliche Speicheroperationen aufweist. Viele Typen von Festkörper-Speichermedien sind asymmetrisch; beispielsweise kann eine Leseoperation viel schneller sein als eine Schreib-/Programmieroperation, und eine Schreib-/Programmieroperation kann viel schneller sein als eine Löschoperation (z. B. Lesen der Medien kann mehrere hundert Mal schneller sein als Löschen und mehrere zehn Mal schneller sein als Programmieren der Medien).
  • Die Datenspeichermedien 122 können in Datenspeicherbereiche partitioniert sein, die als eine Gruppe gelöscht werden können (z. B. Löschblöcke), um unter anderem die asymmetrischen Eigenschaften der Medien 122 oder dergleichen zu berücksichtigen. Somit kann das Modifizieren eines einzelnen Datensegments am Ort das Löschen des gesamten Löschblocks, der die Daten umfasst, und Neuschreiben der modifizierten Daten in den Löschblock zusammen mit den ursprünglichen unveränderten Daten erfordern. Das kann zu einem ineffizienten „Schreibfaktor“ führen, der die Medien 122 übermäßig abnutzen kann. Deshalb kann in einigen Ausführungsformen die Steuereinheit 124 des nichtflüchtigen Datenspeichers konfiguriert sein, Daten an einem anderen Ort zu schreiben. Wie hier verwendet bezieht sich das Schreiben von Daten „an einem anderen Ort“ auf das Schreiben von Daten in unterschiedlichen Medienspeicherort(en) anstatt Überschreiben der Daten „am Ort“ (z. B. Überschreiben des ursprünglichen physikalischen Orts der Daten). Das Modifizieren von Daten an einem anderen Ort kann den Schreibfaktor vermeiden, weil existierende valide Daten auf dem Löschblock mit den Daten, die modifiziert werden sollen, nicht gelöscht und neu kopiert werden müssen. Außerdem kann das Schreiben von Daten an einem anderen Ort das Löschen aus dem Latenzpfad vieler Speicheroperationen entfernen (z. B. ist die Löschlatenz nicht mehr Teil des kritischen Pfads einer Schreiboperation).
  • Die Steuereinheit 124 des nichtflüchtigen Datenspeichers kann einen oder mehrere Prozesse umfassen, die außerhalb des regulären Pfads zum Bedienen von Speicheroperationen (z. B. des „Pfads“ zum Ausführen einer Speicheroperation und/oder Bedienen einer Speicheranforderung) arbeiten. Wie hier verwendet bezieht sich der „Pfad zum Bedienen einer Speicheranforderung“ oder der „Pfad zum Bedienen einer Speicheroperation“ (auch als der „kritische Pfad“ bezeichnet) auf eine Reihe von Verarbeitungsoperationen, die benötigt werden, um die Speicheroperation oder -anforderung wie z. B. ein Lesen, Schreiben, Modifizieren oder dergleichen zu bedienen. Der Pfad zum Bedienen einer Speicheranforderung kann das Empfangen der Anforderung von einem Speicher-Client 116, Identifizieren der logischen Adressen der Anforderung, Ausführen einer oder mehrerer Speicheroperationen auf nichtflüchtigen Datenspeichermedien 122 und Zurückgeben eines Ergebnisses wie z. B. einer Quittung oder Daten umfassen. Prozesse, die außerhalb des Pfads zum Bedienen von Speicheranforderungen auftreten, können, ohne darauf beschränkt zu sein, enthalten: einen „Groomer“, Reduplikation und so weiter. Diese Prozesse können autonom und im Hintergrund implementiert sein, so dass sie die Leistung anderer Speicheroperationen und/oder -anforderungen nicht stören oder beeinflussen. Dementsprechend können diese Prozesse unabhängig von dem Bedienen von Speicheranforderungen arbeiten.
  • In einigen Ausführungsformen umfasst die Steuereinheit 124 des nichtflüchtigen Datenspeichers einen Groomer, der konfiguriert ist, Datenspeicherbereiche (z. B. logische oder physikalische Löschblöcke) zur Wiederverwendung unter Verwendung eines Speicherbereinigungs- oder andere Speicherkapazitätswiederherstellungsprozesses wiederzugewinnen. Das Paradigma des Schreibens an einem anderen Ort, das durch die Steuereinheit 124 des nichtflüchtigen Datenspeichers implementiert ist, kann zu obsoleten oder invaliden Daten führen, die auf den nichtflüchtigen Datenspeichermedien 122 verbleiben. Beispielsweise kann das Überschreiben von Daten X mit Daten Y zum Speichern von Y auf einem neuen Datenspeicherbereich (z. B. anstelle des Überschreibens von X am gleichen Ort) und Aktualisieren der Any-to-any-Abbildungen der Metadaten führen, um Y als die valide, aktuelle Version der Daten zu identifizieren. Die obsolete Version der Daten X kann als invalide gekennzeichnet werden, kann jedoch nicht sofort entfernt (z. B. gelöscht) werden, da, wie vorstehend diskutiert, das Löschen X das Löschen eines gesamten Datenspeicherbereichs betreffen kann, was eine zeitaufwändige Operation ist und zu einem Schreibfaktor führen kann. Ähnlich können Daten, die nicht mehr verwendet werden, (z. B. gelöschte oder abgeschnittene Daten) nicht sofort entfernt werden. Die nichtflüchtigen Datenspeichermedien 122 können eine signifikante Menge invalider Daten ansammeln.
  • Ein Groomer-Prozess kann außerhalb des kritischen Pfads zum Bedienen von Speicheroperationen arbeiten. Der Groomer-Prozess kann Datenspeicherbereiche wiedergewinnen, so dass sie für andere Speicheroperationen wiederverwendet werden können. Wie hier verwendet bezieht sich das Wiedergewinnen eines Datenspeicherbereichs auf das Löschen des Datenspeicherbereichs, so dass neue Daten darauf gespeichert/programmiert werden können. Das Wiedergewinnen eines Datenspeicherbereichs kann das Verlagern valider Daten auf dem Datenspeicherbereich zu einem neuen Ort umfassen. Der Groomer kann Datenspeicherbereiche zur Wiedergewinnung basierend auf einem oder mehreren Faktoren identifizieren, die, ohne darauf beschränkt zu sein, enthalten: die Menge invalider Daten in dem Datenspeicherbereich, die Menge valider Daten in dem Datenspeicherbereich, die Abnutzung des Datenspeicherbereichs (z. B. die Anzahl von Löschzyklen), die Zeit seit der Datenspeicherbereich programmiert oder aufgefrischt wurde, und so weiter.
  • Die Steuereinheit 124 des nichtflüchtigen Datenspeichers kann ferner konfiguriert sein, Daten in einem Log-Format zu speichern. Wie vorstehend beschrieben bezieht sich ein Log-Format auf ein Datenformat, das eine geordnete Sequenz von Speicheroperationen definiert, die auf nichtflüchtigen Datenspeichermedien 122 ausgeführt werden. In einigen Ausführungsformen umfasst das Log-Format das Speichern von Daten in einer vorbestimmten Sequenz von Medienadressen der nichtflüchtigen Datenspeichermedien 122 (z. B. innerhalb sequenzieller Seiten und/oder Löschblöcke der Medien 122). Das Log-Format kann ferner Zuordnen der Daten (z. B. jedes Pakets oder Datensegments) zu entsprechenden Sequenzindikatoren umfassen. Die Sequenzindikatoren können auf Daten individuell angewandt werden (z. B. auf jedes Datenpaket angewandt werden) und/oder auf Datengruppierungen angewandt werden (z. B. Pakete, die sequenziell auf einem Datenspeicherbereich wie z. B. einem Löschblock gespeichert sind). In einigen Ausführungsformen können Sequenzindikatoren auf Datenspeicherbereiche angewandt werden, wenn die Datenspeicherbereiche wiedergewonnen (z. B. gelöscht) werden, wie vorstehend beschrieben, oder wenn die Datenspeicherbereiche erstmalig verwendet werden, um Daten zu speichern.
  • In einigen Ausführungsformen kann das Log-Format das Speichern von Daten in einem „nur Anhängen“-Paradigma umfassen. Die Steuereinheit 124 des nichtflüchtigen Datenspeichers, die das nachstehend beschriebene Log-Speichermodul 137 oder dergleichen verwendet, kann einen aktuellen Anhängepunkt an einer Medienadresse der nichtflüchtigen Datenspeichervorrichtung 120 pflegen. Der Anhängepunkt kann ein aktueller Datenspeicherbereich und/oder Versatz innerhalb eines Datenspeicherbereichs sein. Daten können dann ab dem Anhängepunkt sequenziell angehängt werden. Die sequenzielle Reihenfolge der Daten kann deshalb basierend auf dem Sequenzindikator des Datenspeicherbereichs der Daten in Kombination mit der Sequenz der Daten innerhalb des Datenspeicherbereichs bestimmt werden. Beim Erreichen des Endes eines Datenspeicherbereichs kann die Steuereinheit 124 des nichtflüchtigen Datenspeichers den „nächsten“ verfügbaren Datenspeicherbereich identifizieren (z. B. den nächsten Datenspeicherbereich, der initialisiert und zum Speichern von Daten bereit ist). Der Groomer kann Datenspeicherbereiche wiedergewinnen, die invalide, alte und/oder gelöschte Daten umfassen, um sicherzustellen, dass Daten weiterhin an das Medien-Log angehängt werden können.
  • Das hier beschriebene Log-Format kann es ermöglichen, dass valide Daten von invaliden Daten basierend auf dem Inhalt der nichtflüchtigen Datenspeichermedien 122 und unabhängig von anderen Metadaten unterschieden werden können. Wie vorstehend diskutiert können invalide Daten nicht aus den nichtflüchtigen Datenspeichermedien 122 entfernt werden, bis der Datenspeicherbereich, der die Daten umfasst, wiedergewonnen wird. Deshalb können mehrere „Versionen“ von Daten, die denselben Kontext aufweisen, auf den nichtflüchtigen Datenspeichermedien 122 existieren (z. B. mehrere Versionen von Daten, die dieselben logischen Adressen aufweisen). Die Sequenzindikatoren, die den Daten zugeordnet sind, können verwendet werden, um invalide Versionen der Daten von derzeitigen, aktuellen Versionen der Daten zu unterscheiden; die Daten, die die neuesten im dem Log sind, sind die derzeitige Version, und frühere Versionen können als invalide identifiziert werden.
  • Die Speichermanagementschicht 130 kann konfiguriert sein, Speicherdienste für einen oder mehrere Speicher-Clients 116 bereitzustellen. Die Speicher-Clients 116 können lokale Speicher-Clients 116, die auf der Berechnungsvorrichtung 110 arbeiten, und/oder entfernte Speicher-Clients 116, die über das Netz 115 und/oder die Netzschnittstelle 113 zugreifbar sind, enthalten. Die Speicher-Clients 116 können, ohne darauf beschränkt zu sein, enthalten: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Server-Anwendungen, Prozesse auf Kernel-Ebene, Prozesse auf Anwenderebene, Anwendungen und dergleichen.
  • Die Speichermanagementschicht 130 umfasst eine oder mehrere nichtflüchtige Datenspeichervorrichtungen 120 und/oder ist kommunikativ mit ihnen gekoppelt. Die eine oder die mehreren nichtflüchtigen Datenspeichervorrichtungen 120 können unterschiedliche Typen von nichtflüchtigen Datenspeichervorrichtungen enthalten, die, ohne darauf beschränkt zu sein, enthalten: Festkörper-Speichervorrichtungen, Festplatten, SAN-Speicherbetriebsmittel oder dergleichen. Die eine oder die mehreren nichtflüchtigen Datenspeichervorrichtungen 120 können eine oder mehrere entsprechende Steuereinheiten 126 für nichtflüchtige Datenspeichermedien und nichtflüchtige Datenspeichermedien 122 umfassen. Wie in 1 dargestellt ist, kann die SML 130 Zugriff auf die eine oder die mehreren nichtflüchtigen Datenspeichervorrichtungen 120 über eine herkömmliche Block-I/O-Schnittstelle 131 bereitstellen. Zusätzlich kann die SML 130 Zugriff auf verbesserte Funktionalität (z. B. einen großen virtuellen Adressenraum 134) über die SML-Schnittstelle 132 bereitstellen. Die Metadaten 135 können verwendet werden, um Speicheroperationen über irgendeine aus der Block-I/O-Schnittstelle 131, der SML-Schnittstelle 132, der Cache-Schnittstelle 133 oder andere zugehörige Schnittstellen ausgeführt werden, zu managen und/oder zu verfolgen.
  • Die Cache-Schnittstelle 133 kann cache-spezifische Merkmale zeigen, die über die Speichermanagementschicht 130 zugänglich sind. Außerdem stellt in einigen Ausführungsformen die SML-Schnittstelle 132, die den Speicher-Clients 116 präsentiert wird, Zugriff auf Datentransformationen bereit, die durch die eine oder die mehreren nichtflüchtigen Datenspeichervorrichtungen 120 und/oder die eine oder die mehreren Steuereinheiten 126 der nichtflüchtigen Datenspeichermedien implementiert sind.
  • Die SML 130 kann Speicherdienste über eine oder mehrere Schnittstellen bereitstellen, die, ohne darauf beschränkt zu sein, enthalten können: eine Block-I/O-Schnittstelle, eine Schnittstelle der erweiterten Speichermanagementschicht, eine Cache-Schnittstelle und dergleichen. Die SML 130 kann einen logischen Adressenraum 134 für die Speicher-Clients 116 über eine oder mehrere Schnittstellen präsentieren. Wie vorstehend diskutiert kann der logische Adressenraum 134 mehrere logische Adressen umfassen, von denen jede jeweiligen Medienorten auf einer oder mehreren nichtflüchtigen Datenspeichervorrichtungen 120 entspricht. Die SML 130 kann Metadaten 135 pflegen, die Any-to-any-Abbildungen zwischen logischen Adressen und Medienorten umfassen, wie vorstehend beschrieben.
  • Die SML 130 kann ferner ein Log-Speichermodul 137 umfassen, das konfiguriert ist, Daten in einem kontextabhängigen Log-Format zu speichern. Das kontextabhängige Log-Datenformat kann das Zuordnen von Daten zu persistenten kontextabhängigen Metadaten wie z. B. der logischen Adresse der Daten und dergleichen umfassen. Das kontextabhängige Log-Format kann ferner Zuweisen der Daten zu jeweiligen Sequenzbezeichnern auf den nichtflüchtigen Datenspeichermedien 122 umfassen, die eine geordnete Sequenz von Speicheroperationen definieren, die auf der einen oder den mehreren nichtflüchtigen Datenspeichervorrichtungen 120 ausgeführt werden, wie vorstehend beschrieben.
  • Die SML 130 kann ferner eine Schnittstelle 139 der nichtflüchtigen Datenspeichervorrichtung umfassen, die konfiguriert ist, Daten, Befehle und/oder Abfragen zu der einen oder den mehreren nichtflüchtigen Datenspeichervorrichtungen 120 über einen Bus 125 zu übertragen, der, ohne darauf beschränkt zu sein, enthalten kann: einen „Peripheral Component Interconnect Express“- (PCI Express- oder PCIe-) Bus, einen „Serial Advanced Technology Attachment“- (ATA-) Bus, einen parallelen ATA-Bus, eine „Small Computer System“-Schnittstelle (SCSI), FireWire, „Fibre Channel“, einen „Universal Serial Bus“ (USB), einen „PCIe Advanced Switching“- (PCIe-AS-) Bus, ein Netz 115, Infiniband, SCSI RDMA oder dergleichen. Die Schnittstelle 139 der nichtflüchtigen Datenspeichervorrichtung kann mit der einen oder den mehreren nichtflüchtigen Datenspeichervorrichtungen 120 unter Verwendung von Eingabe-Ausgabe-Steuer-Befehl(en) (IO-CTL-Befehl(en)), IO-CTL-Befehlserweiterung(en), entferntem Speicherdirektzugriff oder dergleichen kommunizieren.
  • Die Kommunikationsschnittstelle 113 kann eine oder mehrere Netzschnittstellen umfassen, die konfiguriert sind, die Berechnungsvorrichtung 110 und/oder die Steuereinheit 124 des nichtflüchtigen Datenspeichers mit einem Netz 115 und/oder mit einem oder mehreren über das Netz zugreifbaren Speicher-Clients 116 kommunikativ zu koppeln. Die Speicher-Clients 116 können lokale Speicher-Clients 116, die auf der Berechnungsvorrichtung 110 arbeiten, und/oder entfernte Speicher-Clients 116, die über das Netz 115 und/oder die Netzschnittstelle 113 zugreifbar sind, enthalten. Die Steuereinheit 124 des nichtflüchtigen Datenspeichers umfasst eine oder mehrere nichtflüchtige Datenspeichervorrichtungen 120. Obwohl 1 eine einzige nichtflüchtige Datenspeichervorrichtung 120 abbildet, ist die Offenbarung in dieser Hinsicht nicht eingeschränkt und könnte angepasst werden, um irgendeine Anzahl nichtflüchtiger Datenspeichervorrichtungen 120 zu integrieren.
  • Die nichtflüchtige Datenspeichervorrichtung 120 kann nichtflüchtige Datenspeichermedien 122 umfassen, die, ohne darauf beschränkt zu sein, enthalten können: NAND-Flash-Datenspeicher, NOR-Flash-Datenspeicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), Nanokristalldrahtbasierten Datenspeicher, Siliziumoxidbasierten Sub-10-Nanometer-Prozessdatenspeicher, Graphen-Datenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), resistiven RAM (RRAM), programmierbare Metallisierungszelle (PMC), leitfähigüberbrückenden RAM (CBRAM), magnetoresistiven RAM (MRAM), dynamischen RAM (DRAM), Phasenwechsel-RAM (PRAM oder PCM), magnetische Speichermedien (z. B. Festplatte, Band), optische Speichermedien oder dergleichen. Obwohl die nichtflüchtigen Datenspeichermedien 122 hier als „Datenspeichermedien“ bezeichnet sind, können in verschiedenen Ausführungsformen die nichtflüchtigen Datenspeichermedien 122 allgemeiner nichtflüchtige Aufzeichnungsmedien enthalten, die zum Aufzeichnen von Daten fähig sind, die als nichtflüchtige Datenspeichermedien, nichtflüchtige Speichermedien oder dergleichen bezeichnet sein können. Ferner kann in verschiedenen Ausführungsformen die nichtflüchtige Datenspeichervorrichtung 120 eine nichtflüchtige Aufzeichnungsvorrichtung, eine nichtflüchtige Datenspeichervorrichtung, eine nichtflüchtige Speichervorrichtung oder dergleichen umfassen.
  • Die nichtflüchtigen Datenspeichermedien 122 können ein oder mehrere nichtflüchtige Datenspeicherelemente 123 umfassen, die, ohne darauf beschränkt zu sein, enthalten können: Chips, Gehäuse, Ebenen, Bausteine und dergleichen. Eine Steuereinheit 126 der nichtflüchtigen Datenspeichermedien kann konfiguriert sein, Speicheroperationen auf nichtflüchtigen Datenspeichermedien 122 zu managen, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. feldprogrammierbare Gatter-Arrays) oder dergleichen umfassen. In einigen Ausführungsformen ist die Steuereinheit 126 der nichtflüchtigen Datenspeichermedien konfiguriert, Daten zu speichern und/oder Daten aus den nichtflüchtigen Datenspeichermedien 122 in dem kontextabhängigen Log-Format zu lesen, wie vorstehend beschrieben, und Daten zu/aus der nichtflüchtigen Datenspeichervorrichtung 120 zu übertragen, und so weiter.
  • Die Steuereinheit 126 der nichtflüchtigen Datenspeichermedien kann mit den nichtflüchtigen Datenspeichermedien 122 mit Hilfe eines Busses 127 kommunikativ gekoppelt sein. Der Bus 127 kann einen I/O-Bus zum Kommunizieren von Daten zu/von den nichtflüchtigen Datenspeicherelementen 123 umfassen. Der Bus 127 kann ferner einen Steuerbus zum Kommunizieren der Adressierung und anderer Befehle und Steuerinformationen zu dem nichtflüchtige Datenspeicherelementen 123 umfassen. In einigen Ausführungsformen kann der Bus 127 die nichtflüchtigen Datenspeicherelemente 123 mit der Steuereinheit 126 der nichtflüchtigen Datenspeichermedien parallel kommunikativ koppeln. Dieser parallele Zugriff kann ermöglichen, dass die nichtflüchtigen Datenspeicherelemente 123 als eine Gruppe, die ein logisches Datenspeicherelement 129 bildet, gemanagt werden. Wie vorstehend diskutiert kann das logische Datenspeicherelement in jeweilige logische Datenspeichereinheiten (z. B. logische Seiten) und/oder logische Datenspeicherbereiche (z. B. logische Löschblöcke) partitioniert sein. Die logischen Datenspeichereinheiten können durch logisches Kombinieren physikalischer Datenspeichereinheiten jedes der nichtflüchtigen Datenspeicherelemente gebildet werden. Beispielsweise falls die nichtflüchtigen Datenspeichermedien 122 fünfundzwanzig (25) nichtflüchtige Datenspeicherelemente umfassen, kann jede logische Datenspeichereinheit fünfundzwanzig (25) Seiten umfassen (z. B. eine Seite jedes Elements der nichtflüchtigen Datenspeichermedien 122).
  • Die Steuereinheit 124 des nichtflüchtigen Datenspeichers kann eine SML 130 und die Steuereinheit 126 der nichtflüchtigen Datenspeichermedien umfassen. Die SML 130 kann Speicherdienste für die Speicher-Clients 116 über eine oder mehrere Schnittstellen 131, 132 und/oder 133 bereitstellen. In einigen Ausführungsformen stellt die SML 130 eine Block-Vorrichtungs-I/O-Schnittstelle 131 bereit, über die die Speicher-Clients 116 I/O-Operationen auf Blockebene ausführen. Alternativ oder zusätzlich kann die SML 130 eine Speichermanagementschicht-Schnittstelle (SML-Schnittstelle) 132 bereitstellen, die andere Speicherdienste für die Speicher-Clients 116 bereitstellen kann. In einigen Ausführungsformen kann die SML-Schnittstelle 132 Erweiterungen für die Blockvorrichtungsschnittstelle 131 umfassen (z. B. können die Speicher-Clients 116 auf die SML-Schnittstelle 132 über die Erweiterungen für die Blockvorrichtungsschnittstelle 131 zugreifen). Alternativ oder zusätzlich kann die SML-Schnittstelle 132 als separate/r API, Dienst und/oder Bibliothek bereitgestellt sein. Die SML 130 kann ferner konfiguriert sein, eine Cache-Schnittstelle 133 zum Zwischenspeichern von Daten unter Verwendung des nichtflüchtigen Datenspeichersystems 102 bereitzustellen.
  • Wie vorstehend beschrieben kann die SML 130 einen logischen Adressenraum 134 für die Speicher-Clients 116 präsentieren (z. B. über die Schnittstellen 131, 132 und/oder 133). Die SML 130 kann Metadaten 135 pflegen, die Any-to-any-Abbildungen zwischen logischen Adressen in dem logischen Adressenraum 134 und Medienorten in der nichtflüchtigen Datenspeichervorrichtung 120 umfassen. Die Metadaten 135 können eine Logisch-zu-physikalisch-Abbildungsstruktur mit Einträgen, die logische Adressen in dem logischen Adressenraum 134 und Medienorten in der nichtflüchtigen Datenspeichervorrichtung 120 abbilden, umfassen. Die Logisch-zu-physikalisch-Abbildungsstruktur der Metadaten 135 ist in einer Ausführungsform dünn besetzt mit Einträgen für logische Adressen, für die die nichtflüchtige Datenspeichervorrichtung 120 Daten speichert, und mit keinen Einträgen für logische Adressen, für die die nichtflüchtige Datenspeichervorrichtung 120 derzeit keine Daten speichert. Die Metadaten 135 in speziellen Ausführungsformen verfolgen Daten auf einer Blockebene, wobei die SML 130 Daten als Blöcke managt.
  • Das nichtflüchtige Datenspeichersystem 102 kann ferner ein Log-Speichermodul 137 umfassen, das, wie vorstehend beschrieben, konfiguriert sein kann, Daten in der nichtflüchtigen Datenspeichervorrichtung 120 in einem kontextabhängigen Log-Format zu speichern. Das kontextabhängige Log-Datenformat kann Zuordnen von Daten zu einer logischen Adresse auf den nichtflüchtigen Datenspeichermedien 122 umfassen. Das kontextabhängige Log-Format kann ferner Zuweisen der Daten zu jeweiligen Sequenzbezeichnern auf den nichtflüchtigen Datenspeichermedien 122 umfassen, die eine geordnete Sequenz von Speicheroperationen definieren, die auf den nichtflüchtigen Datenspeichermedien 122 ausgeführt werden, sie vorstehend beschrieben. Die Steuereinheit 124 des nichtflüchtigen Datenspeichers kann ferner eine Schnittstelle 139 der nichtflüchtige Datenspeichervorrichtung umfassen, die konfiguriert ist, Daten, Befehle und/oder Abfragen zu der Steuereinheit 126 der nichtflüchtigen Datenspeichermedien über einen Bus 125 zu übertragen, wie vorstehend beschrieben.
  • 2 bildet eine Ausführungsform einer nichtflüchtigen Speichervorrichtung 210 ab, die einen oder mehrere Datenspeicher-Bausteine oder -Chips 212 enthalten kann. Die nichtflüchtige Speichervorrichtung 210 kann im Wesentlichen ähnlich der nichtflüchtigen Datenspeichervorrichtung 120 sein, die mit Bezug auf 1 beschrieben ist. Der Datenspeicher-Baustein 212 enthält in einigen Ausführungsformen ein Array 200 (zweidimensional oder dreidimensional) von Datenspeicherzellen, die Baustein-Steuereinheit 220 und die Lese/Schreib-Schaltungen 230A/230B. In einer Ausführungsform ist der Zugriff auf das Datenspeicher-Array 200 durch die verschiedenen peripheren Schaltungen auf symmetrische Weise implementiert, auf gegenüberliegenden Seiten des Array, so dass die Dichten der Zugriffsleitungen und die Schaltungsanordnung auf jeder Seite um die Hälfte reduziert ist. Die Lese/Schreib-Schaltungen 230A/230B enthalten in einer weiteren Ausführungsform mehrere Erfassungsblöcke 250, die es ermöglichen, dass eine Seite der Datenspeicherzellen parallel gelesen oder programmiert wird.
  • Das Datenspeicher-Array 200 ist in verschiedenen Ausführungsformen durch Wortleitungen über Zeilendecodierer 240A/240B und durch Bitleitungen über Spaltendecodierer 242A/242B adressierbar. In einigen Ausführungsformen ist eine Steuereinheit 244 in derselben Datenspeichervorrichtung 210 (z. B. eine herausnehmbare Speicherkarte oder Gehäuse) wie der eine oder die mehreren Datenspeicherbausteine 212 enthalten. Befehle und Daten werden zwischen dem Host und der Steuereinheit 244 über die Leitungen 232 und zwischen der Steuereinheit und dem einen oder den mehreren Datenspeicherbausteinen 212 über die Leitungen 234 übertragen. Eine Implementierung kann mehrere Chips 212 enthalten.
  • Die Baustein-Steuereinheit 220 wirkt in einer Ausführungsform mit den Lese/Schreib-Schaltungen 230A/230B zusammen, um Datenspeicher/Speicheroperationen auf dem Datenspeicher-Array 200 auszuführen. Die Baustein-Steuereinheit 220 enthält in speziellen Ausführungsformen ein Parametermanagementmodul 150, einen Zustandsautomaten 222, einen chipinternen Adressendecodierer 224 und eine Leistungssteuerungsschaltung 226. Das Parametermanagementmodul 150 ist in einer Ausführungsform konfiguriert, einen Befehl zu empfangen, einen Wert eines Parameters zu ändern, der einer nichtflüchtigen Speichervorrichtung 120 zugeordnet ist. In speziellen Ausführungsformen enthält der Parameter eine Einstellung für eine oder mehrere Speicheroperationen der nichtflüchtigen Speichervorrichtung 120. In einigen Ausführungsformen ist das Parametermanagementmodul 150 konfiguriert, einen oder mehrere Datensätze mit dem Befehl zu empfangen. Ein Datensatz kann einen Bezeichner, der einem Parameter zugeordnet ist, der geändert werden soll, und einen neuen Wert für den Parameter enthalten. Jeder der Datensätze wird in einer Ausführungsform mit derselben Datenrate wie der Befehl empfangen. In einer weiteren Ausführungsform wird für jeden des einen oder der mehreren Datensätze der neue Wert für den Parameter in einen Speicherort geschrieben, der dem Parameter zugeordnet ist. Das Parametermanagementmodul 150 kann in speziellen Ausführungsformen Software eines Vorrichtungstreibers und/oder Hardware in einer Vorrichtungssteuereinheit 244, einer Baustein-Steuereinheit 220 und/oder einem Zustandsautomaten 222 enthalten.
  • Der Zustandsautomat 222 stellt in einer Ausführungsform die Steuerung auf Chip-Ebene der Datenspeicher- oder Speicheroperationen bereit. Der chipinterne Adressendecodierer 224 stellt eine Adressenschnittstelle bereit, um zwischen der Adresse, die durch den Host oder eine Datenspeicher-Steuereinheit verwendet wird, und der Hardware-Adresse, die durch die Decodierer 240A, 240B, 242A, 242B verwendet wird, umzusetzen. Die Leistungssteuerungsschaltung 226 steuert die Leistung und die Spannungen, die den Wortleitungen und Bitleitungen während Datenspeicheroperationen zugeführt werden. In einer Ausführungsform enthält die Leistungssteuerungsschaltung 226 eine oder mehrere Ladungspumpen, die Spannungen größer als die Versorgungsspannung erzeugen können.
  • 3 bildet eine Ausführungsform eines Parametermanagementmoduls 150 ab. Das Parametermanagementmodul 150 kann im Wesentlichen ähnlich dem Parametermanagementmodul 150 sein, das vorstehend mit Bezug auf 1 beschrieben ist. In der abgebildeten Ausführungsform enthält das Parametermanagementmodul 150 ein Befehlsmodul 302, ein Datenmodul 304 und ein Schreibmodul 306, die nachstehend genauer beschrieben sind.
  • Das Befehlsmodul 302 ist in einer Ausführungsform konfiguriert, einen Befehl, eine Anweisung, ein Signal oder dergleichen zu empfangen, einen Wert eines Parameters, der einer Datenspeicherelement mit integrierter Schaltung (IC-Datenspeicherelement) zugeordnet ist, wie z. B. einer nichtflüchtigen Speichervorrichtung 120 wie vorstehend beschrieben, zu ändern. Obwohl viele der Beispiele hier mit Bezug auf eine nichtflüchtige Speichervorrichtung 120 beschrieben sind, wird ein Fachmann erkennen, dass der hier offenbarte Gegenstand auf verschiedene Typen nichtflüchtiger und flüchtiger Speichervorrichtungen anwendbar sein kann.
  • Das Befehlsmodul 302 kann in einer Ausführungsform einen Befehl, den Wert eines Parameters, der einem Datenspeicherelement mit integrierter Schaltung zugeordnet ist, zu ändern, zu modifizieren, anzupassen, zu verändern oder dergleichen, von einem Speicher-Client 116, einer Steuereinheit 124 eines nichtflüchtigen Datenspeichers, einer Steuereinheit 126 nichtflüchtiger Datenspeichermedien, einem Vorrichtungstreiber oder einer Speichermanagementschicht (SML) 130 oder dergleichen empfangen. Ein Parameter, wie er hier verwendet ist, kann eine Variable, eine Ausführungsvariable, eine Einstellung, eine Speicheroperationseinstellung oder dergleichen sein, die einen Wert umfasst, der für Speicheroperationen, Speicherfunktionen oder dergleichen auf dem IC-Datenspeicherelement, wie z. B. Programmier-, Lösch- oder Leseoperationen, verwendet wird. Beispiele eines Speicherparameters, der geändert werden kann, können eine Lesespannungsschwellenwerteinstellung, eine Lesevorspannungsschwellenwerteinstellung, eine Verifizierungsspannungseinstellung, eine Programmierspannungseinstellung, eine Schleifenzählwerteinstellung, eine Schrittgrößeneinstellung und/oder dergleichen sein.
  • Das Datenmodul 304 ist in einer Ausführungsform konfiguriert, einen oder mehrere Datensätze, Datentupel oder dergleichen mit dem Befehl, den Wert eines Parameters, einer Einstellung, einer Gruppe von Parametern, einer Gruppe von Einstellungen oder dergleichen zu ändern, zu empfangen. Jeder des einen oder der mehreren Datensätze kann Daten zum Ändern des Werts eines Speicherparameters umfassen. Beispielsweise kann jeder Datensatz einen Bezeichner, der einem Speicherparameter zugeordnet ist, der geändert werden soll, und den neuen Wert für den identifizierten Speicherparameter enthalten. Der Bezeichner kann eine Adresse, einen lokal oder global eindeutigen Bezeichner, einen Speicherort und/oder dergleichen enthalten, der einen Parameter des IC-Datenspeicherelements, der geändert werden soll, identifiziert. Der neue Wert für den Speicherparameter, der in einem Datensatz enthalten ist, kann von verschiedenen Datentypen wie z. B. Ganzzahlen, Gleitkommazahlen, doppelt genaue Zahlen, Zeichenketten und/oder dergleichen sein. Beispielsweise kann der Wert für einen Lesespannungsschwellenwertparameter ein Wert wie z. B. 2,8 Volt sein.
  • In einer Ausführungsform empfängt das Datenmodul 304 den einen oder die mehreren Datensätze mit der gleichen Datenrate mit der das Befehlsmodul 302 den Befehl, einen Parameter zu ändern, empfängt. Beispielsweise kann ein IC-Datenspeicherelement in der Schaltbetriebsart laufen, z. B. einer DDR-Betriebsart, in der Daten mit einer Rate von 200 MB/s empfangen werden, so dass das Befehlsmodul 302 den Parameteränderungsbefehl empfängt und das Datenmodul 304 den einen oder die mehreren Datensätze mit der gleichen Datenrate empfängt. Das ist anders als in herkömmlichen Datenspeichersystemen, in denen ein IC-Datenspeicherelement in eine Betriebsart mit langsamerer Ausführung versetzt werden kann, z. B. eine Alt-Betriebsart, eine SDR-Betriebsart oder dergleichen, bevor es Daten zum Ändern eines oder mehrerer Parameter des IC-Datenspeicherelements empfängt.
  • Beispielsweise kann in einer Ausführungsform das Datenmodul 304 den einen oder die mehreren Datensätze am Anfang eines Taktzyklus direkt nach dem letzten Taktzyklus empfangen, in dem das Befehlsmodul 302 den Parameteränderungsbefehl empfängt. Beispielsweise können, während es in der Schaltbetriebsart ist, 200 MB/s Daten während jedes Taktzyklus empfangen werden. Das Befehlsmodul 302 kann den Parameteränderungsbefehl während eines 200 MB/s-Taktzyklus empfangen. Das Datenmodul 304 kann dann einen oder mehrere Datensätze zum Ändern eines oder mehrerer Parameter des IC-Datenspeicherelements während des nächsten 200 MB/s-Taktzyklus empfangen. Somit wird das IC-Datenspeicherelement nicht in eine langsamer ausführende Betriebsart versetzt, um die Datensätze zum Ändern von Parametern zu empfangen, sondern bleibt stattdessen in der Hochleistungsbetriebsart und empfängt Datensätze zum Ändern von Parametern mit der gleichen Taktzyklusrate wie die Taktzyklusrate, mit der das Befehlsmodul 302 dem Befehl empfängt.
  • In einer weiteren Beispielausführungsform empfängt das Datenmodul 304 jeden des einen oder der mehreren Datensätze ohne eine Verzögerung zwischen dem Empfang jedes Datensatzes. In einer solchen Ausführungsform kann beispielsweise das Datenmodul 304 jeden Datensatz zum Ändern von Parametern ohne Empfangen eines weiteren Parameteränderungsbefehls zwischen dem Empfang jedes Datensatzes empfangen. In einer weiteren Beispielausführungsform kann das Datenmodul 304 jeden Datensatz zum Ändern von Parametern ohne einen oder mehrere zusätzliche Taktzyklen zwischen dem Empfang jedes Datensatzes empfangen. Beispielsweise können ein oder mehrere Datensätze während desselben 200 MB/s-Taktzyklus empfangen werden, anstatt dass jeder Datensatz während unterschiedlicher Taktzyklen separat gesendet wird.
  • Das Schreibmodul 306 ist in einer Ausführungsform konfiguriert, den neuen Wert für einen Parameter in einen Speicherort, eine Adresse oder dergleichen, der/die dem Parameter zugeordnet ist, zu schreiben oder zu programmieren. Das Schreibmodul 306 verarbeitet in speziellen Ausführungsformen jeden Datensatz, den das Datenmodul 304 empfängt, durch Bestimmen des Speicherorts des Parameters basierend auf dem Bezeichner, der in jedem Datensatz bereitgestellt ist, und schreibt den bereitgestellten neuen Wert in den Speicherort für den Parameter. In einer solchen Ausführungsform überschreibt das Schreibmodul 306 irgendwelche existierenden Werte oder Daten in dem Speicherort für den Parameter. In verschiedenen Ausführungsformen kann sich der Speicherort auf ein Register oder einen anderen nichtflüchtigen Speicherort zum Speichern von Parametern auf einem IC-Datenspeicherelement oder ihm zugeordnet beziehen.
  • In speziellen Ausführungsformen enthält ein Datensatz des einen oder der mehreren Datensätze ferner eine Maske wie z. B. eine Bitmaske, die das Schreibmodul 306 verwendet, um Speicherorte eines oder mehrerer Parameter oder Einstellungen aus mehreren Parametern, einer Gruppe von Einstellungen oder dergleichen zu bestimmen, die auf den neuen Wert geändert werden sollten, der in jedem Datensatz bereitgestellt ist, den das Datenmodul 304 empfängt. Beispielsweise kann ein Satz von Parametern durch ein Byte oder eine andere Bitkette repräsentiert sein, wobei jedes Bit des Byte oder der Bitkette wenigstens einen Abschnitt eines Parameters oder wenigstens einen Abschnitt eines Speicherorts eines Parameters repräsentiert. In einer solchen Ausführungsform kann jeder Parameter als ein oder mehrere Bytes gespeichert sein, und jedes Bit der Bitkette, die den Satz von Parametern repräsentiert, referenziert, zeigt auf einen Speicherort oder dergleichen wenigstens eines Abschnitts eines Parameters oder gibt ihn an.
  • Beispielsweise kann das Datenmodul 304 einen Datensatz empfangen, der einen Bezeichner, eine Adresse oder dergleichen für eine Bitkette enthält, die einen Satz von Parametern repräsentiert, wobei jedes Bit einen unterschiedlichen Parameter des Satzes repräsentiert. Der Datensatz kann außerdem eine Bitmaske enthalten, die das Schreibmodul 306 verwendet, um zu bestimmen, welcher Parameter, der durch ein Bit der Bitkette repräsentiert ist, geändert werden soll. Beispielsweise kann das Schreibmodul 304 eine logische Operation unter Verwendung der Bitkette, die den Satz von Parametern repräsentiert, und der Bitmaske ausführen, wie z. B. ein logisches OR, AND, XOR oder dergleichen, um zu bestimmen, welcher Parameter, der durch ein oder mehrere Bits der Bitkette repräsentiert ist, geändert werden soll.
  • In einem spezifischen Beispiel kann, falls acht Parameter durch die Bitkette 11111111, wobei sich jedes Bit auf einen Speicherort eines Parameters bezieht (z. B. einen Parameterwert, der in einem Register gespeichert ist), ein Byte, das den Parameterwert repräsentiert, oder dergleichen repräsentiert sind, und das Datenmodul 304 einen Datensatz empfängt, der eine Bitmaske 00010000 enthält, das Schreibmodul 306 eine logische XOR-Operation unter Verwendung der Bitkette, die den Satz von Parametern repräsentiert, und der Bitmaske ausführen (z. B. 11111111 v 00010000 = 00010000), um zu bestimmen, dass der Parameter oder der Speicherort für den Parameterwert, der durch das dritte Bit repräsentiert ist, der Parameterwert ist, der geändert werden soll. Auf diese Weise werden nur Parameter, die durch die Bitmaske spezifiziert sind, geladen/gelesen und geändert, anstatt alle Parameter des Satzes von Parametern, der durch die Bitkette repräsentiert ist, zu laden / zu lesen.
  • In einigen Ausführungsformen umfasst die Bitkette, die den Satz von Parametern oder die Speicherorte für die Parameter repräsentiert, mehrere Bits, die gemeinsam einen einzigen Parameterwert repräsentieren. Beispielsweise falls der Wert eines Parameters ein Wert ist, der größer als ein einzelne Byte ist, wie z. B. eine Gleitkommazahl oder doppelt genaue Zahl, dann können mehrere Bits kombiniert einen einzigen Parameterwert oder den/die Speicherort(e) für den Parameterwert repräsentieren. Beispielsweise falls der Parameterwert für einen Leseschwellenwert eine doppelt genaue Zahl ist (z. B. 8 Bytes oder 64 Bits), wie z. B. 2,8 Volt, dann kann sich jedes Bit der Bitkette, die den Speicherort für diesen Parameter repräsentiert, auf einen Speicherort eines Byte aus den acht Bytes beziehen, die erforderlich sind, um den Parameterwert zu speichern.
  • 4 bildet eine Ausführungsform eines Parametermanagementmoduls 150 ab. Das Parametermanagementmodul 150 kann im Wesentlichen ähnlich dem Parametermanagementmodul 150 sein, das vorstehend mit Bezug auf 1 beschrieben ist. In der abgebildeten Ausführungsform enthält das Parametermanagementmodul 150 ein Befehlsmodul 302, ein Datenmodul 304 und ein Schreibmodul 306, die im Wesentlichen dem Befehlsmodul 302, dem Datenmodul 304 und dem Schreibmodul 306, die vorstehend mit Bezug auf 3 beschrieben sind, ähnlich sein können. In einer weiteren Ausführungsform enthält das Parametermanagementmodul 150 ein Betriebsartänderungsmodul 402 ein Speichermodul 404 und ein Formatierungsmodul 406, die nachstehend genauer beschrieben sind.
  • Das Befehlsmodul 302 enthält in einer Ausführungsform eine Ausführungsform eines Betriebsartänderungsmoduls 402. Das Betriebsartänderungsmodul 402 empfängt in einer Ausführungsform einen Befehl, das IC-Datenspeicherelement in eine Testbetriebsart, eine interne Betriebsart und/oder dergleichen zu versetzen. Wie hier verwendet kann sich eine Test- oder interne Betriebsart eines IC-Datenspeicherelements auf eine Operations- oder Ausführungsbetriebsart des IC-Datenspeicherelements zum Empfangen und/oder Verarbeiten von Managementbefehlen, die Speicheroperationen des IC-Datenspeicherelements zugeordnet sind, beziehen. Beispielsweise kann das Ändern von Speicheroperationsparametern für ein IC-Datenspeicherelement ausgeführt werden, während das IC-Datenspeicherelement in eine Test- oder internen Betriebsart versetzt ist. In verschiedenen Ausführungsformen empfängt das Befehlsmodul 302 den Befehl, einen Speicherparameter zu ändern, und das Datenmodul 304 empfängt den einen oder die mehreren Datensätze zum Ändern von Speicherparametern, nachdem das Betriebsartänderungsmodul 402 den Befehl empfangen hat, das IC-Datenspeicherelement in die Testbetriebsart zu versetzen und dann das IC-Datenspeicherelement in die Testbetriebsart versetzt.
  • Beispielsweise kann das Betriebsartänderungsmodul 402 einen Befehl empfangen, eine NAND-Flash-Speichervorrichtung in die Testbetriebsart zu versetzen, wie z. B. den Befehl ‚5CC5‘. Das Betriebsartänderungsmodul 402 kann nach dem Empfangen des ‚5CC5‘-Befehls die NAND-Flash-Speichervorrichtung in eine Test-/interne Betriebsart versetzen, und dann kann das Befehlsmodul 302 einen Befehl empfangen, Speicherparameter zu ändern. Das Datenmodul 304 kann dann einen oder mehrere Datensätze zum Ändern der Speicherparameter empfangen. Von Bedeutung ist, dass dieses behandelt wird, während die NAND-Flash-Speichervorrichtung in einer Hochgeschwindigkeits- oder Hochleistungsbetriebsart arbeitet, wie z. B. der Schaltbetriebsart oder der DDR-Betriebsart, so dass der Parameteränderungsbefehl und die Datensätze zum Ändern von Speicherparametern mit derselben Hochgeschwindigkeitsdatenrate empfangen werden, anstatt die NAND-Flash-Speicherparameter in eine langsamere Betriebsart wie z. B. die SDR-Betriebsart zu versetzen.
  • In speziellen Ausführungsformen empfängt das Betriebsartänderungsmodul 402 einen Beendigungsbefehl, der angibt, dass das IC-Datenspeicherelement aus der Test-/internen Betriebsart herausgenommen und in die reguläre Arbeitsbetriebsart versetzt werden sollte. Beispielsweise kann das Schreibmodul 306 einen Beendigungsbefehl zu dem Betriebsartänderungsmodul 402 senden, um anzugeben, dass es das Ändern der Parameterwerte beendet hat und dass das IC-Datenspeicherelement zu der normalen Arbeitsbetriebsart zurückkehren kann.
  • Das Speichermodul 404 ist in einer Ausführungsform konfiguriert, den einen oder die mehreren Datensätze, die das Datenmodul 304 empfängt, in einem oder mehreren Datenauffangregistern, die einem IC-Datenspeicherelement zugeordnet sind, zu speichern. Ein Datenauffangregister, wie es hier verwendet ist, bezieht sich auf einen Speicherbereich des IC-Datenspeicherelements, der zum Speichern von Daten verwendet wird, bis sie in das IC-Datenspeicherelement geschrieben oder daraus gelesen werden. In speziellen Ausführungsformen ist das Datenauffangregister, das das Speichermodul 404 verwendet, ein Hauptdateneintrittspunkt in ein und aus einem IC-Datenspeicherelement. Beispiele für Datenauffangregister, die das Speichermodul 404 verwendet, um den einen oder die mehreren Datensätze zu speichern, können ADL, BDL, CDL, XDL und/oder dergleichen enthalten. Auf diese Weise können die Daten in einem existierenden Speicher auf dem IC-Datenspeicherelement gespeichert werden, ohne zusätzlichen Speicher zu benötigen.
  • In einer Ausführungsform speichert das Speichermodul 404 den einen oder die mehreren Datensätze in einem oder mehreren Datenauffangregistern, bevor das Schreibmodul 306 die neuen Parameterwerte in den Datensätzen in das IC-Datenspeicherelement schreibt. In verschiedenen Ausführungsformen enthält das Speichermodul 404 ein Formatierungsmodul 406, das konfiguriert ist, den einen oder die mehreren empfangenen Datensätze zu formatieren, bevor das Speichermodul 404 die Datensätze in die Datenauffangregister speichert. Das Formatierungsmodul 406 formatiert in einigen Ausführungsformen den einen oder die mehreren empfangenen Datensätze als eine oder mehrere Bitketten, die ein vordefiniertes Format aufweisen. Beispielsweise kann für jeden Datensatz das Formatierungsmodul 406 eine Bitkette als (Parameterbezeichner)(Bitmaske)(Neuer Wert) formatieren, und das Speichermodul 404 kann jede Bitkette in einem oder mehreren Datenauffangregistern speichern. Die Bitketten können in benachbarten Speicherorten (z. B. als eine lange Bitkette) oder in separaten Speicherorten (z. B. als separate Bitketten) gespeichert werden. Beispielsweise kann das Formatierungsmodul 406 ein oder mehrere Bits als Versatz, zum Auffüllen und/oder dergleichen zwischen Datensätzen, vor Datensätzen, nach Datensätze und/oder dergleichen aufnehmen.
  • Das Speichermodul 404 kann ferner konfiguriert sein, zu verfolgen, zu bestimmen oder auf andere Weise zu identifizieren, wie viele Datensätze in den Datenauffangregistern gespeichert sind. Auf diese Weise kann das Schreibmodul 306 bestimmen, wie viele Datensätze in den Datenauffangregistern gespeichert worden sind, und kann durch die Datensätze für die bestimmte Anzahl von Malen iterieren, um die Parameterwerte für jeden Parameter zu ändern, der jedem Datensatz zugeordnet ist. Beispielsweise kann für jeden Datensatz das Schreibmodul 306 einen Datensatz aus den Datenauffangregistern gemäß dem vordefinierten Datenformat lesen, den Parameter, der geändert werden soll, basierend auf dem Parameterbezeichner und/oder der Bitmaske bestimmen und den neuen Wert in den Speicherort für den Parameter schreiben. In einigen Ausführungsformen kann das Schreibmodul 306 Gruppen von Daten innerhalb eines einzigen Taktzyklus lesen, um Parameter, Einstellungen, Ausführungsvariable und/oder dergleichen des IC-Datenspeicherelements zu modifizieren.
  • 5 ist ein schematischer Ablaufplan, der eine Ausführungsform eines Verfahrens 500 zum Ändern von Speicherparametern darstellt. In einer Ausführungsform beginnt das Verfahren 500, und das Befehlsmodul 302 empfängt 502 einen Befehl, einen Wert eines Parameters eines IC-Datenspeicherelements zu ändern. Der Parameter kann eine Einstellung für eine oder mehrere Speicheroperationen des IC-Datenspeicherelements enthalten.
  • Das Datenmodul 304 empfängt 504 in einer weiteren Ausführungsform einen oder mehrere Datensätze mit dem Befehl. Ein Datensatz des einen oder der mehreren Datensätze kann einen Bezeichner, der einem Parameter, der geändert werden soll, zugeordnet ist, und einen neuen Wert für den Parameter enthalten. Jeder des einen oder der mehreren Datensätze wird mit der gleichen Datenrate wie der Befehl empfangen 504, z. B. einer Datenrate der Schaltbetriebsart oder DDR-Betriebsart.
  • Das Schreibmodul 306 schreibt 506 in einer Ausführungsform für jeden aus dem eine oder den mehreren Datensätzen den neuen Wert für den Parameter in einen Speicherort, der dem Parameter zugeordnet ist, und dann endet das Verfahren 500.
  • 6 ist ein schematischer Ablaufplan, der eine weitere Ausführungsform eines Verfahrens 600 zum Ändern von Speicherparametern darstellt. In einer Ausführungsform beginnt das Verfahren 600, und das Betriebsartänderungsmodul 402 empfängt einen Befehl, das IC-Datenspeicherelement in eine Test-/interne Betriebsart zu versetzen, und versetzt 602 das IC-Datenspeicherelement in die Test-/interne Betriebsart. In einer weiteren Ausführungsform empfängt 604 das Befehlsmodul 302 einen Befehl, einen Wert eines Parameters eines IC-Datenspeicherelements zu ändern.
  • In einer Ausführungsform empfängt 606 das Datenmodul 304 einen oder mehrere Datensätze mit dem Befehl mit der gleichen Datenrate wie den Befehl. In einigen Ausführungsformen wendet 608 das Schreibmodul 306 eine Bitmaske, die in einem Datensatz bereitgestellt ist, auf eine Parameterkette, die durch den Bezeichner in dem Datensatz identifiziert ist, an, um zu bestimmen, welcher Parameter der Parameterkette auf den neuen Wert, der in dem Datensatz enthalten ist, geändert werden soll.
  • In einigen Ausführungsformen schreibt 610 das Schreibmodul 306 den neuen Wert für den Parameter in einen Speicherort, der dem bestimmten Parameter zugeordnet ist. Das Schreibmodul 306 bestimmt 612, ob zusätzliche Datensätze vorhanden sind, die zum Ändern unterschiedlicher Parameter verarbeitet werden sollen. Falls zusätzliche Datensätze vorhanden sind, dann wendet 608 das Schreibmodul 306 die Bitmaske eines Datensatzes an, um einen weiteren Parameter zu bestimmen, und schreibt 610 den neuen Wert in den Parameter. Das Schreibmodul 306 führt das für jeden Datensatz aus, den das Datenmodul 304 empfangen hat, und das Verfahren 600 endet, wenn das Schreibmodul 306 bestimmt 612, dass keine zusätzlichen Datensätze zum Verarbeiten vorhanden sind.
  • 7 ist ein schematischer Ablaufplan, der eine weitere Ausführungsform eines Verfahrens 700 zum Ändern von Speicherparametern darstellt. In einer Ausführungsform beginnt das Verfahren 700, und das Datenmodul 302 empfängt 702 einen oder mehrere Datensätze, die Daten zum Ändern eines oder mehrerer Speicherparameter eines IC-Datenspeicherelements enthalten. In speziellen Ausführungsformen empfängt 702 das Datenmodul 302 den einen oder die mehreren Datensätze, während das IC-Datenspeicherelement in der Schaltbetriebsart läuft, z. B. in einer Hochgeschwindigkeitsdatenratenbetriebsart wie z. B. DDR.
  • In einer weiteren Ausführungsform bestimmt 704 das Datenmodul 302 die Anzahl von Datensätzen, die empfangen werden. In einigen Ausführungsformen formatiert 706 das Formatierungsmodul 406 die Datensätze zum Speichern in einem oder mehreren Datenauffangregistern. Das Formatierungsmodul 406 kann beispielsweise jeden Datensatz als eine Bitkette mit einem/r vordefinierten Format, Reihenfolge, Anordnung, Organisation oder dergleichen formatieren, wie z. B. als eine Bitkette mit der folgenden Reihenfolge von Datenfeldern: (Parameterbezeichner)(Bitmaske)(Neuer Wert).
  • Das Speichermodul 404 speichert 708 in einer Ausführungsform die formatierten Datensätze in einem oder mehreren Datenauffangregistern, die dem IC-Datenspeicherelement zugeordnet sind. In einer weiteren Ausführungsform empfängt 710 das Befehlsmodul 302 einen Befehl, die Parameter zu ändern. In Reaktion auf das Empfangen des Parameteränderungsbefehls liest 712 das Schreibmodul 306 einen Datensatz aus den Datenauffangregistern, bestimmt den Parameter, der geändert werden soll (unter Verwendung des Bezeichners in dem Datensatz und/oder der Bitmaske in dem Datensatz), und schreibt 714 den neuen Wert für den Parameter in dem Datensatz in den Speicherort für den Parameter.
  • Das Schreibmodul 306 bestimmt 716, ob die Anzahl von Datensätzen, die in den Speicherort für den Parameter geschrieben worden sind, gleich der Anzahl von Datensätzen ist, die das Datenmodul 304 empfangen hat und die in den Datenauffangregistern gespeichert sind. Falls nicht, liest 712 das Schreibmodul 306 den nächsten Datensatz aus den Datenauffangregistern und schreibt 714 den neuen Wert in dem Datensatz in den Speicherort für den Parameter, der dem Datensatz zugeordnet ist. Das Schreibmodul 306 führt das für jeden Datensatz aus, den das Datenmodul 304 empfangen hat, und das Verfahren 700 endet, wenn das Schreibmodul 306 bestimmt 716, dass die Anzahl von Datensätzen, die in die Speicherorte für die Parameter geschrieben worden sind, gleich der Anzahl von Datensätzen ist, die das Datenmodul 304 empfangen hat.
  • Ein Mittel zum Empfangen eines Befehls zum Ändern von Speicherparametern kann in verschiedenen Ausführungsformen ein Befehlsmodul 302, ein Parametermanagementmodul 150, eine Schnittstelle 139 einer nichtflüchtigen Speichervorrichtung, eine Steuereinheit 126 nichtflüchtiger Datenspeichermedien, einen Speicher-Client 116, eine Host-Berechnungsvorrichtung 110, einen Bus 127, ein Netz 115, eine Steuereinheit (z. B. eine Baustein-Steuereinheit 220, ein Zustandsautomat 222, eine Steuereinheit 244, ein Vorrichtungstreiber oder dergleichen), einen Erfassungsverstärker 250, eine Spannungsquelle, einen Prozessor 111, andere Logik-Hardware und/oder anderen ausführbaren Code, der auf einem computerlesbaren Speichermedium gespeichert ist, enthalten. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Empfangen eines Befehls zum Ändern von Speicherparametern enthalten.
  • Ein Mittel zum Empfangen eines oder mehrerer Datensätze zum Ändern von Speicherparametern kann ein Datenmodul 304, ein Parametermanagementmodul 150, eine Schnittstelle 139 einer nichtflüchtigen Speichervorrichtung, eine Steuereinheit 126 nichtflüchtiger Datenspeichermedien, einen Speicher-Client 116, eine Host-Berechnungsvorrichtung 110, einen Bus 127, ein Netz 115, eine Steuereinheit (z. B. eine Baustein-Steuereinheit 220, ein Zustandsautomat 222, eine Steuereinheit 244, ein Vorrichtungstreiber oder dergleichen), einen Erfassungsverstärker 250, eine Spannungsquelle, einen Prozessor 111, andere Logik-Hardware und/oder anderen ausführbaren Code, der auf einem computerlesbaren Speichermedium gespeichert ist, enthalten. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Empfangen eines oder mehrerer Datensätze zum Ändern von Speicherparametern enthalten.
  • Ein Mittel zum Schreiben neuer Werte in Speicherparameter kann in verschiedenen Ausführungsformen ein Schreibmodul 306, ein Parametermanagementmodul 150, eine Schnittstelle 139 einer nichtflüchtigen Speichervorrichtung, eine Steuereinheit 126 nichtflüchtiger Datenspeichermedien, einen Speicher-Client 116, eine Host-Berechnungsvorrichtung 110, einen Bus 127, ein Netz 115, eine Steuereinheit (z. B. eine Baustein-Steuereinheit 220, ein Zustandsautomat 222, eine Steuereinheit 244, ein Vorrichtungstreiber oder dergleichen), einen Erfassungsverstärker 250, eine Spannungsquelle, einen Prozessor 111, andere Logik-Hardware und/oder anderen ausführbaren Code, der auf einem computerlesbaren Speichermedium gespeichert ist, enthalten. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Schreiben neuer Werte in Speicherparameter enthalten.
  • Die vorliegende Offenbarung kann in anderen spezifischen Formen ausgeführt werden, ohne von ihrem Geist oder wesentlichen Eigenschaften abzuweichen. Die beschriebenen Ausführungsformen sollen in jeder Hinsicht nur als erläuternd und nicht als einschränkend betrachtet werden. Der Schutzbereich der Offenbarung ist deshalb durch die beigefügten Ansprüche und nicht durch die vorstehende Beschreibung angegeben. Alle Änderungen, die innerhalb der Bedeutung und des Äquivalenzbereichs der Ansprüche liegen, sollen in ihren Schutzbereich eingeschlossen sein.

Claims (20)

  1. Einrichtung, die enthält: ein Datenspeicherelement mit integrierter Schaltung („IC“-Datenspeicherelement), das konfiguriert ist zum: Empfangen eines Befehls, einen Wert eines Parameters, der dem IC-Datenspeicherelement zugeordnet ist, zu ändern, wobei der Parameter eine Einstellung für eine oder mehrere Speicheroperationen des IC-Datenspeicherelements enthält; Empfangen eines oder mehrerer Datensätze mit dem Befehl mit einer gleichen Datenrate wie den Befehl, wobei ein Datensatz des einen oder der mehreren Datensätze einen Bezeichner, der einem Parameter zugeordnet ist, der geändert werden soll, und einen neuen Wert für den Parameter enthält; und für jeden des einen oder der mehreren Datensätze Schreiben des neuen Werts für den Parameter in einen Speicherort, der dem Parameter zugeordnet ist.
  2. Einrichtung nach Anspruch 1, wobei das Empfangen des einen oder der mehreren Datensätze mit dem Befehl das Empfangen des einen oder der mehreren Datensätze an einem Anfang eines Taktzyklus direkt nach einem letzten Taktzyklus zum Empfangen des Befehls enthält.
  3. Einrichtung nach Anspruch 1, wobei das IC-Datenspeicherelement ferner konfiguriert ist, den einen oder die mehreren Datensätze in einem oder mehreren Datenauffangregistern zu speichern, die dem IC-Datenspeicherelement zugeordnet sind, vor dem Schreiben des neuen Werts jedes des einen oder der mehreren Datensätze in den Speicherort, der jedem Parameter zugeordnet ist, der geändert wird.
  4. Einrichtung nach Anspruch 3, wobei jeder des einen oder der mehreren empfangenen Datensätze als eine Bitkette formatiert wird, bevor er in dem einen oder den mehreren Auffangregistern gespeichert wird.
  5. Einrichtung nach Anspruch 4, wobei das IC-Datenspeicherelement ferner konfiguriert ist, einen Wert zu empfangen, der eine Anzahl von Datensätzen repräsentiert, die die Bitkette umfassen, die in dem einen oder den mehreren Auffangregistern gespeichert ist.
  6. Einrichtung nach Anspruch 3, wobei das IC-Datenspeicherelement ferner konfiguriert ist, auf den einen oder die mehreren Datensätze, die in dem einen oder den mehreren Datenauffangregistern gespeichert sind, zuzugreifen und die neuen Werte jedes des einen oder der mehreren Datensätze in den Speicherort, der jedem den Parameter zugeordnet ist, zu schreiben, ohne in eine Testbetriebsart versetzt zu sein.
  7. Einrichtung nach Anspruch 1, wobei der eine oder die mehreren Datensätze ohne eine Zeitverzögerung zwischen dem Empfang jedes Datensatzes empfangen werden.
  8. Einrichtung nach Anspruch 1, wobei der eine oder die mehreren Datensätze ohne einen oder mehrere zusätzliche Taktzyklen zwischen dem Empfang jedes Datensatzes empfangen werden.
  9. Einrichtung nach Anspruch 1, wobei ein Datensatz des einen oder der mehreren Datensätze ferner eine Bitmaske enthält, wobei die Bitmaske zum Bestimmen eines oder mehrerer Parameter aus mehreren Parametern, die auf den neuen Wert geändert werden sollten, verwendet wird.
  10. Einrichtung nach Anspruch 9, wobei die mehreren Parameter durch eine Bitkette, die dem Bezeichner zugeordnet ist, repräsentiert sind, wobei jedes Bit der Bitkette wenigstens einen Abschnitt eines Parameters repräsentiert, wobei das IC-Datenspeicherelement ferner konfiguriert ist, eine logische Operation unter Verwendung der Bitkette und der Bitmaske auszuführen, um zu bestimmen, welche Parameter, die durch die Bits der Bitkette repräsentiert sind, auf den neuen Wert geändert werden sollten.
  11. Einrichtung nach Anspruch 1, wobei das IC-Datenspeicherelement den Befehl empfängt, nachdem es in eine Testbetriebsart versetzt worden ist, wobei die Testbetriebsart eine Betriebsart des IC-Datenspeicherelements zum Empfangen von Managementbefehlen ist, die Speicheroperationen des IC-Datenspeicherelements zugeordnet sind.
  12. System, das enthält: ein nichtflüchtiges Datenspeichermedium; und eine Steuereinheit, die konfiguriert ist zum: Empfangen mehrerer Datentupel zum Ändern von Werten von Speicheroperationseinstellungen für das nichtflüchtige Datenspeichermedium, wobei jedes Datentupel eine Adresse für eine Gruppe von Einstellungen, eine Maske zum Identifizieren, welche Einstellung der Gruppe geändert werden soll, und einen Wert für die identifizierte Einstellung enthält, wobei die mehreren Datentupel ohne eine Verzögerung zwischen dem Empfangen jedes Datentupels aus den mehreren Datentupeln empfangen werden; und Programmieren der Werte der Datentupel in die Einstellungen für das nichtflüchtige Datenspeichermedium, die durch die Masken der Datentupel identifiziert sind.
  13. Einrichtung nach Anspruch 12, wobei die Steuereinheit ferner konfiguriert ist, die mehreren Datentupel zu empfangen nach dem Empfangen einer Anweisung, die Werte der Speicheroperationseinstellungen zu ändern.
  14. Einrichtung nach Anspruch 13, wobei das Empfangen der mehreren Tupel ohne eine Verzögerung zwischen dem Empfangen jedes Datentupels aus den mehreren Tupeln das Empfangen des einen oder der mehreren Datentupel am Anfang eines Taktzyklus direkt nach einem letzten Taktzyklus zum Empfangen der Anweisung enthält.
  15. Einrichtung nach Anspruch 13, wobei die Steuereinheit ferner konfiguriert ist, die mehreren Datentupel in einem oder Datenauffangregistern des nichtflüchtigen Datenspeichermediums zu speichern, wobei die mehreren Datentupel aus dem einen oder den mehreren Datenauffangregistern in Reaktion auf das Ausführen der Anweisung, die Werte der Speicheroperationseinstellungen zu ändern, gelesen werden.
  16. Einrichtung nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist, jedes aus den mehreren Datentupeln vor dem Speichern der Datentupel in dem einen oder den mehreren Datenauffangregistern in ein vorbestimmtes Datenformat zu formatieren.
  17. Einrichtung nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist, auf die mehreren Datentupel, die in dem einen oder den mehreren Datenauffangregistern gespeichert sind, zuzugreifen und die Werte jedes der mehreren Datentupel für die Speicheroperationseinstellungen zu programmieren, ohne in eine Managementbetriebsart versetzt zu sein.
  18. Einrichtung nach Anspruch 12, wobei die Einstellungsgruppe durch eine Bitkette repräsentiert ist, so dass jedes Bit der Bitkette eine andere Einstellung der Einstellungsgruppe repräsentiert, wobei die Steuereinheit ferner konfiguriert ist, die Maske auf die Bitkette anzuwenden, um zu bestimmen, welcher Einstellungswert für jedes Datentupel der mehreren Datentupel geändert werden soll.
  19. Einrichtung nach Anspruch 12, wobei die Steuereinheit ferner konfiguriert ist, eine Anweisung zu empfangen, das nichtflüchtige Datenspeichermedium in eine Managementbetriebsart zu versetzen, wobei die Managementbetriebsart eine Betriebsart des nichtflüchtigen Datenspeichermediums zum Ändern der Speicheroperationseinstellungen des nichtflüchtigen Datenspeichermediums enthält.
  20. Einrichtung, die enthält: Mittel zum Lesen innerhalb eines einzigen Taktzyklus von Gruppen von Daten zum Modifizieren einer oder mehrerer Ausführungsvariablen einer nichtflüchtigen Speichervorrichtung aus einem oder mehreren Datenauffangregistern der nichtflüchtigen Speichervorrichtung, wobei die Ausführungsvariablen einer oder mehreren Funktionen der nichtflüchtigen Speichervorrichtung zugeordnet sind; Mittel zum Identifizieren der Ausführungsvariablen der nichtflüchtigen Speichervorrichtung, die modifiziert werden sollen, gemäß Bezeichnern innerhalb der Gruppen von Daten; und Mittel zum Modifizieren der identifizierten Ausführungsvariablen auf andere Werte, die innerhalb der Gruppen von Daten bereitgestellt sind.
DE102018105651.6A 2017-05-18 2018-03-12 Änderung von Speicherparametern Ceased DE102018105651A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/598,936 2017-05-18
US15/598,936 US10014056B1 (en) 2017-05-18 2017-05-18 Changing storage parameters

Publications (1)

Publication Number Publication Date
DE102018105651A1 true DE102018105651A1 (de) 2018-11-22

Family

ID=62684249

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018105651.6A Ceased DE102018105651A1 (de) 2017-05-18 2018-03-12 Änderung von Speicherparametern

Country Status (4)

Country Link
US (1) US10014056B1 (de)
KR (1) KR102087495B1 (de)
CN (1) CN108958646B (de)
DE (1) DE102018105651A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10481816B2 (en) * 2017-10-18 2019-11-19 Western Digital Technologies, Inc. Dynamically assigning data latches
KR102450296B1 (ko) * 2017-12-26 2022-10-04 삼성전자주식회사 동기식 및 비동기식 혼합 방식의 디지털 인터페이스를 포함하는 장치, 이를 포함하는 디지털 처리 시스템, 및 이들에 의해 수행되는 디지털 처리 방법
KR20200060155A (ko) * 2018-11-22 2020-05-29 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10832789B1 (en) * 2019-06-13 2020-11-10 Western Digital Technologies, Inc. System countermeasure for read operation during TLC program suspend causing ADL data reset with XDL data
KR20210012825A (ko) 2019-07-26 2021-02-03 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11138107B2 (en) * 2020-02-20 2021-10-05 Micron Technology, Inc. Modifying subsets of memory bank operating parameters
US10971215B1 (en) 2020-02-24 2021-04-06 Western Digital Technologies, Inc. Dynamically adjust data transfer speed for non-volatile memory die interfaces
CN114281609A (zh) * 2020-09-27 2022-04-05 长鑫存储技术有限公司 参数设置方法、装置、系统以及存储介质
US11984174B2 (en) * 2021-03-02 2024-05-14 Micron Technology, Inc. Accelerating configuration updates for memory devices

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317646B1 (en) * 1997-03-19 2001-11-13 Fadal Machining Centers, Inc. CNC machine having interactive control of corner tolerance that is programmed to vary with the corner angle
US7308524B2 (en) * 2003-01-13 2007-12-11 Silicon Pipe, Inc Memory chain
US7082490B2 (en) * 2003-10-20 2006-07-25 Atmel Corporation Method and system for enhancing the endurance of memory cells
US7158421B2 (en) * 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
JP4702628B2 (ja) * 2006-07-27 2011-06-15 ソニー株式会社 電子機器、情報処理方法、およびプログラム
US8493388B2 (en) * 2006-08-09 2013-07-23 Siemens Medical Solutions Usa, Inc. Modular volume rendering using visual programming
US7831742B2 (en) 2007-08-10 2010-11-09 Qimonda Ag Method and device for enumeration
US8130079B2 (en) 2007-08-15 2012-03-06 At&T Intellectual Property I, L.P. Methods, systems, and products for discovering electronic devices
WO2009028729A2 (en) * 2007-08-31 2009-03-05 Panasonic Corporation Communication apparatus and method
US7913033B2 (en) 2007-10-09 2011-03-22 Micron Technology, Inc. Non-volatile memory device having assignable network identification
US8022853B2 (en) * 2009-11-04 2011-09-20 Renesas Electronics America, Inc. Transparent multiplexing of analog-to-digital converters
US8711023B2 (en) * 2009-11-04 2014-04-29 Renesas Electronics America, Inc. Analog-to-digital converter control using signal objects
US8908518B1 (en) * 2010-05-20 2014-12-09 Arris Enterprises, Inc. Service class ID for multimedia streams over IP networks
WO2012050934A2 (en) 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
US20120221767A1 (en) * 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
CN102813977B (zh) * 2011-06-06 2016-04-06 西诺医药有限责任公司 提供可定制编程许可的医用泵
KR101391352B1 (ko) * 2011-12-19 2014-05-07 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
US9501942B2 (en) * 2012-10-09 2016-11-22 Kc Holdings I Personalized avatar responsive to user physical state and context
US8942725B2 (en) * 2012-12-14 2015-01-27 Apple Inc. Location determination using a state space estimator
US9294821B2 (en) * 2013-01-28 2016-03-22 Morega Systems Inc. Scrubbing noise remover and methods for use therewith
US9424079B2 (en) * 2013-06-27 2016-08-23 Microsoft Technology Licensing, Llc Iteration support in a heterogeneous dataflow engine
US9245590B2 (en) 2014-02-28 2016-01-26 Winbond Electronics Corporation Stacked die flash memory device with serial peripheral interface
US20160180953A1 (en) * 2014-12-22 2016-06-23 Sandisk Technologies Inc. Predicting memory data loss based on temperature accelerated stress time
JP6342351B2 (ja) 2015-03-02 2018-06-13 東芝メモリ株式会社 ストレージシステム
US9496043B1 (en) * 2015-06-24 2016-11-15 International Business Machines Corporation Dynamically optimizing flash data retention or endurance based on data write frequency
US10162660B2 (en) * 2015-12-03 2018-12-25 International Business Machines Corporation Application-level processor parameter management

Also Published As

Publication number Publication date
CN108958646A (zh) 2018-12-07
US10014056B1 (en) 2018-07-03
CN108958646B (zh) 2022-06-14
KR102087495B1 (ko) 2020-03-10
KR20180127175A (ko) 2018-11-28

Similar Documents

Publication Publication Date Title
DE102018105651A1 (de) Änderung von Speicherparametern
US10649910B2 (en) Persistent memory for key-value storage
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
US9519575B2 (en) Conditional iteration for a non-volatile device
US20190294333A1 (en) Log-based storage for different data types in non-volatile memory
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
US9519647B2 (en) Data expiry in a non-volatile device
US11030156B2 (en) Key-value store with partial data access
US10481837B2 (en) Data storage device and method for operating data storage device with efficient trimming operations
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102017104158A1 (de) Gültigkeitsverfolgung für garbage collection
US20140281307A1 (en) Handling snapshot information for a storage device
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
US11397669B2 (en) Data storage device and non-volatile memory control method
DE112017005782T5 (de) Warteschlange für Speichervorgänge
US10360155B1 (en) Multi-tier memory management
DE112014003152T5 (de) Systeme und Verfahren für atomare Speicheroperationen
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
US11307979B2 (en) Data storage device and non-volatile memory control method
DE102010006148A1 (de) Verfahren zum Reagieren auf einen Befehl zum Löschen einer Datei und Datenspeichervorrichtung
DE102022101609A1 (de) Sehr kleine zonenunterstützung für speicherungsvorrichtungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final