DE112016002305B4 - Reduktion der Schreibverstärkung in einem Objektspeicher - Google Patents

Reduktion der Schreibverstärkung in einem Objektspeicher Download PDF

Info

Publication number
DE112016002305B4
DE112016002305B4 DE112016002305.7T DE112016002305T DE112016002305B4 DE 112016002305 B4 DE112016002305 B4 DE 112016002305B4 DE 112016002305 T DE112016002305 T DE 112016002305T DE 112016002305 B4 DE112016002305 B4 DE 112016002305B4
Authority
DE
Germany
Prior art keywords
data object
data
attributes
tiered
attribute
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.)
Active
Application number
DE112016002305.7T
Other languages
English (en)
Other versions
DE112016002305T5 (de
Inventor
Tomy Ammuthan Cheru
Brian W. O'Krafka
Allen Samuels
Manavalan KRISHNAN
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 DE112016002305T5 publication Critical patent/DE112016002305T5/de
Application granted granted Critical
Publication of DE112016002305B4 publication Critical patent/DE112016002305B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Verfahren (500) zum Verwalten eines Speichersystems (100) mit einem oder mehreren Speichervorrichtungen (120), wobei das Verfahren umfasst:Empfangen (506) einer Anforderung, in einer gestuften Datenstruktur (300-2) auf ein Datenobjekt (320) und ein oder mehrere Attribute (316a, 316b) des Datenobjektes zuzugreifen, wobei die gestufte Datenstruktur in dem Speichersystem gespeichert ist, wobei die Anforderung einen ersten Schlüsselwert, der dem Datenobjekt entspricht und einen oder mehrere jeweilige zweite Schlüsselwerte, die jedem des einen oder der mehreren Attribute des Datenobjektes entsprechen, aufweist;Verarbeiten (518) der Zugriffsanforderung, was folgendes umfasst:Erzeugen (520) eines oder mehrerer modifizierter Schlüsselwerte (322a, 322b) für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Anteil des ersten Schlüsselwertes, wobei das Erzeugen des einen oder der mehreren modifizierten Schlüsselwerte ein Kombinieren von Elementen des ersten Schlüsselwert mit dem einen oder den mehreren zweiten Schlüsselwerten einschließt;Zugreifen (524) auf eine Mehrzahl von Baumeinträgen (324a, 324b, 324c) in einem oder mehreren Blattknoten (306-1, ..., 306-m) der gestuften Datenstruktur,wobei die Mehrzahl von Baumeinträgen einen Datenobjekteintrag (324a), der den ersten Schlüsselwert (310) und einen Bezug (312) auf das Datenobjekt einschließt, und einen oder mehrere Attributeinträge (324b, 324c) aufweist, wobei jeder Attributeintrag ein jeweiliges Attribut (316a, 316b) des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwert (316a, 316b), der dem jeweiligen Attribut entspricht, einschließt; undZugreifen auf das Datenobjekt (320) in einem Datenknoten (318) der gestuften Datenstruktur und Zugreifen auf das eine oder die mehreren Attribute (316a, 316b) des Datenobjekts von dem einen oder den mehreren Blattknoten (306-1, ... 306-m).

Description

  • Technisches Gebiet
  • Die offenbarten Ausführungsformen betreffen allgemein Speichersysteme und insbesondere Systeme zum Speichern von Schlüssel-/Wert-Paaren in einer nichtflüchtigen Speichervorrichtung.
  • Hintergrund
  • Halbleiterspeichervorrichtungen einschließlich Flash-Speicher, verwenden typischerweise Speicherzellen, um Daten als einen elektrischen Wert wie z.B. eine elektrische Ladung oder Spannung zu speichern. Eine Flash-Speicher-Zelle weist zum Beispiel einen Transistor mit einem Floating Gate auf, das verwendet wird, um eine Ladung zu speichern, die repräsentativ für einen Datenwert ist. Flash-Speicher ist eine nichtflüchtige Datenspeichervorrichtung, die elektrische gelöscht und neu programmiert werden kann. Allgemeiner sichert nichtflüchtiger Speicher (z.B. sowohl Flash-Speicher als auch andere Typen von nichtflüchtigem Speicher, die unter Verwendung irgendeiner von einer Vielfalt von Technologien implementiert werden) gespeicherte Information auch dann, wenn er nicht angeschaltet ist, im Gegensatz zu flüchtigem Speicher, der Energie benötigt, um die gespeicherte Information aufrechtzuerhalten.
  • Nichtflüchtige Speichersysteme werden oft verwendet, um einen Datenbestand von Information zu speichern, wie z.B. einen Datenbestand, in dem Datenobjekte und ihre Attribute gespeichert werden Der Datenbestand wird typischerweise als eine gestufte Datenstruktur organisiert und gespeichert, zum Beispiel eine Baumdatenstruktur (z.B. einem B-Baum) mit Knoten, in denen Datenobjekte, Pointer auf Datenobjekte und Attribute (manchmal Metadaten genannt) gespeichert werden. Wenn ein Objekt und N Attribute des Objektes auf die gestufte Datenstruktur geschrieben werden, zum Beispiel in Reaktion auf einen Host-Computer-Befehl, würden es typischerweise N+2 Knoten der Datenstruktur (angenommen, das Datenobjekt kann in seiner Gesamtheit in einen einzelnen Knoten geschrieben werden) benötigen, aktualisiert und daher neu beschrieben zu werden, wobei die gesamte Menge von Daten, die geschrieben werden soll, typischerweise weniger als die Gesamtkapazität der zwei (2) Knoten sein würde. Als ein Ergebnis gibt es eine „Schreibverstärkung“, die in der Ordnung von (N+2)/X ist, wobei X die Gesamtmenge von Daten ist, die in Einheiten von Knoten geschrieben werden sollen.
  • US 2003 / 0 229 627 A1 betrifft eine objektorientierte Abfrage-Ausführungs-Datenstruktur.
  • Zusammenfassung
  • Bereitgestellt werden ein Verfahren zum Verwalten eines Speichersystems, ein Host-System, ein Speichersystem und ein nicht transitorisches Computer-lesbares Speichermedium mit den Merkmalen der unabhängigen Ansprüche; abhängige Ansprüche betreffen bevorzugte Ausführungsformen.
  • Verschiedene Ausführungsformen von Systemen, Verfahren und Vorrichtungen innerhalb des Umfangs der angehängten Anspruche weisen jeweils mehrere Aspekte auf, von denen kein einzelner allein für die Attribute, die hierin beschrieben sind, verantwortlich ist. Ohne den Umfang der angehängten Ansprüche zu beschränken, wird man nach dem Berücksichtigen dieser Offenbarung und insbesondere nach dem Berücksichtigen des Abschnittes „detaillierte Beschreibung“ verstehen, wie die Aspekte von verschiedenen Ausführungsformen verwendet werden, um die Schreibverstärkung in einem Objektspeicher zu reduzieren. In einigen Ausführungsformen umfasst ein Verfahren zum Verwalten eines Speichersystems mit einem oder mehreren Speichervorrichtungen das Verarbeiten einer Anforderung (z.B. lesen oder schreiben), auf ein Datenobjekt zuzugreifen durch Erzeugen eines oder mehrerer modifizierter Schlüssel für ein oder mehrere Attribute des Datenobjektes, Zugreifen auf eine Mehrzahl von Baumeinträgen in einem oder mehreren Blattknoten einer gestuften Datenstruktur (z.B. gespeichert in einer oder mehreren Speichervorrichtungen) und Zugreifen auf das Datenobjekt in einem Datenknoten der gestuften Datenstruktur.
  • Kurze Beschreibung der Zeichnungen
  • Damit die vorliegende Erfindung in größerem Detail verstanden werden kann, kann eine speziellere Beschreibung durch Bezugnahme auf die Merkmale und verschiedenen Ausführungsformen erhalten werden, von denen einige in den angehängten Zeichnungen beschrieben werden. Die angehängten Zeichnungen stellen jedoch bloß die relevanteren Merkmale der vorliegenden Erfindung dar und sind daher nicht als beschränkend zu berücksichtigen, da die Beschreibung andere wirksame Merkmale erlaubt.
    • 1 ist ein Blockdiagramm, das eine Implementierung eines Datenspeichersystems in Übereinstimmung mit einigen Ausführungsformen darstellt.
    • 2A ist ein Blockdiagramm, das eine Host-Berechnungsvorrichtung in Übereinstimmung mit einigen Ausführungsformen darstellt.
    • 2B ist ein Blockdiagramm, das ein Speicher-Management-Modul einer nichtflüchtigen Speichersteuereinheit in Übereinstimmung mit einigen Ausführungsformen darstellt.
    • 3a und 3B sind konzeptionelle Diagramme einer gestuften Datenstruktur in Übereinstimmung mit einigen Ausführungsformen.
    • 4A ist ein konzeptionelles Flussdiagramm einer reduzierten Schreibverstärkungs-Schreiboperation in Übereinstimmung mit einigen Ausführungsformen.
    • 4AB ist ein konzeptionelles Flussdiagramm einer Leseoperation, die mit der reduzierten Schreibverstärkungs-Schreiboperation aus 4A kompatibel ist, in Übereinstimmung mit einigen Ausführungsformen.
    • 5A-5C stellen eine Flussdiagramm-Repräsentation eines Verfahrens zur Verwaltung eines Speichersystems in Übereinstimmung mit einigen Ausführungsformen dar.
  • In Übereinstimmung mit der üblichen Praxis können die verschiedenen Merkmale in den Zeichnungen nicht maßstabsgetreu gezeichnet sein. Entsprechend können die Dimensionen der verschiedenen Merkmale zufällig zur Klarheit gestreckt oder reduziert sein. Zusätzlich können einige der Zeichnungen nicht sämtliche der Komponenten eines gegebenen Systems, Verfahrens oder einer gegebenen Vorrichtung darstellen. Schließlich können ähnliche Referenznummern verwendet werden, um ähnliche Merkmale durch die Beschreibung und Figuren zu bezeichnen.
  • Detaillierte Beschreibung
  • Nichtflüchtige Speichersysteme werden oft verwendet, um einen Datenbestand von Information zu speichern, wie z.B. einen Datenbestand, in dem Datenobjekte und ihre Attribute gespeichert sind. Der Datenbestand wird typischerweise als eine gestufte Datenstruktur organisiert und gespeichert, zum Beispiel eine Baumdatenstruktur (z.B. ein B-Baum) mit Knoten, in denen Datenobjekte, Pointer auf die Datenobjekte und Attribute (manchmal Metadaten genannt) gespeichert werden. Wie es detaillierter unten beschrieben ist, kann das Speichern eines Datenobjektes und seiner assoziierten Attribute in der gestuften Datenstruktur in signifikanter Schreibverstärkung resultieren, was wiederum die Nutzungsdauer der Speichervorrichtungen senken kann, in denen der Datenbestand gespeichert wird. Die verschiedenen Implementierungen, die hierin beschrieben werden, weisen Systeme, Verfahren und/oder Vorrichtungen auf, die verwendet werden, um eine Schreibverstärkung in einem Objektspeicher zu reduzieren, in dem Datenobjekte und assoziierte Attribute gespeichert werden.
  • (A1) Spezifischer umfasst in einigen Ausführungsformen ein Verfahren zum Verwalten eines Speichersystems mit einem oder mehreren Speichervorrichtungen das Empfangen einer Anforderung, in einer gestuften Datenstruktur auf ein Datenobjekt und ein oder mehrere Attribute des Datenobjektes zuzugreifen und die Zugriffsanforderung zu verarbeiten. Die gestufte Datenstruktur wird in dem Speichersystem gespeichert und die Anforderung weist einen ersten Schlüsselwert, der dem Datenobjekt entspricht und einen oder mehrere jeweiligen zweiten Schlüsselwerten, die jedem des einen oder der mehreren Attribute des Datenobjektes entsprechen, auf. Das Verarbeiten der Zugriffsanforderung umfasst das Erzeugen eines oder mehrerer modifizierter Schlüsselwerte für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Abschnitt des ersten Schlüsselwertes, das Zugreifen auf eine Mehrzahl von Baumeinträgen in einem oder mehreren Blattknoten der gestuften Datenstruktur und das Zugreifen auf das Datenobjekt in einem Datenknoten der gestuften Datenstruktur. Ferner weist die Mehrzahl von zugegriffenen Baumeinträgen einen Datenobjekteintrag, der den ersten Schlüsselwert und einen Bezug auf das Datenobjekt einschließt, und einen oder mehrere Attributeinträge auf, wobei jeder Attributeintrag ein jeweiliges Attribut des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwert, der dem jeweiligen Attribut entspricht, einschließt.
  • (A2) In einigen Ausführungsformen des Verfahrens von A1 umfasst das Erzeugen des einen oder der mehreren Schlüsselwerte für das eine oder die mehreren Attribute das Voranstellen zumindest eines Anteils des ersten Schlüsselwertes vor jeden des einen oder der mehreren jeweiligen zweiten Schlüsselwerte.
  • (A3) In einigen Ausführungsformen des Verfahrens von A1 oder A2 umfassen der Datenobjekteintrag und ein oder mehrere Attributeinträge in Übereinstimmung mit dem ersten Schlüsselwert und dem einen oder den mehreren modifizierten Schlüsselwerten einen zusammenhängenden Satz von Baumeinträgen in der gestuften Datenstruktur.
  • (A4) In einigen Ausführungsformen des Verfahrens von A3 wird der zusammenhängende Satz von Baumeinträgen in einem einzelnen Blattknoten der gestuften Datenstruktur gespeichert und das Zugreifen umfasst nur zwei I-/0-Operationen, umfassend eine erste I-/O-Operation, um auf den einzelnen Blattknoten von einem nichtflüchtigen Speicher des Speichersystems zuzugreifen und eine zweite 1-/O-Operation, um auf den Datenknoten von dem nichtflüchtigen Speicher des Speichersystems zuzugreifen.
  • (A5) In einigen Ausführungsformen des Verfahrens nach irgendeinem von A1-A4, umfasst die Anforderung zuzugreifen, einen Lesebefehl, um von der gestuften Datenstruktur das Datenobjekt und das eine oder die mehreren Attribute des Datenobjektes zu lesen.
  • (A6) In einigen Ausführungsformen des Verfahren von A5, weist das Datenobjekt, wie es in dem Speichersystem gespeichert ist, kodierte Daten auf; und das Verfahren umfasst das Dekodieren des Datenobjektes, das von der gestuften Datenstruktur gelesen wird und das Bereitstellen des dekodierten Datenobjektes an einen Anforderer.
  • (A7) In einigen Ausführungsformen des Verfahrens nach irgendeinem von A1-A4, umfasst die Anforderung zuzugreifen, einen Schreibbefehl, um auf die gestufte Datenstruktur das Datenobjekt und das eine oder die mehreren Attribute des Datenobjektes zu schreiben.
  • (A8) In einigen Ausführungsformen des Verfahrens von A7, umfassen die Zugriffsoperationen zwei I-/O-Operationen, umfassend eine erste I-/O-Operation, um auf den nichtflüchtigen Speicher des Speichersystems ein einzelnes Knotenblatt zu schreiben, das den Datenobjekteintrag und das eine und die mehreren Attributeinträge aufweist und eine zweite 1-/O-Operation, um auf den nichtflüchtigen Speicher des Speichersystems den Datenknoten zu schreiben.
  • (A9) In einigen Ausführungsformen des Verfahrens nach irgend einem von A1-A8 weist die gestufte Datenstruktur einen Baum von Knoten auf, der Nicht-Blatt-Knoten, Blattknoten und Datenknoten aufweist und zumindest die Blattknoten und Datenknoten sind in dem nichtflüchtigen Speicher des Speichersystems gespeichert.
  • (A10) In einigen Ausführungsformen des Verfahrens von A10 wird das Verfahren von einem Host-System durchgeführt, das getrennt von dem Speichersystem ist und zumindest die Nicht-Blatt-Knoten sind in einem flüchtigen Speicher des Host-Systems gespeichert.
  • (A11) Gemäß einem anderen Aspekt weist ein Host-System eine Schnittstelle zum operativen Koppeln an ein Speichersystem mit einer oder mehreren Speichervorrichtungen, einer oder mehreren Hardware-Prozessoren und einem Speicher, der ein oder mehrere Programme speichert, auf. Das eine oder die mehreren Programme bewirken, wenn sie auf dem einen oder den mehreren Prozessoren ausgeführt werden, dass das Host-System Operationen durchführt, die das Empfangen einer Anforderung umfassen, um in einer gestuften Datenstruktur, die in dem Speichersystem gespeichert ist, auf ein Datenobjekt und ein oder mehrere Attribute des Datenobjektes zuzugreifen, wobei die Anforderung einen ersten Schlüsselwert aufweist, der dem Datenobjekt entspricht und einen oder mehrere jeweilige zweite Schlüsselwerte, die jedem des einen oder der mehreren Attribute des Datenobjektes entsprechen. Die Operationen, die aufgrund der Ausführung des einen oder der mehreren Programme durch den einen oder die mehreren Prozessoren durchgeführt werden, umfassen ferner das Erzeugen eines oder mehrerer modifizierter Schlüsselwerte für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Anteil des ersten Schlüsselwertes; und das Zugreifen auf einen Datenknoten in der gestuften Datenstruktur, der das Datenobjekt und eine Mehrzahl von Baumeinträgen in einem oder mehreren Blattknoten speichert, wobei die Mehrzahl von Baumeinträgen einen Datenobjekteintrag, der den ersten Schlüsselwert und einen Bezug auf das Datenobjekt einschließt, und einen oder mehrere Attributeinträge aufweist, wobei jeder Attributeintrag ein jeweiliges Attribut des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwert, der dem jeweiligen Attribut entspricht, einschließt.
  • (A12) In einigen Ausführungsformen des Host-Systems von A11 ist das Host-System ferner konfiguriert, um in Übereinstimmung mit dem Verfahren nach irgendeinem von A2 bis A10 zu operieren.
  • Gemäß einem anderen Aspekt weist ein Speichersystem eine Schnittstelle zum operativen Koppeln an ein Speichersystem mit einem oder mehreren Speichervorrichtungen, einem oder mehreren Hardware-Prozessoren und einem Steuereinheitsspeicher, der ein oder mehrere Programme speichert, auf. Das eine oder die mehreren Programme bewirken, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, dass das Speichersystem Operationen durchführt, die das Empfangen einer Anforderung von dem Host-System umfassen, in einer gestuften Datenstruktur, die in dem Speichersystem gespeichert ist, auf ein Datenobjekt und ein oder mehrere Attribute des Datenobjektes zuzugreifen, wobei die Anforderung einen ersten Schlüsselwert aufweist, der dem Datenobjekt und einem oder mehreren jeweiligen zweiten Schlüsselwerten entspricht, die jedem des einen oder der mehreren Attribute des Datenobjektes entsprechen. Die Operationen, die aufgrund der Ausführung des einen oder der mehreren Programme von dem einen oder den mehreren Prozessoren durchgeführt werden, umfassen ferner das Erzeugen eines oder mehrere modifizierter Schlüsselwerte für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Anteil des ersten Schlüsselwertes; und das Zugreifen auf einen Datenknoten in der gestuften Datenstruktur, der das Datenobjekt und eine Mehrzahl von Baumeinträgen in einem oder mehreren Blattknoten speichert, wobei die Mehrzahl von Baumeinträgen einen Datenobjekteintrag, der den ersten Schlüsselwert und einen Bezug auf das Datenobjekt einschließt, und einen oder mehrere Attributeinträge aufweist, wobei jeder Attributeintrag ein jeweiliges Attribut des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwert, der dem jeweiligen Attribut entspricht, einschließt.
  • (A14) Gemäß einem anderen Aspekt weist ein Host-System ein Mittel zum Empfangen einer Anforderung auf, um in einer gestuften Datenstruktur, die in dem Speichersystem gespeichert ist, auf ein Datenobjekt und ein oder mehr Attribute des Datenobjektes zuzugreifen, wobei die Anforderung einen ersten Schlüsselwert, der dem Datenobjekt entspricht und einen oder mehrere jeweilige zweite Schlüsselwerte, die jedem des einen oder der mehreren Attribute des Datenobjektes entsprechen, aufweist. Das Host-System weist ferner ein Mittel zum Erzeugen eines oder mehrerer modifizierter Schlüsselwerte für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Abschnitt des ersten Schlüsselwertes; und ein Mittel zum Zugreifen auf einen Datenknoten in der gestuften Datenstruktur, der das Datenobjekt und eine Mehrzahl von Baumeinträgen in einem oder mehreren Blattknoten speichert, auf, wobei die Mehrzahl von Baumeinträgen einen Datenobjekteintrag, der den ersten Schlüsselwert und einen Bezug auf das Datenobjekt einschließt, und einen oder mehrere Attributeinträge aufweist, wobei jeder Attributeintrag ein jeweiliges Attribut des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwert, der dem jeweiligen Attribut entspricht, einschließt.
  • (A15) In einigen Ausführungsformen ist das Host-System von A14 ferner konfiguriert, um in Übereinstimmung mit dem Verfahren nach einem von A2 bis A10 zu operieren.
  • (A16) Gemäß einem anderen Aspekt speichert ein Computer-lesbares Speichermedium ein oder mehrere Programme, die für die Ausführung von einem oder mehreren Prozessoren eines Host-Systems konfiguriert sind, wobei das eine oder die mehreren Programme Instruktionen zum Durchführen des Verfahrens nach einem von A1 bis A10 aufweisen.
  • Zahlreiche Details sind hierin beschrieben, um ein vollkommenes Verständnis der Beispielimplementierungen bereitzustellen, die in den begleitenden Zeichnungen dargestellt sind. Jedoch können einige Ausführungsformen ohne viele der spezifischen Details betrieben werden und der Umfang der Ansprüche ist nur von jenen Merkmalen und Aspekten beschränkt, die spezifisch in den Ansprüchen rezitiert werden.
  • Ferner sind wohlbekannte Verfahren, Komponenten und Schaltkreise nicht in erschöpfendem Detail beschrieben worden, um nicht unnötigerweise relevantere Aspekte der Implementierungen, die hierin beschrieben sind, zu verdunkeln.
  • 1 ist ein Blockdiagram, das eine Implementierung eines Datenspeichersystems 100 in Übereinstimmung mit einigen Ausführungsformen darstellt. Während einige Beispielmerkmale dargestellt werden, sind verschiedene andere Merkmale um der Kürze willen und um nicht relevante Aspekte der Beispielausführungsformen, die hierin offenbart sind, zu verdunkeln, nicht dargestellt worden. Zu diesem Zweck, als ein nichtbeschränkendes Beispiel, weist das Datenspeichersystem 100 eine Speichervorrichtung 120 (auch manchmal als eine Informationsspeichervorrichtung oder eine Datenspeichervorrichtung oder eine Speichervorrichtung bezeichnet) auf, die eine Speichersteuereinheit 124 und ein Speichermedium 132 aufweist und in Verbindung mit einem Computersystem 110 (z.B. ein Host-System oder ein Host-Computer) verwendet wird oder ein solches aufweist. In einigen Ausführungsformen ist das Speichermedium 132 eine einzelne Flash-Speicher-Vorrichtung, während in anderen Ausführungsformen das Speichermedium 132 eine Mehrzahl von Flash-Speicher-Vorrichtungen aufweist. In einigen Ausführungsformen ist das Speichermedium 132 ein NAND-Typ-Flash-Speicher oder NOR-Typ-Flash-Speicher. In einigen Ausführungsformen umfasst das Speichermedium 132 eine oder mehrere dreidimensionale (3D) Speichervorrichtungen. Ferner ist in einigen Ausführungsformen die Speichersteuereinheit 124 eine Solid-State-Drive- (SSD) Steuereinheit. Jedoch können andere Typen von Speichermedien in Übereinstimmung mit Aspekten einer breiten Vielfalt von Ausführungsformen (z.B. PCRAM, ReRAM, STT-RAM, usw.) aufgewiesen werden. In einigen Ausführungsformen weist eine Flash-Speicher-Vorrichtung einen oder mehrere Flash-Speicher-Rohchips, ein oder mehrere Flash-Speicher-Einheiten, ein oder mehrere Flash-Speicher-Kanäle oder dergleichen auf. In einigen Ausführungsformen kann das Datenspeichersystem 100 eine oder mehrere Speichervorrichtungen 120 enthalten.
  • Das Computersystem 110 ist an die Speichersteuereinheit 124 durch Datenverbindungen 101 gekoppelt. Jedoch weist in einigen Ausführungsformen das Computersystem 110 die Speichersteuereinheit 124 oder einen Abschnitt der Speichersteuereinheit 124 als eine Komponente und/oder als ein Untersystem auf. Zum Beispiel ist in einigen Ausführungsformen etwas oder sämtliches der Funktionalität der Speichersteuereinheit 124 durch Software implementiert, die auf einem Computersystem 110 ausgeführt wird. Das Computersystem 110 kann jede geeignete Computervorrichtung sein, wie z.B. ein Computer, ein Laptop-Computer, eine Tablet-Vorrichtung, ein Netbook, ein Internet-Kiosk, ein Personal Digital Assistant, ein Mobiltelephon, ein Smartphone, eine Gaming-Vorrichtung, ein Computer-Server oder jede andere Berechnungsvorrichtung. Das Computersystem 110 wird manchmal ein Host, ein Host-System, ein Client, oder ein Client-System genannt. In einigen Ausführungsformen ist das Computersystem 110 ein Serversystem wie z.B. ein Serversystem in einem Datenzentrum. In einigen Ausführungsformen weist das Computersystem 110 einen oder mehrere Prozessoren, einen oder mehrere Typen von Speicher, ein Display und/oder andere Nutzerschnittstellenkomponenten wie z.B. eine Tastatur, ein Touch-Screen-Display, eine Maus, ein Touchpad, eine Digitalkamera und/oder irgendeine Anzahl ergänzender I-/O-Vorrichtungen auf, um Funktionalität zu dem Computersystem 110 hinzuzufügen. In einigen Ausführungsformen weist das Computersystem 110 kein Display und andere Nutzerschnittstellenkomponenten auf.
  • Das Speichermedium 132 ist an die Speichersteuereinheit 124 durch Verbindungen 103 gekoppelt. Die Verbindungen 103 werden manchmal Datenverbindungen genannt, aber typischerweise transportieren sie Befehle zusätzlich zu Daten und optional transportieren sie Metadaten, Fehlerkorrekturinformation und/oder andere Information zusätzlich zu Datenwerten, die in dem Speichermedium 132 gespeichert werden sollen und Datenwerten, die von dem Speichermedium 132 gelesen werden. In einigen Ausführungsformen werden jedoch eine Speichersteuereinheit 124 und ein Speichermedium 132 in derselben Vorrichtung (d.h. eine integrierte Vorrichtung) als Komponenten davon aufgewiesen. Darüber hinaus sind in einigen Ausführungsformen die Speichersteuereinheit 124 und das Speichermedium 132 in einer Host-Vorrichtung (z.B. einem Computersystem 110) eingebettet wie z.B. einer mobilen Vorrichtung, einem Tablet, einem anderen Computer oder einer Computer-gesteuerten Vorrichtung und die Verfahren, die hierin beschrieben sind, werden zumindest zum Teil von der eingebetteten Speichersteuereinheit durchgeführt. Das Speichermedium 132 kann irgendeine Anzahl (d.h. eins oder mehr) von Speichervorrichtungen (z.B. NVM 134-1, NVM 134-2 bis NVM 134-n) aufweisen, wobei sie ohne Beschränkung nichtflüchtige Halbleitervorrichtungen wie z.B. Flash-Speicher-Vorrichtung(en) aufweist. Zum Beispiel können Flash-Speicher Vorrichtung(en) konfiguriert sein für Unternehmensspeicher, der geeignet ist für Anwendungen wie z.B. Cloud-Computing, für Datenbestandsanwendungen, primären und/oder sekundären Speicher oder zum Aufnehmen von Daten, die in dem sekundären Speicher gespeichert sind (oder gespeichert werden sollen) in den sekundären Speicher als Cache-Speicher, wie z.B. Festplatten. Zusätzlich oder alternativ können Flash-Speicher Vorrichtung (en) auch konfiguriert sein für relativ kleinere skalierte Anwendungen wie z.B. persönliche Flash-Laufwerke oder Festplatten-Ersetzungen für persönliche, Laptop- und Tablet-Computer.
  • Speichervorrichtungen (NVM 134-1, NVM 134-2, usw.) des Speichermediums 132 weisen adressierbare und individuell auswählbare Blöcke auf wie z.B. einen auswählbaren Anteil eines Speichermediums 136 (auch hierin bezeichnet als ausgewählter Anteil 136). In einigen Ausführungsformen sind die individuell auswählbaren Blöcke (manchmal Löschblocke genannt) die minimal großen löschbaren Einheiten in einer Flash-Speicher-Vorrichtung. Mit anderen Worten enthält jeder Block die minimale Anzahl von Speicherzellen, die gleichzeitig gelöscht werden können. Jeder Block wird normalerweise weiter in eine Mehrzahl von Seiten und/oder Wortleitungen unterteilt, wobei jede Seite oder Wortleitung typischerweise ein Beispiel für den kleinsten individuell zugreifbaren (lesbaren und schreibbaren) Anteil in einem Block ist. In einigen Ausführungsformen (z.B. unter Verwendung einiger Typen von Flash-Speicher) ist die kleinste individuell zugreifbare Einheit eines Datensatzes jedoch ein Sektor, der eine Untereinheit einer Seite ist. Das heißt, ein Block weist eine Mehrzahl von Seiten auf, wobei jede Seite eine Mehrzahl von Sektoren enthält und jeder Sektor ist die minimale Einheit von Daten zum Schreiben und Lesen von Daten auf und von der Flash-Speicher-Vorrichtung.
  • In einigen Ausführungsformen weist eine Speichersteuereinheit 124 ein Management-Modul 121, eine Host-Schnittstelle 129, eine Speichermediumschnittstelle 128 und zusätzliche Modul(e) 125 auf. Die Speichersteuereinheit 124 kann verschiedene zusätzliche Merkmale aufweisen, die um der Kürze willen nicht dargestellt worden sind und um nicht relevante Merkmale der Beispielausführungsformen, die hierin offenbart sind, zu verdunkeln und eine andere Anordnung von Merkmalen kann möglich sein. Die Host-Schnittstelle 129 stellt eine Schnittstelle zum Computersystem 110 durch Datenverbindungen 101 bereit. Ähnlich stellt die Speichermediumschnittstelle 128 eine Schnittstelle zum Speichermedium 132 durch die Verbindungen 103 bereit. In einigen Ausführungsformen weist die Speichermediumschnittstelle 128 eine Lese- und Schreib-Schaltung auf, die eine Schaltung aufweist, die fähig ist, Lesesignale zu dem Speichermedium 132 (z.B. Leseschwellwertspannungen für NAND-Typ-Flash-Speicher) bereitzustellen.
  • In einigen Ausführungsformen weist das Management-Modul 121 eine oder mehrere Verarbeitungseinheiten 122 (manchmal auch Prozessoren, Hardware-Prozessoren, CPUs oder dergleichen genannt) auf, die konfiguriert sind, um Instruktion in einem oder mehreren Programmen (z.B. Management-Modul 121) auszuführen. In einigen Ausführungsformen werden die eine oder die mehreren CPUs 122-2 von einer oder mehreren Komponenten darinnen geteilt und in manchen Fällen jenseits der Funktion der Speichersteuereinheit 124. Das Management-Modul 121 wird an die Host-Schnittstelle 129, zusätzliche Modul(e) 125 und die Speichermediumschnittstelle 128 gekoppelt, um den Betrieb dieser Komponenten zu koordinieren. In einigen Ausführungsformen sind ein oder mehrere Module des Management-Modus 121 in dem Computersystem 110 implementiert, wie es detaillierter unten diskutiert wird.
  • Zusätzliche Modul(e) 125 sind an die Speichermediumschnittstelle 128, die Host-Schnittstelle 129 und das Management-Modul 121 gekoppelt. Als ein Beispiel können zusätzliche Modul(e) 125 ein Fehlersteuermodul aufweisen, um die Anzahl nicht korrigierbarer Fehler zu beschränken, die unabsichtlich in die Daten während Schreibvorgängen zum Speicher oder Lesevorgängen vom Speicher eingeführt werden. In einigen Ausführungsformen weist ein Fehlersteuermodul, das in den zusätzlichen Modul(en) 125 aufgewiesen wird, einen Kodierer und einen Dekodierer auf. In einigen Asuführungsformen werden zusätzliche Modul(e) 125 in der Software durch die eine oder die mehreren CPUs 122-2 des Management-Moduls 121 ausgeführt und in anderen Ausführungsformen werden zusätzliche Modul(e) 125 insgesamt oder teilweise unter Verwendung einer Spezialzweckschaltung (z.B. um Kodier- und Dekodier-Funktionen durchzuführen) implementiert. In einigen Ausführungsformen werden zusätzliche Modul(e) 125 insgesamt oder teilweise durch Software implementiert, die auf dem Computersystem 110 ausgeführt wird.
  • In einigen Ausführungsformen wird eine Schreiboperation eingeleitet, wenn das Computersystem (Host) 110 einen oder mehrere Host-Schreib-Befehle (z.B. über die Datenverbindung 101 oder alternativ eine separate Steuerleitung oder einen Bus) an die Speichersteuereinheit 124 sendet. Als Reaktion sendet die Speichersteuereinheit 124 einen oder mehrere Schreibzugriffsbefehle an das Speichermedium 132 von der Speichermediumschnittstelle 128 (z.B. über die Datenverbindungen 103 oder alternativ eine separate Steuerleitung oder einen Bus), um Daten auf physikalische Speicherorte (Adressen) innerhalb des Speichermediums 132 zu schreiben.
  • In einigen Ausführungsformen weist der Host-Schreibbefehl ein oder mehrere Schlüssel-/Wert-Paare auf, die den Daten entsprechen, die geschrieben werden sollen. In einigen Ausführungsformen erzeugt das Computersystem (Host) 110 ein oder mehrere modifizierte Schlüsselwertpaare, bevor ein Host-Schreibbefehl an die Speichersteuereinheit 124 gesendet wird. In einigen anderen Ausführungsformen erzeugt die Speichersteuereinheit 124 ein oder mehrere modifizierte Schlüsselwertpaare über das Managementmodul 121, bevor ein Schreibzugriffsbefehl zu dem Speichermedium 132 gesendet wird.
  • In einigen Ausführungsformen empfängt die Host-Schnittstelle 129 während einer Schreiboperation Daten, die in dem Speichermedium 132 von dem Computersystem 110 gespeichert werden sollen. Die Daten, die von der Host-Schnittstelle 129 empfangen werden, werden einem Kodierer (z.B. in den zusätzlichen Modul(en) 125) verfügbar gemacht, der die Daten kodiert.
  • In einigen Ausführungsformen wird eine Leseoperation eingeleitet, wenn das Computersystem (Host) einen oder mehrere Lesebefehle (z.B. über die Datenverbindungen 101 oder alternativ eine separate Steuerleitung oder einen Bus) zu der Speichersteuereinheit 124 sendet, die Daten von dem Speichermedium 132 anfordert. Die Speichersteuereinheit 124 sendet einen oder mehrere Lesezugriffsbefehle an das Speichermedium 132 von der Speichermediumschnittstelle 128 (z.B. über Datenverbindungen 103 oder alternativ eine separate Steuerleitung oder einen Bus), um Rohlesedaten in Übereinstimmung mit physikalischen Speicherorten (Adressen) innerhalb des Speichermediums 132 zu erhalten.
  • In einigen Ausführungsformen weist der Lesebefehl ein oder mehrere Schlüssel-/Wert-Paare auf, die den Daten, die gelesen werden sollen, entsprechen. In einigen Ausführungsformen erzeugt das Computersystem (Host) 110 ein oder mehrere modifizierte Schlüssel-/Wert-Paare, bevor ein Host-Lesebefehl an die Speichersteuereinheit 124 gesendet wird. In einigen anderen Ausführungsformen erzeugt die Speichersteuereinheit 124 ein oder mehrere modifizierten Schlüssel-/Wert-Paare über das Management-Modul 121, bevor ein Schreibzugriffsbefehl an das Speichermedium 132 gesendet wird.
  • In einigen Ausführungsformen stellt die Speichermediumschnittstelle 128 die Rohdaten an einen Dekodierer (z.B. in den zusätzlichen Modul(en) 125) bereit. Wenn das Dekodieren erfolgreich ist, werden die dekodierten Daten der Host-Schnittstelle 129 bereitgestellt, wobei die dekodierten Daten dem Computersystem 110 verfügbar gemacht werden oder dem Computersystem 110 als eine Reaktion auf den Host-Lesebefehl bereitgestellt werden. In einigen Ausführungsformen kann die Speichersteuereinheit 124, wenn das Dekodieren nicht erfolgreich ist, auf abhelfende Handlungen zurückgreifen oder eine Angabe einer nicht lösbaren Fehlerbedingung bereitstellen
  • Wie oben erklärt, wird ein Speichermedium (z.B. das Speichermedium 132) in eine Anzahl von adressierbaren und individuell auswählbaren Blöcken unterteilt und jeder Block wird optional (aber typischerweise) weiter in eine Mehrzahl von Seiten und/oder Wortleitungen und/oder Sektoren unterteilt. Während eine Löschung eines Speichermediums auf einer Blockbasis durchgeführt wird, wird in vielen Ausführungsformen das Lesen und Programmieren des Speichermediums auf einer kleineren Untereinheit eines Blockes durchgeführt (z.B. auf einer Seitenbasis, Wortleitungsbasis oder Sektorbasis). In einigen Ausführungsformen besteht die kleinere Untereinheit eines Blockes aus mehreren Speicherzellen (z.B. Einzel-Niveau-Zellen (SLC) oder Multi-Niveau-Zellen (MLC)). In einigen Ausführungsformen wird das Programmieren auf einer ganzen Seite durchgeführt.
  • 2A ist ein Blockdiagramm, das eine Implementierung eines Computersystems 110 in Übereinstimmung mit einigen Ausführungsformen darstellt. Das Computersystem 110 weist typischerweise einen oder mehrere Prozessoren 202 (auch manchmal CPUs, Verarbeitungseinheiten, Hardware-Prozessoren, Mikroprozessoren oder Mikrocontroller genannt) auf zum Ausführen von Modulen, Programmen und/oder Instruktionen, die in dem Speicher 206-1 gespeichert sind und dadurch Durchführen von Verarbeitungsoperationen, Speicher 206-1 und einem oder mehreren Kommunikationsbussen 208-1 zum Koppeln dieser Komponenten. Die Kommunikationsbusse 208-1 weisen typischerweise eine Schaltung (manchmal Chipsatz genannt) auf, die Systemkomponenten koppelt und Kommunikationen zwischen diesen Systemkomponenten steuert. In einigen Ausführungsformen wie z.B. jene, die durch 1 repräsentiert werden, ist das Computersystem 110 an die Speichervorrichtung 120 durch Kommunikationsbusse 208-1 und eine Speichersystemschnittstelle 205 gekoppelt. In einigen Ausführungsformen weist das Computersystem 110 eine oder mehrere Kommunikationsschnittstellen 204 zum Koppeln des Computersystems 110 an andere Systeme (nicht gezeigt) auf, z.B. über ein Kommunikationsnetzwerk wie z.B. das Internet, ein Intranet, oder Local Area Network oder dergleichen.
  • Der Speicher 206-1 weist ein Hochgeschwindigkeits-Random Access Memory wie z.B. DRAM, SRAM, SSR RAM oder andere Random Access-Solid State-Speichervorrichtungen auf und kann nichtflüchtigen Speicher aufweisen wie z.B. eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flash-Speichervorrichtungen oder andere nichtflüchtige Solid State Speichervorrichtungen. Der Speicher 206-1 weist optional eine oder mehrere Speichervorrichtungen auf, die entfernt von den Prozessor(en) angeordnet sind. Der Speicher 206-1 oder alternierend die nichtflüchtigen Speichervorrichtung(en) innerhalb des Speichers 206-1 weisen ein nichtflüchtiges Computer-lesbares Speichermedium auf. In einigen Ausführungsformen speichert der Speicher 206-1 oder das Computer-lesbare Speichermedium des Speichers 206-1 die folgenden Programme, Module und Datenstrukturen oder einen Untersatz davon:
    • • ein Betriebssystem 210, das Prozeduren zur Handhabung verschiedener grundlegender Systemdienste aufweist und zum Durchführen von Hardware-abhängigen Aufgaben;
    • • eine Anwendung 212;
    • • ein Dateisystem 214;
    • • einen Gerätetreiber 216 zum Zugreifen auf die Speichervorrichtung 120, der Folgendes aufweist:
      • ◯ ein Empfangsmodul 218-1 zum Empfangen von Host-Zugriffs-Befehlen;
      • ◯ ein Schreibmodul 220-1, das zum Schreiben von Daten auf die Speichervorrichtung 120 verwendet wird;
      • ◯ ein Lesemodul 222-1, das zum Lesen von Daten von der Speichervorrichtung 120 verwendet wird;
      • ◯ ein gestuftes Datenstrukturzugriffsmodul 224-1, das zum Zugreifen auf eine gestufte Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B) verwendet wird, das Folgendes aufweist:
        • ▪ ein modifiziertes Schlüsselwerterzeugungsmodul 226-1, das zum Erzeugen modifizierter Schlüssel-/Wert-Paare verwendet wird;
        • ▪ ein Zugriffsmodul 228-1, das zum Zugreifen auf Knoten innerhalb der gestuften Datenstruktur verwendet wird; und
    • • in den Cachespeicher aufgenommene Anteile 230-1 einer gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B), die in dem nichtflüchtigen Speichermedium der Speichervorrichtung 120 gespeichert wird.
  • Jedes der oben identifizierten Elemente kann in einem oder mehreren der vorher erwähnten Speichervorrichtungen gespeichert werden und entspricht einem Satz von Instruktionen zum Durchführen einer Funktion, die oben beschrieben wird. Die oben identifizierten Module oder Programme (d.h. Sätze von Instruktionen) brauchen nicht als separate Softwareprogramme, -prozeduren oder Module implementiert sein und daher können verschiedene Untersätze dieser Module kombiniert oder auf andere Weise in verschiedenen Ausführungsformen neu angeordnet werden. In einigen Ausführungsformen kann der Speicher 206-1 einen Untersatz der Module und Datenstrukturen speichern, die oben identifiziert werden. Darüber hinaus kann der Speicher 206-1 zusätzliche Module und Datenstrukturen speichern, die nicht oben beschrieben sind. In einigen Ausführungsformen stellen die Programme, Module und Datenstrukturen, die in dem Speicher 206-1 oder dem Computer-lesbaren Speichermedium des Speichers 206-1 gespeichert sind, Instruktionen zum Implementieren jeweiliger Operationen in den Verfahren bereit, die unten mit Bezug auf 3A-3B, 4A-4B und 5A-5C beschrieben werden.
  • Obwohl 2A ein Computersystem 110 in Übereinstimmung mit einigen Ausführungsformen zeigt, ist 2A eher als eine funktionale Beschreibung verschiedener Merkmale beabsichtigt, die in dem Computersystem 110 vorliegend sein können, als als ein strukturelles Schema der Ausführungsformen, die hierin beschrieben sind. In der Praxis und wie es von dem Fachleuten anerkannt wird, könnten die Programme, Module und Datenstrukturen, die separat gezeigt werden, kombiniert werden und einige Programme, Module und Datenstrukturen könnten getrennt werden.
  • 2B ist ein Blockdiagramm, das eine Implementierung eines Management-Moduls 121 in Übereinstimmung mit einigen Ausführungsformen darstellt. Das Management-Modul 121 weist typischerweise einen oder mehrere Prozessoren 122 (auch manchmal CPUs, Verarbeitungseinheiten, Hardware-Prozessoren, Mikroprozessoren oder Microcontroller genannt) zum Ausführen von Modulen, Programmen und/oder Instruktionen auf, die in dem Speicher 206-2 gespeichert sind, und dadurch Durchführen von Verarbeitungsoperationen, dem Speicher 206-2 und einem oder mehreren Kommunikationsbussen 208-2 zum Koppeln dieser Komponenten. Die Kommunikationsbusse 208-2 weisen optional eine Schaltung (manchmal ein Chipsatz genannt) auf, die die Systemkomponenten miteinander koppelt und die Kommunikationen zwischen ihnen steuert. In einigen Ausführungsformen wie z.B. jene, die von 1 repräsentiert werden, ist das Management-Modul 121 an das Computersystem 110 und das Speichermedium 32 durch Kommunikationsbusse 208-2 gekoppelt. Der Speicher 206-2 weist ein Hochgeschwindigkeits-Random Access Memory wie z.B. DRAM, SRAM, DDR RAM oder andere Random Access Solid State Speichervorrichtungen auf und kann nichtflüchtigen Speicher wie z.B. eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flash-Speichervorrichtungen oder andere nichtflüchtige Solid State Speichervorrichtungen aufweisen. Der Speicher 206-2 weist optional eine oder mehrere Speichervorrichtungen auf, die entfernt von den Prozessor(en) 122 angeordnet sind. Der Speicher 206-2 oder alternierend die nichtflüchtigen Speichervorrichtung(en) innerhalb des Speichers 206-2 weisen ein nichtflüchtiges Computer-lesbares Speichermedium auf. In einigen Ausführungsformen speichert der Speicher 206-2 oder das Computer-lesbare Speichermedium des Speichers 206-2 die folgenden Programme, Module und Datenstrukturen oder einen Untersatz davon:
    • • ein Schnittstellenmodul 232, das zum Kommunizieren mit anderen Komponenten wie z.B. einer Speichersteuereinheit 126 und nichtflüchtigen Speichervorrichtungen 134 verwendet wird;
    • • ein Empfangsmodul 218-2 zum Empfangen von Host-Zugriffs-Befehlen;
    • • ein Schreibmodul 220-2, das zum Schreiben auf die nichtflüchtigen Speichervorrichtungen 134 verwendet wird;
    • • ein Lesemodul 222-2, das zum Lesen von nichtflüchtigen Speichervorrichtungen 134 verwendet wird;
    • • ein gestuftes Datenstrukturzugriffsmodul 224-2, das zum Zugreifen auf eine gestufte Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B) verwendet wird, das Folgendes aufweist:
      • ◯ ein modifiziertes Schlüsselwerterzeugungsmodul 226-2, das zum Erzeugen modifizierter Schlüssel-/Wert-Paare verwendet wird;
      • ◯ ein Zugriffsmodul 228-2, das zum Zugreifen auf Knoten innerhalb einer gestuften Datenstruktur verwendet wird;
    • • in den Cachespeicher aufgenommene Anteile 230-2 einer gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B), die in dem nichtflüchtigen Speichermedium der Speichervorrichtung 120 gespeichert ist.
  • Jedes der oben identifizierten Elemente kann in einer oder mehreren der vorher erwähnten Speichervorrichtungen gespeichert werden und entspricht einem Satz von Instruktionen zum Durchführen einer Funktion, die oben beschrieben wird. Die oben identifizierten Module oder Programme (d.h. Sätze von Instruktionen) brauchen nicht als separate Softwareprogramme, Prozeduren oder Module implementiert sein und daher können verschiedene Untersätze von Modulen kombiniert oder auf andere Weise in verschiedenen Ausführungsformen neu angeordnet werden. In einigen Ausführungsformen kann der Speicher 206-2 einen Untersatz von Modulen und Datenstrukturen speichern, die oben identifiziert sind. Darüber hinaus kann der Speicher 206-2 zusätzliche Module und Datenstrukturen speichern, die nicht oben beschrieben sind. In einigen Ausführungsformen stellen die Programme, Module und Datenstrukturen, die in dem Speicher 206-2 oder dem Computer-lesbaren Speichermedium des Speichers 206-2 gespeichert sind, Instruktionen zum Implementieren jeweiliger Operationen in den Verfahren bereit, die unten mit Bezug auf die 3A-3B, 4A-4B und 5A-5C beschrieben werden.
  • Obwohl 2B das Management-Modul 121 in Übereinstimmung mit einigen Ausführungsformen zeigt, ist 2B eher als eine funktionale Beschreibung der verschiedenen Merkmale, die in dem Management-Modul 121 vorliegend sein können, beabsichtigt, als als ein strukturelles Schema der Ausführungsformen, die hierin beschrieben sind. In der Praxis und wie es von den Fachleuten anerkannt werden wird, könnten die Programme, Module und Datenstrukturen, die separat gezeigt sind, kombiniert werden und einige Programme, Module und Datenstrukturen könnten getrennt werden.
  • 3A ist ein vereinfachtes konzeptionelles Diagramm einer gestuften Datenstruktur 300-1 (z.B. ein B-Baum), ein Typ einer Datenstruktur, die üblicherweise in Datenbeständen und Dateisystemen verwendet wird. Der Wurzelknoten 302 ist der höchste Punkt innerhalb der gestuften Datenstruktur 300-1 und dient als Elternknoten für sämtliche anderen Knoten innerhalb der gestuften Datenstruktur (d.h. der Wurzelknoten weist eine Knotentiefe von Null auf). In einigen Ausführungsformen gibt es unterhalb des Wurzelknotens 302 interne (Nicht-Blatt-) Knoten 304 (z.B. Knoten 304-1 -304-n) und Blattknoten 306 (z.B. Blattknoten 306-1 - 306-m). Die internen Knoten 304 können eine variable Anzahl von Kindknoten aufweisen. Ein Kindknoten ohne eigene Kindknoten wird ein Blattknoten genannt. Einträge in die Blattknoten 306 weisen auf spezifische Datenknoten 318 oder spezifische Datenobjekte oder referenzieren diese auf eine andere Weise, wobei diese innerhalb spezifischer Datenknoten 318 gespeichert sind, die in einem nichtflüchtigen Speicher wie z.B. dem Speichermedium 132 gespeichert werden können.
  • Ein Blattknoten 306 kann eine variable Anzahl von Schlüsseln und Werten speichern. Oft werden unter diesen Schlüsseln und Werten Datenobjektschlüssel 310, Datenobjektpointer 312, Attributschlüssel 314 (z.B. Attributschlüssel 314a-314b) und Attributwerte 316 (z.B. Attributwert 316a-316b) aufgewiesen. Attributwerte werden hierin manchmal Attribute genannt für die Einfachheit der Diskussion. Darüber hinaus weist in manchen Ausführungsformen ein Attribut oder ein Attributwert sowohl einen Attributidentifikator (z.B. der einen Typ des Attributs identifiziert) und einen Wert (z.B. „Farbe, rot“, wobei „Farbe“ der Attributidentifikator und „rot“ der Wert ist) auf. Jedoch ist die vorliegende Diskussion anwendbar ohne Rücksicht auf die exakte Form oder den exakten Inhalt solcher Attribute.
  • Jedes Schlüssel-/Wert-Paar in einem Blattknoten wird hierin manchmal ein Eintrag oder ein Baumeintrag 308 (z.B. Baumeintrag 308a-308c) genannt. In einigen Ausführungsformen werden Schlüssel verwendet, um eine Entität einzigartig zu identifizieren wie z.B. ein Datenobjekt oder Attribut und daher weist der Schlüssel in jedem Baumeintrag 308 typischerweise einen anderen Wert als der Schlüssel in jedem anderen Baumeintrag auf. Datenobjektpointer 312 weisen auf Datenobjekte 320, die innerhalb eines nichtflüchtigen Speichers (z.B. weist eine Information in Datenobjektpointern 312 Adressen auf physikalische Orte innerhalb des nichtflüchtigen Speichers auf) gespeichert werden können. In einigen Ausführungsformen weisen die Attribute Quellinformation, Datuminformation oder dergleichen für besondere Datenobjekte auf. Ein Datenobjekt 320 kann irgendeine Anzahl von Attributen aufweisen, die mit dem Datenobjekt assoziiert sind.
  • Die Attributwerte 316 sind typischerweise viel kleiner als ihre assoziierten Datenobjekte. In einigen Ausführungsformen, wenn ein Attributwert einem vordefinierten Attributgrößenschwellwert genügt (z.B. kleiner als dieser ist) werden das Attribut und sein assoziierter Schlüssel als ein Baumeintrag in einem Blattknoten gespeichert und andernfalls wird der Attributwert in einem Datenknoten gespeichert, auf den durch einen jeweiligen Baumeintrag 308 in einem Blattknoten hingewiesen wird. Ähnlich werden in einigen Ausführungsformen, wenn ein Datenobjekt einem vordefinierten Objektgrößenschwellwert genügt (z.B. kleiner als dieser ist), das Objekt und sein Schlüssel als ein Baumeintrag in einem Blattknoten gespeichert. In 3A würde der Objektpointer 312 mit dem Datenobjekt selber ersetzt werden, wenn das Datenobjekt dem vordefinierten Objektgrößenschwellwert genügt.
  • Wie oben bemerkt, werden ein Attributschlüssel 314 und sein assoziierter Attributwert 316 (z.B. Attribut-Eins-Schlüssel 314a und Attribut-Eins-Wert 316a) manchmal ein Schlüssel-/Wert- Paar 308 genannt. Ein Datenobjektschlüssel 310 und sein assoziierter Datenobjektpointer 312 begründen auch ein Schlüssel-/Wert- Paar. Individuelle Schlüssel-/Wert-Paare 308 werden typischerweise zusammenhängend innerhalb des Blattknotens gespeichert, in dem sie angeordnet werden. Zum Beispiel werden Datenobjektschlüssel 310 und Datenobjektpointer 312 als Baumeintrag 308a gespeichert, was einen zusammenhängenden Anteil oder Block 321 (zusammenhängender Anteil 321a in diesem Beispiel) eines jeweiligen Blattknotens 306a (Knoten 306-1 in diesem Beispiel) besetzt. Ähnlich wird der Baumeintrag 308b in dem zusammenhängenden Anteil 321b des Blattknotens 306-3 gespeichert und der Baumeintrag 308c wird in dem zusammenhängenden Anteil 321c des Blattknotens 306-m gespeichert.
  • Wenn ein Datenobjekt 320 auf einen nichtflüchtigen Speicher wie z.B. das Speichermedium 132 innerhalb einer gestuften Datenstruktur 300-1 geschrieben wird, wird die Mehrzahl von Schlüssel-/Wert-Paaren 308, die mit dem Datenobjekt 320 assoziiert sind, oft in separaten Blattknoten 306 gespeichert. Solch eine Situation wird in 3A dargestellt, wobei der Datenobjektschlüssel 310 und Datenobjektpointer- 312, Schlüssel-/Wert- Paar 308a, das Attribut-eins-Schlüssel-314a und Attribut-Eins-Wert- 316a- Schlüssel-/Wert-Paar 308c, jeweils innerhalb separater Blattknoten 306 gespeichert werden. Solche eine Situation kann in einer Schreibverstärkung resultieren, wie oben diskutiert.
  • 3B ist ein vereinfachtes konzeptionelles Diagramm einer gestuften Datenstruktur 300-2 (z.B. ein B-Baum), ähnlich zu der gestuften Datenstruktur 300-1, die in 3A dargestellt ist. Die gestufte Datenstruktur 300-2 wird typischerweise in dem nichtflüchtigen Speichermedium 132 der Speichervorrichtung 120 gespeichert. Optional werden in den Cachespeicher aufgenommene Anteile der gestuften Datenstruktur 300-2 in einem flüchtigen Speicher (z.B. einem flüchtigen Speicheranteil des Speichers 206-1) des Computersystems 110 gespeichert, um einen effizienten Betrieb des gestuften Datenzugriffsmoduls 224-1 zu vereinfachen. Alternativ werden in den Cachespeicher aufgenommene Anteile der gestuften Datenstruktur 300-2 in einem flüchtigen Speicher (z.B. einem flüchtigen Speicheranteil des Steuereinheitenspeichers 206-2) des Management-Moduls 121 (2B) gespeichert um einen effizienten Betrieb des gestuften Datenzugriffsmoduls 224-2 zu vereinfachen.
  • Die gestufte Datenstruktur 300-2 weist dieselbe Knotenstruktur auf wie die gestufte Datenstruktur 300-1. In diesem Beispiel werden die Schlüssel-/Wert-Paare 324a-324c (hierin auch Einträge oder Baumeinträge genannt) für drei beispielhafte Datenkomponenten (d.h. Datenobjektpointer 312, Attribut-Eins-Wert 316 und Attribut-Zwei-Wert 316b) zusammenhängend innerhalb eines zusammenhängenden Anteils 321d eines einzelnen Blattknotens 316b gespeichert. In diesem Beispiel sind die Attributschlüssel 314, die in 3A gezeigt worden sind, modifiziert worden, um modifizierte Attributschlüssel 322 zu erzeugen. In einigen Ausführungsformen sind die modifizierten Attribut- 322 Schlüssel eine Kombination von Elementen von dem Datenobjektschlüssel 310 und den originalen Attributschlüsseln 314 wie es detaillierter unten erklärt wird. Ferner werdwn die Attributschlüssel modifiziert, so dass die Baumeinträge 324b-324c für die Attributwerte 316 und den Baumeintrag 324a für das assoziierte Datenobjekt 320 angrenzend zueinander in der gestuften Datenstruktur 300-2 sind oder äquivalent, so dass es keine Baumeinträge (d-h- Schlüssel-/Wert-Paare) gibt, die mit irgend welchen anderen Datenobjekten assoziiert sind, die zwischen die Baumeinträge 324a-324c für das Datenobjekt 320 dazwischenkommen. Wenn die Schlüssel-/Wert-Paare zusammenhängend innerhalb desselben Blattknotens 306 gespeichert werden, kann die Schreibverstärkung signifikant reduziert werden.
  • In einigen Umständen können die Einträge 324 für ein Datenobjekt und seine Attribute die Grenze zwischen zwei Blattknoten überlappen, wie z.B. Blattknoten 306-2 und 306-3. Dies kann zum Beispiel passieren, einfach weil der Eintrag 324a für das Datenobjekt an oder in der Nähe von dem Schwanzende eines Blattknotens ist, was nicht genügend Raum für die entsprechenden Attributeinträgen 324b, 324c lässt, damit sie in demselben Blattknoten gespeichert werden. In solchen Umständen werden die Einträge für ein Datenobjekt und seine assoziierten Attribute in einem Paar von Blattknoten der gestuften Datenstruktur 300-2 gespeichert und es muss von ihnen auf sie zugegriffen werden. Darüber hinaus wird in einigen ungewöhnlichen Umständen, in denen ein Objekt eine große Anzahl von Attributen aufweist oder die Attribute des Objektes einen genügenden Betrag eines Raumes besetzen, benötigt, dass drei oder mehr Blattknoten den Eintrag 324a für das Datenobjekt und die entsprechenden Attributeinträge speichern.
  • Die 4A-4B stellen konzeptionelle Flussdiagrammrepräsentationen von Verfahren des Verwaltens eines Datenspeichersystems in Übereinstimmung mit einigen Ausführungsformen dar. Insbesondere repräsentieren die 4A-4B vereinfachte, konzeptionelle Flussdiagramme von Schreib- und Leseoperationen zu und von einer nichtflüchtigen Speichervorrichtung wie z.B. einem Flash-Speicher, wobei eine gestufte Datenstruktur angewandt wird. Es versteht sich, dass zahlreiche Flash-Speicher-Konfigurationen ähnlich verwendet werden können.
  • 4A stellt eine konzeptionelle Flussdiagrammrepräsentation einer Schreibdatenoperation dar, die innerhalb eines Datenspeichersystems (z.B. das Datenspeichersystem 100, 1) mit einer gestuften Datenstruktur (z.B. die gestufte Datenstruktur 300-2, 3B) in Übereinstimmung mit einigen Ausführungsformen durchgeführt wird Mit Bezug auf das Datenspeichersystem 100, das in 1 dargestellt ist, wird in einigen Ausführungsformen ein Verfahren 400a an einem Computersystem (z.B. das Computersystem 110) durchgeführt. In einigen Ausführungsformen wird das Verfahren 400a durch Instruktionen geregelt, die in einem nicht-vorübergehenden Computer-lesbaren Speichermedium gespeichert werden und die von einem oder mehreren Prozessoren eines Host-Systems wie z.B. der einen oder den mehreren Verarbeitungseinheiten (CPUs) 202 des Computersystems 110 (2A) ausgeführt werden. In einigen Ausführungsformen werden die Operationen des Verfahrens 400a durch ausführbare Software (z.B. Gerätetreiber 216) durchgeführt, die innerhalb eines nicht vorübergehenden Computer-lesbaren Speichermediums wie z.B. dem Speicher 206-1 (2A) existiert.
  • In einigen Ausführungsformen werden einige der Operationen (oder alternativ Schritte) des Verfahrens 400a durch eine Speichervorrichtung (z.B. Speichervorrichtung 120) durchgeführt oder eine oder mehrere Komponenten der Speichervorrichtung (z.B. die Speichersteuereinheit 124), die operativ an die Speichervorrichtung gekoppelt ist und andere Operationen des Verfahrens 400a werden von dem Host-System durchgeführt. In einigen dieser Ausführungsformen wird das Verfahren 400a zumindest teilweise durch Instruktionen geregelt, die in einem nicht vorübergehenden Computer-lesbaren Speichermedium gespeichert sind und die von einem oder mehreren Prozessoren einer Vorrichtung ausgeführt werden wie z.B. die eine oder die mehreren Verarbeitungseinheiten (CPUs) 122 des Managementmoduls 121 (2B).
  • Zur Einfachheit der Erklärung beschreibt das Folgende das Verfahren 400a wie es von dem Host-System (z.B. von CPUs 202 und dem Gerätetreiber 216 des Computersystems 110, 2A) durchgeführt wird. Mit Bezug auf 2A werden in einigen Ausführungsformen die Operationen des Verfahrens 400a zumindest teilweise durch ein Empfangsmodul (z.B. Empfangsmodul 218-1, 2A); ein Schreibmodul (z.B. Schreibmodul 220-1, 2A); ein Lesemodul (z.B. Lesemodul 222-1); ein gestuftes Datenstrukturzugriffsmodul (z.B. gestuftes Datenzugriffsmodul 224-1); und, innerhalb des gestuften Datenstrukturzugriffsmoduls, ein modifiziertes Schlüsselerzeugungsmodul (z.B. modifiziertes Schlüsselerzeugungsmodul 226-1) und ein Zugriffsmodul (z.B. Zugriffsmodul 228-1) durchgeführt.
  • Das Verfahren 400a beginnet in einigen Ausführungsformen, wenn das Host-System (z.B. Computersystem 110, 1 oder eine Komponente davon wie z.B. Gerätetreiber 216, 2A) anfordert, auf ein Datenobjekt (z.B. Datenobjekt 320, 3B) innerhalb einer gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B) zuzugreifen. In einigen Ausführungsformen leitet 402a das Host-System eine Schreibdatenoperation ein. In einigen Ausführungsformen umfasst das Einleiten 402a der Schreibdatenoperation das Spezifizieren des Datenobjekts. In einigen Ausführungsformen umfasst das Einleiten 402a der Schreibdatenoperation das Spezifizieren des Datenobjektes und der Attribute, die mit dem Datenobjekt assoziiert sind. In einigen Ausführungsformen umfasst das Einleiten 402a der Schreibdatenoperation das Anfordern, dass das Datenobjekt in einer Datenspeichervorrichtung (z.B. Speichervorrichtung 120, 1) gespeichert wird. In einigen Ausführungsformen umfasst das Einleiten 402a der Schreibdatenoperation das Spezifizieren einer Datenspeichervorrichtung (z.B. Speichervorrichtung 120, 1), auf die das Datenobjekt geschrieben werden soll.
  • Nach dem Einleiten 402a der Schreibdatenoperation bestimmt 404 das Host-System (z.B. Computersystem 110, 1 oder eine Komponente davon, wie z.B. Gerätetreiber 216, 2A), ob ein Eintrag (z.B. Eintrag 324a, 3B) für das angeforderte Datenobjekt bereits innerhalb der gestuften Datenstruktur 300 existiert. In einigen Ausführungsformen werden Einträge für Datenobjekte in mehreren Niveaus der gestuften Datenstruktur gespeichert. In einigen Ausführungsformen wird ein Eintrag für das Datenobjekt in einem nichtflüchtigen Speichermedium (z.B. Speichermedium 132, 1) gespeichert. In einigen Ausführungsformen umfasst das Bestimmen 404, ob ein Eintrag für das Datenobjekt bereits innerhalb der gestuften Datenstruktur existiert (d.h. bereits gespeichert ist), das Lesen von Baumeinträgen innerhalb von mehreren Niveaus der gestuften Datenstruktur, um zu bestimmen, ob es einen Knoten in der gestuften Datenstruktur gibt, der einen Eintrag für das Datenobjekt enthält.
  • In einigen Ausführungsformen wird, wenn ein Eintrag für das Datenobjekt bereits innerhalb der gestuften Datenstruktur (d.h. 406-„ja“) existiert, die existierende Version des angeforderten Datenobjektes (z.B. Datenobjekt 320, 3B) ungültig gemacht 408. Dies wird typischerweise getan, weil die existierende Version des angeforderten Datenobjektes durch eine neue Version ersetzt werden wird. Jedoch wird in einigen Ausführungsformen die existierende Version des angeforderten Datenobjektes ungültig gemacht, nachdem die neue Version des Datenobjektes in der gestuften Datenstruktur gespeichert wird (z.B. nach Operation 412).
  • In einigen Ausführungsformen umfasst das Ungültigmachen 408 der existierenden Version des Datenobjektes das Löschen der existierenden Version des Datenobjektes oder alternativ das Markieren der existierenden Version des Datenobjektes als ungültig, was schließlich darin resultiert, dass die existierende Version des Datenobjektes von dem Datenknoten (z.B. Datenknoten 318, 3B) von einem nichtflüchtigen Speichermedium (z.B. Speichermedium 132, 1) gelöscht wird. In einigen Ausführungsformen umfasst das Ungültigmachen 408 der existierenden Version des Datenobjektes das Löschen der Baumeinträge (z.B. Baumeinträge 324a-324c, 3B), die mit der existierenden Version des Datenobjektes assoziiert sind, oder alternativ das Markieren jener Baumeinträge als ungültig. In noch einigen anderen Ausführungsformen, in denen alte Werte eines Objektes und/oder seine Attribute Teil eines Speicherauszugs sind, werden die alten Werte nicht gelöscht, bis der entsprechende Speicherauszug gelöscht wird. In solchen Ausführungsformen werden die alten Werte von Objekten und Objektattributen von neueren Werten der Objekte und Objektattribute durch Assoziieren von Versionsnummern mit den entsprechenden Blattknoteneinträgen unterschieden. Typischerweise wird ein Zugriff auf die alten Versionen von Objekten und Attribute während normaler Datenverarbeitungsoperationen verhindert. Darüber hinaus wird typischerweise ein Zugriff auf die alten Versionen von Objekten und Attribute nur ermöglicht, wenn vordefinierte Operationen durchgeführt werden, die mit entsprechenden Speicherauszügen assoziiert sind.
  • In einigen Ausführungsformen setzt sich das Verfahren 400a fort durch Erzeugen 410 modifizierter Schlüssel für die Attribute (z.B. Attributwerte), die mit dem angeforderten Datenobjekt (z.B. Datenobjekt 320, 3B) assoziiert sind. In einigen Ausführungsformen umfasst das Erzeugen 410 modifizierter Schlüssel für die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, das Kombinieren von Elementen des Datenobjektschlüssels (z.B. Datenobjektschlüssel 310, 3A oder 3B), der mit dem angeforderten Datenobjekt und den originalen Attributschlüsseln (z.B. Attributschlüssel 314, 3A) assoziiert ist. In einigen Ausführungsformen umfasst das Erzeugen 410 modifizierter Schlüssel für die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, das Voranstellen des Datenobjektschlüssels zu den Schlüsseln der Attribute, die mit dem angeforderten Datenobjekt assoziiert sind. In einigen anderen Ausführungsformen umfasst das Erzeugen 410 modifizierter Schlüssel für die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, das Voranstellen eines Anteils des Datenobjektschlüssels vor die Attributschlüssel der Attribute, die mit dem angeforderten Datenobjekt assoziiert sind.
  • Nach dem Erzeugen 410 modifizierter Schlüssel für die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, werden das angeforderte Datenobjekt und die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, in der gestuften Datenstruktur gespeichert 412. In einigen Ausführungsformen wird, bevor das Datenobjekt gespeichert wird, das Datenobjekt mit einer Fehlerkorrekturinformation (manchmal ein Fehlersteuercode oder ein Fehlerkorrekturcode genannt) kodiert wie z.B. Hamming, Reed-Solomon (RS); Bose Chaudhuri Hocquenghem (BCH) oder Paritätsprüfung niedriger Dichte (LDPC), um kodierte Daten (z.B. ein oder mehrere Codewörter) zu produzieren, die dann in der gestuften Datenstruktur gespeichert 412 werden.
  • In einigen Ausführungsformen wird das angeforderte Datenobjekt in einem nichtflüchtigen Speichermedium (z.B. Speichermedium 132, 1) gespeichert. In einigen Ausführungsformen wird das angeforderte Datenobjekt innerhalb eines Blattknotens (z.B. Blattknoten 306-2, 3B) gespeichert. In einigen Ausführungsformen werden die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, in einem nichtflüchtigen Speichermedium (z.B. Speichermedium 132, 1) gespeichert. In einigen Ausführungsformen umfasst das Speichern 412 des angeforderten Datenobjektes und der Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, das Kodieren des angeforderten Datenobjektes, zum Beispiel durch Hinzufügen einer Fehlerkorrrekturinformation zu dem angeforderten Datenobjekt.
  • Zusätzliche Details, die sowohl jeden der Verarbeitungsschritte für Verfahren 400a betreffen als auch Details, die zusätzliche Verarbeitungsschritte betreffen, werden unten mit Bezug auf 5A-5C präsentiert.
  • 4B stellt eine konzeptionelle Flussdiagrammrepräsentation einer Lesedatenoperation dar, die innerhalb eines Datenspeichersystems (z.B. Datenspeichersystem 100, 1) mit einer gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B) in Übereinstimmung mit einigen Ausführungsformen durchgeführt werden. Mit Bezug auf das Datenspeichersystem 100, das in 1 dargestellt wird, wird in einigen Ausführungsformen ein Verfahren 400b an einem Computersystem (z.B. Computersystem 110) durchgeführt. In einigen Ausführungsformen wird das Verfahren 400b durch Instruktionen geregelt, die in einem nicht vorübergehenden Computer-lesbaren Speichermedium gespeichert sind und die von einem oder mehreren Prozessoren eines Host-System wie z.B. der einen oder den mehreren Verarbeitungseinheiten (CPUs) 202 des Computersystems 110 (2A) ausgeführt werden. In einigen Ausführungsformen werden die Operationen des Verfahrens 400b durch ausführbare Software (z.B. Gerätetreiber 216) durchgeführt, die innerhalb eines nicht vorübergehenden Computer-lesbaren Speichermediums wie z.B. Speicher 206-1 (2A) existiert.
  • In einigen Ausführungsformen werden einige der Operationen (oder alternativ Schritte) des Verfahrens 400b von einer Speichervorrichtung (z.B. Speichervorrichtung 120) oder einer oder mehreren Komponenten der Speichervorrichtung (z.B. Speichersteuereinheit 124) durchgeführt, die operativ an die Speichervorrichtung gekoppelt sind und andere Operationen des Verfahrens 400b werden auf dem Host-System durchgeführt. In einigen dieser Ausführungsformen wird das Verfahren 400b zumindest teilweise von Instruktionen geregelt, die in einem nicht vorübergehenden Computer-lesbaren Speichermedium gespeichert werden und die von einem oder mehreren Prozessoren einer Vorrichtung ausgeführt werden, wie z.B. die eine oder mehreren Verarbeitungseinheiten (CPUs) 122 des Management-Moduls 121 (2B).
  • Zur Einfachheit der Erklärung beschreibt das Folgende das Verfahren 400b, wie es von dem Host-System (z.B. durch CPUs 202 und Gerätetreiber 216 des Computersystems 110, 2A) durchgeführt wird. Mit Bezug auf 2A werden in einigen Ausführungsformen die Operationen des Verfahrens 400b, zumindest teilweise durch ein Empfangsmodul (z.B. Empfangsmodul 218-1, 2A); ein Schreibmodul (z.B. Schreibmodul 220-1, 2A); ein Lesemodul (z.B. Lesemodul 222-1); ein gestuftes Datenstrukturzugriffsmodul (z.B. gestuftes Datenzugriffsmodul 224-1); und innerhalb des gestuften Datenstrukturzugriffsmoduls ein modifiziertes Schlüsselerzeugungsmodul (z.B. modifiziertes Schlüsselerzeugungsmodul 226-1) und ein Zugriffsmodul (z.B. Zugriffsmodul 228-1) durchgeführt.
  • Das Verfahren 400b beginnt in einigen Ausführungsformen, wenn das Host-System (z.B. Computersystem 110, 1 oder eine Komponente davon wie z.B. Gerätetreiber 216, 2A) anfordert, auf ein Datenobjekt (z.B. Datenobjekt 320, 3B) innerhalb einer gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B) zuzugreifen. In einigen Ausführungsformen leitet 402b das Host-System eine Lesedatenoperation ein. In einigen Ausführungsformen umfasst das Einleiten 402b der Lesedatenoperation das Auswählen oder Spezifizieren des Datenobjektes. In einigen Ausführungsformen umfasst das Einleiten 402b der Lesedatenoperation das Auswählen oder Spezifizieren des Datenobjektes und der Attribute, die mit dem Datenobjekt assoziiert sind. In einigen Ausführungsformen umfasst das Einleiten 402b der Lesedatenoperation das Anfordern, dass das Datenobjekt von der Datenspeichervorrichtung (z.B. Speichervorrichtung 120, 1) gelesen wird. In einigen Ausführungsformen umfasst das Einleiten 402a der Lesedatenoperation das Spezifizieren einer Datenspeichervorrichtung (z.B. Speichervorrichtung 120, 1), von der das Datenobjekt gelesen werden soll.
  • Nach dem Einleiten 402b der Lesedatenoperation werden modifizierte Schlüssel für die Attribute (z.B. Attribute 316, 3B), die mit dem angeforderten Datenobjekt (z.B. Datenobjekt 320, 3B) assoziiert sind, erzeugt 410. Das Erzeugen modifizierter Schlüssel wird oben mit Bezug auf Operation 410 des Verfahrens 400a, 4A diskutiert.
  • Das Verfahren 400b setzt sich nach der Erzeugung des modifizierten Schlüssels mit dem Zugreifen 414 auf das angeforderten Datenobjekt und die Attribute, die mit dem angeforderten Datenobjekt innerhalb der gestuften Datenstruktur assoziiert sind, fort. In einigen Ausführungsformen wird auf das Datenobjekt von einem Datenknoten (z.B. Datenknoten 318, 3B) zugegriffen und auf die Datenobjektattribute wird von einem oder mehreren Blattknoten (z.B. Blattknoten 306, 3B) zugegriffen. Darüber hinaus umfasst, wie oben mit Bezug auf 3B beschrieben, das Zugreifen auf das angeforderte Datenobjekt das Zugreifen auf einen Datenobjekteintrag (z.B. Eintrag 324a, 3B) und die assoziierten Attributeinträge (z.B. Einträge 324b und 324c, 3B) von entweder einem einzelnen Blattknoten der gestuften Datenstruktur oder einem Paar von Blattknoten der gestuften Datenstruktur und unter Verwendung eines Pointers in dem Datenobjekteintrag, um auf das Datenobjekt zuzugreifen.
  • In einigen Ausführungsformen oder in einigen Umständen (z.B. wenn das angeforderte Datenobjekt kleiner als eine vordefinierte Schwellwertgröße ist) wird auf das angeforderte Datenobjekt und die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, von einem Blattknoten (z.B. Blattknoten 306-2, 3B) zugegriffen 414. In einigen Ausführungsformen wird auf das angeforderte Datenobjekt und die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind von einem oder mehreren Datenknoten zugegriffen, die innerhalb eines nichtflüchtigen Speichermediums (z.B. Speichermedium 132, 1) gespeichert sind.
  • Nach dem Zugreifen 414 auf das angeforderte Datenobjekt von innerhalb der gestuften Datenstruktur fährt das Verfahren 400b in einigen Ausführungsformen fort, wenn das Host-System (z.B. das Computersystem 110 oder eine Komponente davon wie z.B. Gerätetreiber 216, 2A) das angeforderte Datenobjekt und die Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, liest 416 und die gelesenen Daten an den anfordernden Host sendet. In einigen Ausführungsformen umfasst das Lesen 416 des angeforderten Datenobjektes und der Attribute, die mit dem angeforderten Datenobjekt assoziiert sind, das Dekodieren, der zugegriffenen Daten, die innerhalb der gestuften Datenstruktur gespeichert sind. Zum Beispiel kann, wie oben beschrieben, das Datenobjekt mit der Fehlerkorrekturinformation kodiert worden sein, bevor es in einem Datenknoten in der gestuften Datenstruktur gespeichert worden ist und wenn das Datenobjekt von der gestuften Datenstruktur gelesen wird, wird das erhaltene Datenobjekt dekodiert, um dekodierte Daten zu produzieren, die geeignet dafür sind, um an den anfordernden Host gesendet zu werden. Der Dekodierprozess korrigiert auch sämtliche Fehler in dem angeforderten Datenobjekt, solang wie die Anzahl solcher Fehler innerhalb der Fehlerkorrekturleistung des Fehlersteuercodes ist, der verwendet wurde, um das angeforderte Datenobjekt zu kodieren.
  • Zusätzliche Details, die sowohl jeden der Verarbeitungsschritte für Verfahren 400a betreffen als auch Details, die zusätzliche Verarbeitungsschritte betreffen, werden unten mit Bezug auf 5A-5C präsentiert.
  • 5A-5C stellen eine Flussdiagrammrepräsentation eines Verfahrens des Verwaltens eines Datenspeichersystems dar, das eine gestufte Datenstruktur in Übereinstimmung mit einigen Ausführungsformen anwendet. Mit Bezug auf das Datenspeichersystem 100, das in 1 dargestellt ist, wird in einigen Ausführungsformen ein Verfahren 500 an einem Computersystem (z.B. Computersystem 110) durchgeführt. In einigen Ausführungsformen wird das Verfahren 500 durch Instruktionen geregelt, die in einem nicht vorübergehenden Computer-lesbaren Speichermedium gespeichert sind und die von einem oder mehreren Prozessoren eines Host-Systems ausgeführt werden, wie z.B. die eine oder mehreren Verarbeitungseinheiten (CPUs) des Computersystems 110 ( 2A). In einigen Ausführungsformen werden die Operationen des Verfahrens 500 durch Ausführen einer Software (z.B. Gerätetreiber 216) durchgeführt, die in einem nicht vorübergehenden Computer-lesbaren Speichermedium wie z.B. Speicher 206-1 (2A) gespeichert ist.
  • In einigen Ausführungsformen werden einige der Operationen (oder alternativ Schritte) des Verfahrens 500 von einer Speichervorrichtung (z.B. Speichervorrichtung 120) oder einer oder mehreren Komponenten der Speichervorrichtung (z.B. Speichersteuereinheit 124) durchgeführt, die operativ an die Speichervorrichtung gekoppelt sind und andere Operationen des Verfahrens 500 werden an dem Host-System durchgeführt. In einigen dieser Ausführungsformen wird das Verfahren 500 zumindest teilweise durch Instruktionen geregelt, die in einem nicht vorübergehenden Computer-lesbaren Speichermedium gespeichert sind und die von einem oder mehreren Prozessoren einer Vorrichtung ausgeführt werden wie z.B. der eine oder den mehreren Verarbeitungseinheiten (CPUs) 122 des Management-Moduls 121 (2B).
  • Zur Einfachheit der Erklärung beschreibt das Folgende das Verfahren 500, wie es von dem Host-System (z.B. durch CPUs 202 und Gerätetreiber 216 des Computersystems 110, 2A) durchgeführt wird. Mit Bezug auf 2A werden in einigen Ausführungsformen die Operationen des Verfahrens 500 zumindest teilweise durch ein Empfangsmodul (z.B. Empfangsmodul 218-1, 2A); ein Schreibmodul (z.B. Schreibmodul 220-1, 2A); ein Lesemodul (z.B. Lesemodul 222-1); ein gestuftes Datenstrukturzugriffsmodul (z.B. gestuftes Datenzugriffsmodul 224-1); und innerhalb des gestuften Datenstrukturzugriffsmoduls, ein modifiziertes Schlüsselerzeugungsmodul (z.B. modifiziertes Schlüsselerzeugungsmodul 226-1) und ein Zugriffsmodul (z.B. Zugriffsmodul 228-1) durchgeführt.
  • Mit Bezug auf 5A-5C verwaltet 502 das Host-System (z.B. Computersystem 110, oder eine Komponente davon wie z.B. ein Gerätetreiber 216, 2A) ein Speichersystem (z.B. Datenspeichersystem 100, 1) mit einer oder mehreren Speichervorrichtungen (z.B. NVM-Vorrichtungen 134 in der Speichervorrichtung 120, 1). In einigen Ausführungsformen wird das Verwalten von einem Host-System (z.B. Computersystem 110, 10) durchgeführt, das separat von dem Speichersystem ist und in den Cachespeicher aufgenommene Kopien von zumindest den Nicht-Blatt-Knoten (z.B. Knoten 304, 3B) werden in einem flüchtigem Speicher des Host-Systems gespeichert. Das Aufnehmen in den Cachespeicher (d.h. Speichern von in den Cachespeicher aufgenommenen Anteilen in einem flüchtigen Speicher) von Anteilen der gestuften Datenstruktur kann dabei helfen, die Anzahl von I-/O- Operationen zu reduzieren, die benötigt werden, um Datenzugriffsoperationen durchzuführen, zum Beispiel durch Vermeiden zusätzlicher I-/O-Operationen, um auf Nicht-Blatt-Knoten zuzugreifen.
  • Das Verfahren 500 umfasst das Empfangen einer Anforderung, um in einer gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B) auf ein Datenobjekt (z.B. Datenobjekt 320, 3B) zuzugreifen, wobei die gestufte Datenstruktur in dem Speichersystem gespeichert ist. Die Anforderung weist einen ersten Schlüsselwert (z.B. Datenobjektschlüssel 310, 3B) auf, der dem Datenobjekt und einem oder mehreren jeweiligen zweiten Schlüsselwerten (z.B. Attributschlüssel 314a, 314b, 3A) entspricht, die jedem des einen oder der mehreren Attribute des Datenobjekts entsprechen. In einigen Umständen entstammt die Anforderung, auf das Datenobjekt und seine Attribute zuzugreifen, von einer Anwendung 212, oder einem Dateisystem 214 (2A), das von einem anfordernden Host-System (z.B. Computersystem 110) ausgeführt wird.
  • In einigen Ausführungsformen umfasst 508 die Anforderung, auf das Datenobjekt und seine Attribute zuzugreifen, einen Lesebefehl, um von der gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B) das Datenobjekt und das eine oder die mehreren Attribute des Datenobjektes zu lesen. In einigen Ausführungsformen weist 510 das Datenobjekt (z.B. Datenobjekt 320, 3B), wie es in dem Speichersystem (z.B. Datenspeichersystem 100, 1) gespeichert ist, kodierte Daten auf wie oben mit Bezug auf 4A erklärt (412). In einigen Ausführungsformen umfasst das Verwalten des Speichersystems das Dekodieren 512 des Datenobjektes, das von der gestuften Datenstruktur gelesen wird und das Bereitstellen der dekodierten Daten gegenüber einem Anforderer, wie oben mit Bezug auf 4B beschrieben (416).
  • In einigen Ausführungsformen umfasst 514 die Anforderung, auf das Datenobjekt und seine Attribute zuzugreifen einen Schreibbefehl, um auf die gestufte Datenstruktur (z.B. gestufte Datenstruktur 300, 3) das Datenobjekt und das eine oder die mehreren Attribute des Datenobjektes zu schreiben.
  • In einigen Ausführungsformen weist 516 die gestufte Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B) einen Baum von Knoten auf, der Nicht-Blatt-Knoten (z.B. Knoten 304, 3B), Blattknoten (z.B. Blattknoten 306, 3B) und Datenknoten (z.B. Datenknoten 318, 3B) aufweist, wobei zumindest die Blattknoten und Datenknoten in einem nichtflüchtigen Speicher des Speichersystems (z.B. Datenspeichersystem 100, 1) gespeichert werden.
  • Das Verfahren 500 des Verwaltens eines Speichersystems (z.B. Datenspeichersystem 100, 1) umfasst ferner das Verarbeiten 518 der Zugriffsanforderung. In einigen Ausführungsformen umfasst das Verarbeiten 518 der Zugriffsanforderung das Erzeugen 520 eines oder mehrere modifizierter Schlüsselwerte (z.B. modifizierte Attributschlüssel 322, 3B) für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Anteil des ersten Schlüsselwertes. In einigen Ausführungsformen umfasst das Erzeugen des einen oder der mehreren modifizierten Schlüsselwerte für das eine oder die mehreren Attribute des Datenobjektes das Voranstellen 522 zumindest eines Anteils des ersten Schlüsselwertes vor jeden des einen oder der mehreren jeweiligen Schlüsselwerte oder wird das Erzeugen des einen oder der mehreren modifizierten Schlüsselwerte für das eine oder die mehreren Attribute des Datenobjektes durch das Voranstellen 522 zumindest eines Anteils des ersten Schlüsselwertes vor jeden des einen oder der mehreren jeweiligen Schlüsselwerte erreicht.
  • In einigen Ausführungsformen umfasst das Verarbeiten 518 der Zugriffsanforderung ferner das Zugreifen 524 auf eine Mehrzahl von Baumeinträgen (z.B. Baumeinträge 324, 3B) in einem oder mehreren Blattknoten (z.B. Blattknoten 306, 3B) der gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B), wobei die Mehrzahl von Baumeinträgen einen Datenobjekteintrag (z.B. Baumeintrag 324a, 3B) aufweisen, der den ersten Schlüsselwert (z.B. Datenobjektschlüssel 310, 3B) und einen Bezug auf das Datenobjekt (z.B. Datenobjektpointer 312, 3) und einen oder mehrere Attributeinträge (z.B. Attributeinträge 324b-324c, 3B) aufweist, wobei jeder Attributeintrag ein jeweiliges Attribut (z.B. Attributwerte 316, 3B) des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwert (z.B. modifizierte Attributschlüssel 322a-322b, 3B), der dem jeweiligen Attribut entspricht, aufweist.
  • In einigen Ausführungsformen umfasst das Verarbeiten der Zugriffsanforderung ferner das Zugreifen auf das Datenobjekt in einem Datenknoten (z.B. Datenknoten 318, 3B) der gestuften Datenstruktur (z.B. gestufte Datenstruktur 300-2, 3B). In einigen Ausführungsformen umfassen die Zugriffsoperationen 526 zwei I-/O- (Input/Output) Operationen, die eine erste I-/O-Operation, um auf den nichtflüchtigen Speicher (z.B. NVM 134, 1) des Speichersystems einen einzelnen Blattknoten (z.B. Blattknoten 306-2, 3B) zu schreiben, der den Datenobjekteintrag (z.B. Baumeintrag 324a, 3B) und den einen oder die mehreren Attributeinträge (z.B. Baumeinträge 324b-324c, 3B) aufweist und eine zweite I-/O-Operation, um auf den nichtflüchtigen Speicher des Speichersystems den Datenknoten (z.B. Datenknoten 318, 3B) zu schreiben, umfassen.
  • In einigen Ausführungsformen weisen 528 in Übereinstimmung mit dem ersten Schlüsselwert (z.B. Datenobjektschlüssel 310, 3B) und dem einen oder den mehreren modifizierten Schlüsselwerten (z.B. modifizierte Attributschlüssel 322, 3B) der Datenobjekteintrag (z.B. Datenobjekteintrag 324a, 3B) und ein oder mehrere Attributeinträge (z.B. Attributeinträge 324b-324c, 3B) einen zusammenhängenden Satz von Baumeinträgen (z.B. zusammenhängender Anteil 321d, 3B) in der gestuften Datenstruktur auf. In einigen Ausführungsformen oder in einigen Umständen (z.B. wo der Datenobjekteintrag und Attributeinträge sämtlich in demselben Baumknoten angeordnet sind) wird der zusammenhängende Satz von Baumeinträgen in einem einzelnen Blattknoten der gestuften Datenstruktur gespeichert 530; und das Zugreifen auf die Mehrzahl von Baumeinträgen und das Datenobjekt umfasst (z.B. wird erreicht unter Verwendung von) nur zwei 1-/O-Operationen, die eine erste I-/O-Operation, um auf den einzelnen Blattknoten von dem nichtflüchtigen Speicher des Speichersystems (d.h. um auf den Datenobjekteintrag und die Attributeinträge zuzugreifen) zuzugreifen und eine zweite 1-/O-Operation, um auf den Datenknoten von dem nichtflüchtigen Speicher des Speichersystems zuzugreifen, umfassen. Es wird bemerkt, dass nach der ersten I-/O-Operation eine Ortsinformation von dem Datenobjekteintrag extrahiert wird und dass Information verwendet wird, um zu bestimmen, dass auf den Datenknoten in der zweiten I-/O-Operation zugegriffen wird.
  • Wie oben bemerkt, werden in manchen Umständen der Datenobjekteintrag und die Attributeinträge in zwei Blattknoten gespeichert, in welchem Fall das Zugreifen auf das Datenobjekt und die Mehrzahl von Attributeinträgen drei I-/0-Operationen umfasst: Zwei 1-/O-Operationen, um auf die Baumeinträge zuzugreifen und eine dritte I-/O-Operation, um auf das Datenobjekt zuzugreifen. Wie oben bemerkt, werden in manchen sehr ungewöhnlichen Umständen der Datenobjekteintrag und die Attributeinträge in mehr als zwei Blattknoten gespeichert. In dem Fall umfasst das Zugreifen auf das Datenobjekt und die Mehrzahl von Attributeinträgen N+1 1-/O-Operationen, wobei N die Anzahl von Blattknoten ist, in denen der Datenobjekteintrag und die Attributeinträge gespeichert sind.
  • In einigen Ausführungsformen ist der Anteil der einen oder mehreren nichtflüchtigen Speichervorrichtungen ein Löschblock. In einigen Ausführungsformen sind die eine oder die mehreren Speichervorrichtungen Flash-Speicher-Vorrichtungen.
  • Es versteht sich, dass, obwohl die Begriffe „erster“, „zweiter“, usw. hierin verwendet werden können, um verschiedene Elemente zu beschreiben, sollten diese Elemente nicht durch diese Ausdrücke beschränkt sein. Diese Ausdrücke werden nur verwendet, um ein Element von einem anderen zu unterscheiden. Zum Beispiel könnte ein erster Kontakt als ein zweiter Kontakt bezeichnet werden und ähnlich könnte ein zweiter Kontakt als ein erster Kontakt bezeichnet werden, ohne die Bedeutung der Beschreibung zu ändern, so lange wie sämtliche Erscheinungen des „ersten Kontaktes“ konsistent bezeichnet sind und sämtliche Erscheinungen des zweiten Kontaktes konsistent bezeichnet sind. Der erste Kontakt und der zweite Kontakt sind beides Kontakte, aber sie sind nicht derselbe Kontakt.
  • Die Terminologie, die hierin verwendet wird, ist nur für den Zweck des Beschreibens besonderer Ausführungsformen und ist nicht beabsichtigt, um die Ansprüche zu beschränken. Wie in der Beschreibung der Ausführungsformen und der angehängten Ansprüche verwendet, sind die Einzahl-Formen „ein“, „eine“ und „der“, „die“, „das“ beabsichtigt, die Mehrzahlformen auch zu umfassen, es sei denn, der Kontext gibt dies klar anders an. Es versteht sich auch, dass der Begriff „und/oder“ wie hierin verwendet, sich auf sämtliche möglichen Kombinationen eines oder mehrere assoziierter gelisteter Punkte bezieht und diese umfasst. Es versteht sich ferner, dass die Begriffe „aufweisen“ und/oder „umfassen“, wenn sie in dieser Beschreibung verwendet werden, das Vorliegen der angegebenen Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten spezifizieren, aber nicht das Vorliegen oder den Zusatz eines oder mehrere anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Wie hierin verwendet, kann der Begriff „wenn“ oder „ob“ ausgelegt werden, „bei“ oder „falls“ oder „in Reaktion auf das Bestimmen“ oder „in Übereinstimmung mit einer Bestimmung“ oder „in Reaktion auf das Erfassen, dass eine angegebene vorhergehende Bedingung wahr ist“, zu bedeuten, abhängig von dem Kontext. Ähnlich kann die Formulierung „wenn es bestimmt wird [dass eine angegebene vorhergehende Bedingung wahr ist]“ oder „wenn [eine angegebene vorhergehende Bedingung wahr ist]“ ausgelegt werden, „bei der Bestimmung“ oder „in Reaktion auf das Bestimmen“ oder „in Übereinstimmung mit einer Bestimmung“ oder „bei Erfassen“ oder „in Reaktion auf das Erfassen“, dass die angegebene Bedingung wahr ist, zu bedeuten, abhängig von dem Kontext.

Claims (23)

  1. Verfahren (500) zum Verwalten eines Speichersystems (100) mit einem oder mehreren Speichervorrichtungen (120), wobei das Verfahren umfasst: Empfangen (506) einer Anforderung, in einer gestuften Datenstruktur (300-2) auf ein Datenobjekt (320) und ein oder mehrere Attribute (316a, 316b) des Datenobjektes zuzugreifen, wobei die gestufte Datenstruktur in dem Speichersystem gespeichert ist, wobei die Anforderung einen ersten Schlüsselwert, der dem Datenobjekt entspricht und einen oder mehrere jeweilige zweite Schlüsselwerte, die jedem des einen oder der mehreren Attribute des Datenobjektes entsprechen, aufweist; Verarbeiten (518) der Zugriffsanforderung, was folgendes umfasst: Erzeugen (520) eines oder mehrerer modifizierter Schlüsselwerte (322a, 322b) für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Anteil des ersten Schlüsselwertes, wobei das Erzeugen des einen oder der mehreren modifizierten Schlüsselwerte ein Kombinieren von Elementen des ersten Schlüsselwert mit dem einen oder den mehreren zweiten Schlüsselwerten einschließt; Zugreifen (524) auf eine Mehrzahl von Baumeinträgen (324a, 324b, 324c) in einem oder mehreren Blattknoten (306-1, ..., 306-m) der gestuften Datenstruktur, wobei die Mehrzahl von Baumeinträgen einen Datenobjekteintrag (324a), der den ersten Schlüsselwert (310) und einen Bezug (312) auf das Datenobjekt einschließt, und einen oder mehrere Attributeinträge (324b, 324c) aufweist, wobei jeder Attributeintrag ein jeweiliges Attribut (316a, 316b) des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwert (316a, 316b), der dem jeweiligen Attribut entspricht, einschließt; und Zugreifen auf das Datenobjekt (320) in einem Datenknoten (318) der gestuften Datenstruktur und Zugreifen auf das eine oder die mehreren Attribute (316a, 316b) des Datenobjekts von dem einen oder den mehreren Blattknoten (306-1, ... 306-m).
  2. Verfahren nach Anspruch 1, wobei das Erzeugen (520) des einen oder der mehreren modifizierten Schlüsselwerte (322a, 322b) für das eine oder die mehreren Attribute (316a, 316b) des Datenobjektes (320) das Voranstellen zumindest eines Anteils des ersten Schlüsselwertes vor bzw. zu jedem des einen oder der mehreren jeweiligen zweiten Schlüsselwerte umfasst.
  3. Verfahren nach einem der Ansprüche 1-2, wobei in Übereinstimmung mit dem ersten Schlüsselwert (310) und dem einen oder den mehreren modifizierten Schlüsselwerten (322a, 322b) der Datenobjekteintrag und der eine oder die mehreren Attributeinträge einen zusammenhängenden Satz von Baumeinträgen (324a, 324b, 324c) in der gestuften Datenstruktur aufweisen.
  4. Verfahren nach Anspruch 3, wobei: der zusammenhängende Satz von Baumeinträgen (324a, 324b, 324c) in einem einzelnen Blattknoten (306-2) der gestuften Datenstruktur gespeichert ist; und das Zugreifen nur zwei I-/O-Operationen umfasst, die eine erste I-/O-Operation, um auf den einzelnen Blattknoten von einem nichtflüchtigen Speicher des Speichersystems zuzugreifen und eine zweite 1-/O-Operation, um auf den Datenknoten von dem nichtflüchtigen Speicher des Speichersystems zuzugreifen, umfassen.
  5. Verfahren nach einem der Ansprüche 1-4, wobei die Anforderung, zuzugreifen, einen Lesebefehl umfasst, um von der gestuften Datenstruktur das Datenobjekt und das eine oder die mehreren Attribute des Datenobjektes zu lesen (508).
  6. Verfahren nach Anspruch 5, wobei: das Datenobjekt (320), wie es in dem Speichersystem gespeichert ist, kodierte Daten aufweist (510); und das Verfahren das Dekodieren des Datenobjektes, das von der gestuften Datenstruktur gelesen wird und das Bereitstellen des dekodierten Datenobjektes an einen Anforderer umfasst (512).
  7. Verfahren nach einem der Ansprüche 1-4, wobei die Anforderung, zuzugreifen, einen Schreibbefehl umfasst, um das Datenobjekt und das eine oder die mehreren Attribute des Datenobjektes auf die gestufte Datenstruktur zu schreiben (514).
  8. Verfahren nach Anspruch 7, wobei die Zugriffsoperationen zwei I-/0-Operationen umfassen, die eine erste I-/O-Operation, um auf den nichtflüchtigen Speicher des Speichersystems einen einzelnen Blattknoten (306-2) zu schreiben, der den Datenobjekteintrag (324a) und den einen oder die mehreren Attributeinträge (324b, 324c) aufweist, und eine zweite 1-/O-Operation, um auf den nichtflüchtigen Speicher des Speichersystems den Datenknoten zu schreiben, umfassen.
  9. Verfahren nach einem der Ansprüche 1-8, wobei die gestufte Datenstruktur einen Baum von Knoten aufweist, der Nicht-Blatt-Knoten (304-1, ..., 304-n), Blattknoten (306-1, ...,306-m) und Datenknoten (318) aufweist, wobei zumindest die Blattknoten und Datenknoten in einem nichtflüchtigen Speicher des Speichersystems gespeichert werden.
  10. Verfahren nach Anspruch 9, wobei das Verfahren von einem Host-System (110) durchgeführt wird, das separat von dem Speichersystem ist, und zumindest die Nicht-Blatt-Knoten in einem flüchtigen Speicher des Host-Systems gespeichert werden.
  11. Host-System (110), wobei das System aufweist: eine Schnittstelle (205) zum operativen Koppeln an ein Speichersystem mit einer oder mehreren Speichervorrichtungen (120); einen oder mehrere Hardware-Prozessoren (202); und einen Speicher (206-1), der ein oder mehrere Programme speichert, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, bewirken, dass das Host-System Operationen durchführt, die Folgendes umfassen: Empfangen einer Anforderung, um in einer gestuften Datenstruktur (300-2), die in dem Speichersystem gespeichert ist, auf ein Datenobjekt (320) und ein oder mehrere Attribute (3161, 316b) des Datenobjektes zuzugreifen, wobei die Anforderung einen ersten Schlüsselwert, der dem Datenobjekt entspricht und einen oder mehrere jeweilige zweite Schlüsselwerte, die jedem des einen oder der mehreren Attribute des Datenobjekts entsprechen, aufweist; Erzeugen eines oder mehrerer modifizierter Schlüsselwerte (322a, 322b) für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Anteil des ersten Schlüsselwertes, wobei das Erzeugen des einen oder der mehreren modifizierten Schlüsselwerte ein Kombinieren von Elementen des ersten Schlüsselwert mit dem einen oder den mehreren zweiten Schlüsselwerten einschließt; Zugreifen auf einen Datenknoten (318) in der gestuften Datenstruktur, der das Datenobjekt und eine Mehrzahl von Baumeinträgen (324a, 324b, 324c) in einem oder mehreren Blattknoten (306-1, ..., 306-m) speichert, wobei die Mehrzahl von Baumeinträgen einen Datenobjekteintrag (324a), der den ersten Schlüsselwert und einen Bezug (312) auf das Datenobjekt einschließt, und einen oder mehrere Attributeinträge (324b, 324c) aufweist, wobei jeder Attributeintrag ein jeweiliges Attribut des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwertes, der dem jeweiligen Attribut entspricht, einschließt; und Zugreifen auf das eine oder die mehreren Attribute des Datenobjekts von dem einen oder den mehreren Blattknoten.
  12. Host-System nach Anspruch 11, wobei das eine oder die mehreren Programme ein gestuftes Datenzugriffsmodul (224-1) aufweist, das den einen oder die mehreren modifizierten Schlüsselwerte (322a, 322b) für das eine oder die mehreren Attribute (316a, 316b) des Datenobjektes erzeugt.
  13. Host-System nach Anspruch 12, wobei das gestufte Datenzugriffsmodul (224-1) Instruktionen zum Zugreifen auf den Datenknoten in der gestuften Datenstruktur, der das Datenobjekt speichert, aufweist.
  14. Host-System nach Anspruch 11, wobei das Erzeugen des einen oder der mehreren modifizierten Schlüsselwerte für das eine oder die mehreren Attribute des Datenobjektes das Voranstellen zumindest eines Anteils des ersten Schlüsselwertes vor jeden des einen oder der mehreren jeweiligen zweiten Schlüsselwerte umfasst.
  15. Host-System nach Anspruch 11, wobei in Übereinstimmung mit dem ersten Schlüsselwert (310) und dem einen oder den mehreren modifizierten Schlüsselwerten (322a, 322b) der Datenobjekteintrag und der eine oder die mehreren Attributeinträge einen zusammenhängenden Satz von Baumeinträgen (324a, 324b, 324c) in der gestuften Datenstruktur aufweisen.
  16. Host-System nach Anspruch 11, das ferner konfiguriert ist, um in Übereinstimmung mit dem Verfahren nach einem der Ansprüche 2-10 zu arbeiten.
  17. Speichersystem, wobei das System Folgendes aufweist: eine Schnittstelle (129) zum operativen Koppeln an ein Host-System (100); einen oder mehrere Prozessoren (122); und einen Steuereinheitsspeicher, der ein oder mehrere Programme speichert, die, wenn sie von dem einen oder den mehrere Prozessoren ausgeführt werden, bewirken, dass das Speichersystem Operationen durchführt, die Folgendes umfassen: Empfangen einer Anforderung von dem Host-System, in einer gestuften Datenstruktur (300-2), die in dem Speichersystem gespeichert ist, auf ein Datenobjekt (320) und ein oder mehrere Attribute (316a, 316b) des Datenobjektes zuzugreifen, wobei die Anforderung einen ersten Schlüsselwert (310), der dem Datenobjekt entspricht und einen oder mehrere zweite Schlüsselwerte, die jedem des einen oder der mehreren Attribute des Datenobjektes entsprechen, umfasst; Erzeugen eines oder mehrerer modifizierter Schlüsselwerte (322a, 322b) für das eine oder die mehreren Attribute des Datenobjektes in Übereinstimmung mit zumindest einem Anteil des ersten Schlüsselwertes, wobei das Erzeugen des einen oder der mehreren modifizierten Schlüsselwerte ein Kombinieren von Elementen des ersten Schlüsselwert mit dem einen oder den mehreren zweiten Schlüsselwerten einschließt; Zugreifen auf einen Datenknoten (318) in der gestuften Datenstruktur, der das Datenobjekt und eine Mehrzahl von Baumeinträgen (324a, 324b, 324c) in einem oder mehreren Blattknoten (306-1, ..., 306-m) speichert, wobei die Mehrzahl von Baumeinträgen einen Datenobjekteintrag (324a), der den ersten Schlüsselwert und einen Bezug (312) auf das Datenobjekt einschließt, und einen oder mehrere Attributeinträge (324b, 324c) aufweist, wobei jeder Attributeintrag ein jeweiliges Attribut des einen oder der mehreren Attribute des Datenobjektes und den modifizierten Schlüsselwert, der dem jeweiligen Attribut entspricht, einschließt; und Zugreifen auf das eine oder die mehreren Attribute des Datenobjekts von dem einen oder den mehreren Blattknoten.
  18. Speichersystem nach Anspruch 17, wobei das eine oder die mehreren Programme ein gestuftes Datenzugriffsmodul (224-2) aufweisen, das den einen oder die mehreren modifizierten Schlüsselwerte (322a, 322b) für das eine oder die mehreren Attribute (316a, 316b) des Datenobjektes (320) erzeugt.
  19. Speichersystem nach Anspruch 18, wobei das gestufte Datenzugriffsmodul (224-2) Instruktionen zum Zugreifen auf den Datenknoten (318) in der gestuften Datenstruktur (300-2), der das Datenobjekt (320) speichert, aufweist.
  20. Speichersystem nach Anspruch 17, wobei das Erzeugen des einen oder der mehreren modifizierten Schlüsselwerte (322a, 322b) für das eine oder die mehreren Attribute (316a, 316b) des Datenobjektes (320) das Voranstellen zumindest eines Anteils des ersten Schlüsselwertes (310) vor jeden des einen oder der mehreren jeweiligen zweiten Schlüsselwerte umfasst.
  21. Speichersystem nach Anspruch 17, wobei in Übereinstimmung mit dem ersten Schlüsselwert (310) und dem einen oder den mehreren modifizierten Schlüsselwerten (322a, 322b) der Datenobjekteintrag und ein oder mehrere Attributeinträge einen zusammenhängenden Satz von Baumeinträgen (324a, 324b, 324c) in der gestuften Datenstruktur aufweisen.
  22. Speichersystem nach Anspruch 17, das ferner konfiguriert ist, um in Übereinstimmung mit dem Verfahren nach einem der Ansprüche 2-10 zu arbeiten.
  23. Nicht transitorisches Computer-lesbares Speichermedium, das ein oder mehrere Programme speichert, die für die Ausführung von einem oder mehreren Prozessoren eines Host-Systems konfiguriert sind, wobei das eine oder die mehreren Programme Instruktionen zum Durchführen des Verfahrens nach einem der Ansprüche 1-10 aufweisen.
DE112016002305.7T 2015-09-30 2016-06-09 Reduktion der Schreibverstärkung in einem Objektspeicher Active DE112016002305B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562234895P 2015-09-30 2015-09-30
US62/234,895 2015-09-30
US15/144,704 US10133764B2 (en) 2015-09-30 2016-05-02 Reduction of write amplification in object store
US15/144,704 2016-05-02
PCT/US2016/036720 WO2017058302A1 (en) 2015-09-30 2016-06-09 Reduction of write-amplification in object store

Publications (2)

Publication Number Publication Date
DE112016002305T5 DE112016002305T5 (de) 2018-03-08
DE112016002305B4 true DE112016002305B4 (de) 2023-11-09

Family

ID=58407339

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016002305.7T Active DE112016002305B4 (de) 2015-09-30 2016-06-09 Reduktion der Schreibverstärkung in einem Objektspeicher

Country Status (4)

Country Link
US (1) US10133764B2 (de)
CN (1) CN107710170B (de)
DE (1) DE112016002305B4 (de)
WO (1) WO2017058302A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521412B2 (en) * 2017-01-13 2019-12-31 Accenture Global Solutions Limited Complex multi-layer token apportionment stack for token assignment within multiple-tiered data structures
CN107330094B (zh) * 2017-07-05 2020-06-16 湖南大学 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法
US10824610B2 (en) * 2018-09-18 2020-11-03 Vmware, Inc. Balancing write amplification and space amplification in buffer trees
KR20210016186A (ko) * 2019-08-01 2021-02-15 삼성전자주식회사 스토리지 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
KR20220037184A (ko) 2020-09-17 2022-03-24 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 시스템의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030229627A1 (en) 2002-06-07 2003-12-11 International Business Machines Corporation Object-oriented query execution data structure

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779097B2 (en) 2000-09-07 2010-08-17 Sonic Solutions Methods and systems for use in network management of content
US7478096B2 (en) 2003-02-26 2009-01-13 Burnside Acquisition, Llc History preservation in a computer storage system
US8165969B2 (en) 2003-07-31 2012-04-24 Cisco Technology, Inc. Route optimization of services provided by one or more service providers for combined links
CN100418090C (zh) * 2005-08-31 2008-09-10 国际商业机器公司 一种存储数据的方法
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US20070174309A1 (en) 2006-01-18 2007-07-26 Pettovello Primo M Mtreeini: intermediate nodes and indexes
US9002795B2 (en) 2006-01-26 2015-04-07 Seagate Technology Llc Object-based data storage device
US7710777B1 (en) 2006-12-20 2010-05-04 Marvell International Ltd. Semi-volatile NAND flash memory
US7996642B1 (en) 2007-04-25 2011-08-09 Marvell International Ltd. Digital locked loop on channel tagged memory requests for memory optimization
KR100922389B1 (ko) 2007-07-04 2009-10-19 삼성전자주식회사 플래시 메모리를 위한 색인 스킴
JP4535117B2 (ja) 2007-11-06 2010-09-01 ソニー株式会社 メモリ装置、メモリ管理方法、およびプログラム
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8700670B2 (en) 2010-04-12 2014-04-15 Symantec Corporation Insert optimization for B+ tree data structure scalability
US8433695B2 (en) 2010-07-02 2013-04-30 Futurewei Technologies, Inc. System architecture for integrated hierarchical query processing for key/value stores
US8595451B2 (en) 2010-11-04 2013-11-26 Lsi Corporation Managing a storage cache utilizing externally assigned cache priority tags
US8868514B2 (en) 2011-01-07 2014-10-21 Microsoft Corporation Transaction support for distributed data
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
JP5788369B2 (ja) 2012-09-12 2015-09-30 株式会社東芝 メモリシステム、コンピュータシステム、およびメモリ管理方法
US8780632B2 (en) * 2012-11-09 2014-07-15 Sandisk Technologies Inc. De-duplication techniques using NAND flash based content addressable memory
US20140189211A1 (en) 2012-12-31 2014-07-03 Sandisk Enterprise Ip Llc Remapping Blocks in a Storage Device
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9727245B2 (en) 2013-03-15 2017-08-08 Avalanche Technology, Inc. Method and apparatus for de-duplication for solid state disks (SSDs)
US20150212752A1 (en) 2013-04-08 2015-07-30 Avalanche Technology, Inc. Storage system redundant array of solid state disk array
US20150378884A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)
US10558561B2 (en) * 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
WO2015047398A1 (en) 2013-09-30 2015-04-02 Hewlett-Packard Development Company, L.P. Overlays to modify data objects of source data
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9916356B2 (en) 2014-03-31 2018-03-13 Sandisk Technologies Llc Methods and systems for insert optimization of tiered data structures
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US10956050B2 (en) 2014-03-31 2021-03-23 Sandisk Enterprise Ip Llc Methods and systems for efficient non-isolated transactions
US20160357673A1 (en) 2014-04-03 2016-12-08 Agency For Science, Technology And Research Method of maintaining data consistency
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US10120618B2 (en) 2014-06-24 2018-11-06 Vmware, Inc. Systems and methods for adaptive offloading of mass storage data movement
US9720926B2 (en) 2014-08-04 2017-08-01 Cohesity, Inc. Read operations in a tree-based distributed file system
US9158681B1 (en) 2014-09-02 2015-10-13 Sandisk Technologies Inc. Process and apparatus to reduce declared capacity of a storage device by conditionally trimming
US9678832B2 (en) 2014-09-18 2017-06-13 Sandisk Technologies Llc Storage module and method for on-chip copy gather
KR20160056380A (ko) 2014-11-10 2016-05-20 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
WO2016093797A1 (en) 2014-12-09 2016-06-16 Hitachi Data Systems Corporation A system and method for providing thin-provisioned block storage with multiple data protection classes
US10261725B2 (en) 2015-04-10 2019-04-16 Toshiba Memory Corporation Storage system capable of invalidating data stored in a storage device thereof
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US10891264B2 (en) 2015-04-30 2021-01-12 Vmware, Inc. Distributed, scalable key-value store
US10303673B2 (en) 2015-05-11 2019-05-28 Apple Inc. Hierarchical data storage
US20170242785A1 (en) 2016-02-23 2017-08-24 Sandisk Technologies Llc Efficient Implementation of Optimized Host-Based Garbage Collection Strategies Using Xcopy and Arrays of Flash Devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030229627A1 (en) 2002-06-07 2003-12-11 International Business Machines Corporation Object-oriented query execution data structure

Also Published As

Publication number Publication date
DE112016002305T5 (de) 2018-03-08
US10133764B2 (en) 2018-11-20
US20170091243A1 (en) 2017-03-30
CN107710170A (zh) 2018-02-16
CN107710170B (zh) 2021-06-25
WO2017058302A1 (en) 2017-04-06

Similar Documents

Publication Publication Date Title
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102017120840B4 (de) Verfahren und Vorrichtung zur Detektion und Handhabung von Lesestörungen
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
DE102017113439A1 (de) Abbildungstabellen für Speichervorrichtungen
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102014103125A1 (de) Verfahren und Vorrichtung zum Optimieren des Log-Likelihood-Quotienten (LLR), die verwendet werden für eine nichtflüchtige Speichervorrichtung und zum Korrigieren von Fehlern in einer nichtflüchtigen Speichervorrichtung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE102011075814B4 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102020126663A1 (de) Speichervorrichtung zum Speichern von Daten basierend auf Schlüssel-Wert und Betriebsverfahren derselben
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division