DE102015117500A1 - Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe - Google Patents

Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe Download PDF

Info

Publication number
DE102015117500A1
DE102015117500A1 DE102015117500.2A DE102015117500A DE102015117500A1 DE 102015117500 A1 DE102015117500 A1 DE 102015117500A1 DE 102015117500 A DE102015117500 A DE 102015117500A DE 102015117500 A1 DE102015117500 A1 DE 102015117500A1
Authority
DE
Germany
Prior art keywords
data
workload
write
host
write cache
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.)
Withdrawn
Application number
DE102015117500.2A
Other languages
English (en)
Inventor
Steven Sprouse
Satish B Vasudeva
Rodney Brittner
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 Enterprise IP 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 Enterprise IP LLC filed Critical SanDisk Enterprise IP LLC
Publication of DE102015117500A1 publication Critical patent/DE102015117500A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Systeme, Verfahren und/oder Vorrichtungen werden verwendet, um das gemischte Random-Verhalten bei Arbeitslasten mit niedriger Queue-Tiefe in einer Speichervorrichtung zu verbessern (z. B. umfassend eine Vielzahl von nichtflüchtigen Speichereinheiten, wie z. B. eine oder mehrere Flash-Speichervorrichtungen). In einem Aspekt enthält das Verfahren (1) Unterhalten eines Schreibcaches für Schreibbefehle von einem Host, (2) Bestimmen einer Arbeitslast gemäß den Befehlen von dem Host, (3) gemäß einer Bestimmung, dass die Arbeitslast eine nichtqualifizierte Arbeitslast ist, Planen einer regelmäßigen Leerung des Schreibcaches und (4) gemäß einer Bestimmung, dass die Arbeitslast eine qualifizierte Arbeitslast ist, Planen einer optimierten Leerung des Schreibcaches.

Description

  • TECHNISCHES GEBIET
  • Die offenbarten Ausführungsformen beziehen sich generell auf Speichersysteme und besonders auf die Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe in einer Speichervorrichtung (z. B. umfassend eine oder mehrere Flash-Speichervorrichtungen).
  • HINTERGRUND
  • Halbleiter-Speichervorrichtungen, einschließlich Flash-Speicher, verwenden normalerweise Speicherzellen zum Speichern von Daten als einen elektrischen Wert, wie z. B. eine elektrische Ladung oder Spannung. Eine Flash-Speicherzelle enthält beispielsweise einen einzigen Transistor mit einem Floating-Gate (nicht angeschlossene Steuerelektrode), der zum Speichern einer Ladung verwendet wird, die einem Datenwert entspricht. Ein Flash Speicher ist eine nichtflüchtige Datenspeichervorrichtung, die elektrisch gelöscht und umprogrammiert werden kann. Noch allgemeiner hält ein nichtflüchtiger Speicher (z. B. Flash-Speicher, sowie andere Arten implementierter, nichtflüchtiger Speicher, die eine Vielzahl von Technologien einsetzen) die gespeicherten Informationen auch dann, wenn er nicht mit Strom versorgt wird, im Gegensatz zu einem flüchtigen Speicher, der zum Halten der gespeicherten Informationen Strom benötigt.
  • Da bestimmte Speicherbefehle (z. B. Lese- und/oder Schreibbefehle) innerhalb eines vordefinierten Zeitraums vervollständigt werden müssen (z. B. um Qualifizierungsanforderungen zu erfüllen), ist es wichtig, die Speichermanagementprozesse zu optimieren, um die Leistung von Speichervorrichtungen zu verbessern.
  • ZUSAMMENFASSUNG
  • Mehrere Ausführungsformen der Systeme, Verfahren und Vorrichtungen innerhalb des Geltungsbereichs der angehängten Ansprüche haben jeweils mehrere Aspekte, wovon nicht ein einziger allein für die hierin beschriebenen Attribute verantwortlich ist. Ohne den Geltungsbereich der angehängten Ansprüche einzuschränken, nach Berücksichtigung dieser Offenbarung und besonders nach Berücksichtigung des Abschnitts mit der Überschrift „Detaillierte Beschreibung” versteht man, wie die Aspekte der verschiedenen Ausführungsformen verwendet werden, um eine Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe zu ermöglichen. In einem Aspekt wird gemäß einer Bestimmung, dass eine Arbeitslast eine nichtqualifizierte Arbeitslast ist, eine regelmäßige Leerung eines Schreibcache geplant, und gemäß der Bestimmung, dass Arbeitslast eine qualifizierte Arbeitslast ist, wird eine optimierte Leerung des Schreibcaches geplant.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Damit diese Offenbarung detaillierter verstanden werden kann, kann unter Bezugnahme auf die Merkmale verschiedener Ausführungsformen, wovon einige in den angehängten Zeichnungen dargestellt werden, eine eingehende Beschreibung erhalten werden. Die angehängten Zeichnungen stellen allerdings lediglich sachdienliche Merkmale dieser Offenbarung dar und sind daher nicht als einschränkend zu betrachten, damit die Beschreibung andere tatsächliche Merkmale zulassen kann.
  • ist ein Blockschema, das eine Implementierung eines Datenspeichersystems gemäß einiger Ausführungsformen darstellt.
  • ist ein Blockschema, das eine Implementierung eines Managementmoduls gemäß einiger Ausführungsformen darstellt.
  • zeigen eine Ablaufdiagrammdarstellung eines Verfahrens zum Verwalten eines Speichersystems gemäß einiger Ausführungsformen.
  • Gemäß der üblichen Praxis sind die in den Zeichnungen dargestellten Merkmale nicht unbedingt maßstabsgerecht. Dementsprechend können die Abmessungen der verschiedenen Merkmale zur Klarheit beliebig vergrößert oder verkleinert sein. Außerdem ist es möglich, dass bestimmte Zeichnungen nicht alle Komponenten eines gegebenen Systems, Verfahrens oder einer Vorrichtung darstellen. Abschließend können gleiche Bezugszahlen verwendet werden, um in der gesamten Spezifikation und in den Zeichnungen gleiche Merkmale zu bezeichnen.
  • DETAILLIERTE BESCHREIBUNG
  • Die hierin beschriebenen verschiedenen Ausführungsformen enthalten Systeme, Verfahren, und/oder Vorrichtungen, um eine Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe zu ermöglichen. Einige Ausführungsformen enthalten Systeme, Verfahren und/oder Vorrichtungen zum Planen einer regelmäßigen Leerung eines Schreibcaches gemäß einer Bestimmung, dass eine Arbeitslast eine nichtqualifizierte Arbeitslast ist, und zum Planen einer optimierten Leerung des Schreibcaches gemäß einer Bestimmung, dass Arbeitslast eine qualifizierte Arbeitslast ist.
    • (A1) Genauer enthalten einige Ausführungsformen ein Managementverfahren eines Speichersystems. In einigen Ausführungsformen enthält das Verfahren (1) Unterhalten eines Schreibcaches für die Schreibbefehle von einem Host, mit dem eine Speichervorrichtung des Speichersystems operativ verbunden ist, die Speichervorrichtung enthaltend eine Vielzahl von nichtflüchtigen Speichereinheiten, wobei das Schreibcache Schreibbefehle vom dem Host enthält, die zur Speicherung in der Vielzahl von nichtflüchtigen Speichereinheiten gemappt, aber noch nicht in den nichtflüchtigen Speichereinheiten gespeichert sind, (2) Bestimmen einer Arbeitslast gemäß den Befehlen vom Host, mit dem die Speichervorrichtung operativ verbunden ist, (3) gemäß einer Bestimmung, dass eine Arbeitslast eine nichtqualifizierte Arbeitslast ist, Planen einer regelmäßigen Leerung des Schreibcaches, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält, und (4) gemäß einer Bestimmung, dass Arbeitslast eine qualifizierte Arbeitslast ist, Planen einer optimierten Leerung des Schreibcaches, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist.
    • (A2) In einigen Ausführungsformen des Verfahrens von A1 enthält die regelmäßige Leerung das Ansammeln ausreichender Daten von Schreibbefehlen, um die vordefinierte Datenmenge auf die eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben, und die optimierte Leerung enthält das Ansammeln ausreichender Daten von Schreibbefehlen, um das erste Vielfache von der vordefinierten Datenmenge auf die entsprechende Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben.
    • (A3) In einigen Ausführungsformen des Verfahren von einem von A1 bis A2 enthält das Verfahren nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, ferner das Ausführen von einer oder mehreren regelmäßigen Leerungen, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält.
    • (A4) In einigen Ausführungsformen des Verfahrens von A3 enthält das Ausführen der einen oder mehreren regelmäßigen Leerungen das parallele Ausführen einer Vielzahl von regelmäßigen Leerungen.
    • (A5) In einigen Ausführungsformen des Verfahrens von einem von A1 bis A4 enthält das Verfahren gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, ferner das Leeren des Schreibcaches zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten.
    • (A6) In einigen Ausführungsformen des Verfahrens von einem von A1 bis A4 enthält das Verfahren gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält, ferner das Leeren des ganzzahligen Vielfachen anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten.
    • (A7) In einigen Ausführungsformen des Verfahrens von einem von A1 bis A6 umfasst die Speichervorrichtung ein oder mehrere Flash-Speichervorrichtungen.
    • (A8) In einem anderen Aspekt enthält eine Speichervorrichtung (1) einen nichtflüchtigen Speicher (z. B. umfassend eine oder mehrere nichtflüchtige Speichervorrichtungen, wie z. B. Flash-Speichervorrichtungen), (2) einen oder mehrere Prozessoren, und (3) einen Controller-Speicher (z. B. ein nichtflüchtiger Speicher oder flüchtiger Speicher in oder verbunden mit dem Controller), der ein oder mehrere Programme speichert, die bei Ausführung durch den einen oder mehrere Prozessoren die Speichervorrichtung veranlassen, das Verhalten von jedem der hierin beschriebenen Verfahren A1 bis A7 auszuführen oder zu steuern.
    • (A10) In noch einem anderen Aspekt wird jedes der oben beschriebenen Verfahren A1 bis A7 durch eine Speichervorrichtung ausgeführt, die über Mittel zum Ausführen jedes der hierin beschriebenen Verfahren verfügt.
    • (A12) In noch einem anderen Aspekt enthält ein Speichersystem (1) ein Speichermedium (z. B. umfassend eine oder mehrere nichtflüchtige Speichervorrichtungen, wie z. B. Flash-Speichervorrichtungen), (2) einen oder mehrere Prozessoren und (3) Speicher (z. B. nichtflüchtiger Speicher oder flüchtiger Speicher im Speichersystem), der ein oder mehrere Programme speichert, die bei Ausführung durch den einen oder mehrere Prozessoren das Speichersystem veranlassen, das Verhalten von jedem der hierin beschriebenen Verfahren A1 bis A7 auszuführen oder zu steuern.
    • (A13) In noch einem anderen Aspekt enthalten einige Ausführungsformen ein nichttransitorisches computerlesbares Speichermedium, das ein oder mehrere Programme speichert, die zur Ausführung des einen oder der mehreren Programme, die Anweisungen zum Ausführen jedes der hierin beschriebenen Verfahren enthalten, durch einen oder mehrere Prozessoren einer Speichervorrichtung konfiguriert sind.
  • Hierin werden zahlreiche Details beschrieben, damit ein eingehendes Verständnis der beispielhaften Ausführungsformen, die in den begleitenden Zeichnungen dargestellt werden, zu ermöglichen. Allerdings können einige Ausführungsformen ohne viele der spezifischen Details genutzt werden, und der Geltungsbereich der Ansprüche ist nur durch jene Merkmale und Aspekte eingeschränkt, die in den Ansprüchen angegeben werden. Des Weiteren wurden gut bekannte Verfahren, Komponenten und Schaltkreise nicht ausführlich beschrieben, um die sachbezogenen Aspekte der hierin beschriebenen Ausführungsformen nicht unnötig zu verschleiern.
  • Datenspeichersysteme, einschließlich der unten beschriebenen System, setzen eine Vielzahl von Techniken ein, um einen Datenverlust zu vermeiden, der durch eine Vielzahl von Fehlermechanismen verursacht wird, einschließlich eines Fehlers des Speichermediums, Kommunikationsfehler und Fehler auf System- und Untersystemebene. Ein gemeinsames Merkmal dieser Mechanismen ist die Verwendung von Datenredundanz zum Schutz der Daten, um tatsächliche und potenzielle Datenfehler auszugleichen (z. B. Medienfehler, verlorene Daten, Übertragungsfehler, unzugängliche Daten usw.). Eine Klasse von Redundanzmechanismen ist bekannt als Fehlerkorrekturcodes (ECCs). Zahlreiche Arten von Fehlerkorrekturcodes sind gut bekannt (z. B. BCH, LDPC, Reed-Solomon usw.), wie auch zahlreiche Schemata zu deren Speicherung mit oder in Verbindung mit den Daten, die geschützt werden. Eine andere Klasse von Redundanzmechanismen sind Löschcodes (z. B. Pyramid, Fountain, teilweises MDS, lokal reparierbar, einfach regenerierend usw.)
  • Eine andere Art bzw. Ebene von Redundanzmechanismen wird normalerweise als RAID bezeichnet (Redundant Array of Independent Disks), selbst wenn das Speichermedium keine „Festplatten” im herkömmlichen Sinne sind. Es gibt zahlreiche Formen von RAID oder RAID-Schemata, die einen unterschiedlichen Datenschutzgrad bieten (z. B. RAID-1, RAID-5, RAID-6, RAID-10 usw.). Normalerweise werden in Systemen, die RAID verwenden, „Streifen” von Daten, die an vielen verschiedenen Speicherorten gespeichert sind, als Satz behandelt und mit ausreichend redundanten Daten gespeichert, dass alle Daten in einem Streifen, die bei einem teilweisen oder kompletten Ausfall eines der Speicherorte verlorengegangen sind, anhand der anderen Daten im Streifen, die möglicherweise die redundanten Daten enthalten sind, wiederhergestellt werden.
  • ist ein Blockschema, das ein Datenspeichersystem 100 gemäß einiger Ausführungsformen darstellt. Während einige beispielhafte Merkmale dargestellt werden, wurden verschiedene andere Merkmale aus Gründen der Kürze, und um sachbezogene Aspekte der hierin offenbarten, beispielhaften Ausführungsformen nicht zu verschleiern, nicht dargestellt. As nichteinschränkendes Beispiel enthält ein Datenspeichersystem 100 demensprechend eine Speichervorrichtung 120 (also manchmal bezeichnet als eine Informationspeichervorrichtung, oder eine Datenspeichervorrichtung, oder eine Speichervorrichtung), die einen Speicher-Controller 124, einen oder mehrere Controller für nichtflüchtige Speicher (NVM) 130, wie z. B. Flash-Controller, und einen nichtflüchtigen Speicher (z. B. eine oder mehrere NVM-Vorrichtungen 140, 142, wie z. B. eine oder mehrere Flash-Speichervorrichtungen) enthält, und die in Verbindung mit einem Rechnersystem 110 verwendet wird. In einigen Ausführungsformen enthält die Speichervorrichtung 120 eine einzige NVM-Vorrichtung, während die Speichervorrichtung 120 in anderen Ausführungsformen eine Vielzahl von NVM-Vorrichtungen enthält. In einigen Ausführungsformen enthalten die NVM-Vorrichtungen 140, 142 einen Flash-Speicher vom Typ NAND oder einen Flash-Speicher vom Typ NOR. Ferner sind die NVM-Controller 130 in einigen Ausführungsformen Controller für Solid-State-Laufwerk (SSD). Allerdings können gemäß den Aspekten einer großen Vielzahl von Ausführungsformen andere Arten von Speichermedien enthalten sein (z. B. PCRAM, ReRAM, STT-RAM usw.). In einigen Ausführungsformen enthält eine Flash-Speichervorrichtung einen oder mehrere Flash-Speicher-Chip, ein oder mehrere Flash-Speicherpakete, einen oder mehrere Flash-Speicherkanäle oder Ähnliches. In einigen Ausführungsformen kann ein Datenspeichersystem 100 ein oder mehrere Speichervorrichtungen 120s enthalten.
  • Ein Rechnersystem 110 ist mit dem Speicher-Controller 124 über Datenverbindungen 101 verbunden. In einigen Ausführungsformen enthält das Rechnersystem 110 allerdings einen Speicher-Controller 124, oder einen Teil des Speicher-Controllers 124 als eine Komponente und/oder ein Untersystem. Beispielsweise werden in einigen Ausführungsformen einige oder alle der Funktionen des Speicher-Controllers 124 durch die ausgeführte Software auf dem Rechnersystem 110 implementiert. Das Rechnersystem 110 kann jede geeignete Rechnervorrichtung sein, wie z. B. ein Computer, ein Laptop-Computer, ein Tablet-Gerät, ein Netbook, ein Internet Kiosk, ein persönlicher digitaler Assistent (PDA), ein Mobiltelefon, ein Smartphone, eine Spielevorrichtung, ein Computerserver oder jede andere EDV-Vorrichtung. Das Rechnersystem 110 wird manchmal als ein Host, Host-System, Client, oder Client-System bezeichnet. In einigen Ausführungsformen ist das Rechnersystem 110 ein Serversystem, wie z. B. ein Serversystem in einem Rechenzentrum. In einigen Ausführungsformen enthält das Rechnersystem 110 einen oder mehrere Prozessoren, eine oder mehrere Speicherarten, einen Bildschirm und/oder andere Benutzeroberflächenkomponenten, wie z. B. eine Tastatur, einen Touchscreen-Bildschirm, eine Maus, ein Trackpad, eine Digitalkamera und/oder jede Anzahl von ergänzenden Vorrichtungen, um Funktionen hinzuzufügen. In einigen Ausführungsformen hat das Rechnersystem 110 keinen Bildschirm und andere Benutzeroberflächenkomponenten.
  • Der eine oder die mehreren NVM-Controller 130 sind mit dem Speicher-Controller 124 über Verbindungen 103 verbunden. Die Verbindungen 103 werden manchmal als Datenverbindungen bezeichnet, aber normalerweise übertragen sie zusätzlich zu den Daten Befehle, und optional übertragen sie Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen zusätzlich zu den Datenwerten, die in den NVM-Vorrichtungen 140, 142 gespeichert werden sollen, und Datenwerte, die aus den NVM-Vorrichtungen 140, 142 ausgelesen werden. In einigen Ausführungsformen jedoch sind der Speicher-Controller 124, der eine oder die mehreren NVM-Controller 130 und die NVM-Vorrichtungen 140, 142 in derselben Vorrichtung als Komponenten davon enthalten (d. h. eine integrierte Vorrichtung). In einigen Ausführungsformen sind ferner der Speicher-Controller 124, der eine oder die mehreren NVM-Controller 130 und die NVM-Vorrichtungen 140, 142 in ein Host-Gerät (z. B. Rechnersystem 110) eingebettet, wie z. B. ein Mobilgerät, Tablet, anderer Rechner oder rechnergesteuerte Vorrichtung, und die hierin beschriebenen Verfahren werden zumindest teilweise durch den eingebetteten Speicher-Controller ausgeführt.
  • In einigen Ausführungsformen enthält die Speichervorrichtung 120 NVM-Vorrichtungen 140, 142 wie z. B. Flash-Speichervorrichtungen (z. B. NVM-Vorrichtungen 140-1 bis 140-n und NVM-Vorrichtungen 142-1 bis 142-k) und die NVM-Controller 130 (z. B. NVM-Controller 130-1 bis 130-m). Anders gesehen enthält die Speichervorrichtung 120 m Speicherkanäle, wovon jeder einen NVM-Controller 130 und eine Reihe von NVM-Vorrichtungen 140 oder 142 hat, die mit dem NVM-Controller 130 verbunden sind, wobei m eine Ganzzahl größer als eins ist. In einigen Ausführungsformen jedoch teilen sich zwei oder mehr Speicherkanäle einen NVM-Controller 130. In beiden Beispielen hat jeder Speicherkanal seinen eigen unterscheidenden Satz von NVM-Vorrichtungen 140 oder 142. In einem nicht einschränkenden Beispiel ist die Anzahl der Speicherkanäle in einer typischen Speichervorrichtung 8, 16 oder 32. In einem anderen nicht einschränkenden Beispiel ist die Anzahl der NVM-Vorrichtungen 140 oder 142 pro Speicherkanal normalerweise 8, 16, 32 oder 64. Ferner ist in einigen Ausführungsformen die Anzahl der NVM-Vorrichtungen 140/142 bei verschiedenen Speicherkanälen unterschiedlich.
  • In einigen Ausführungsformen enthält jeder NVM-Controller der NVM-Controller 130 eine oder mehrere Prozessoreinheiten (manchmal auch bezeichnet als CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller), die dazu konfiguriert sind, Anweisungen in einem oder mehreren Programmen auszuführen (z. B. in den NVM-Controllern 130). In einigen Ausführungsformen werden der eine oder die mehreren Prozessoren von einer oder mehreren Komponenten innerhalb und in einigen Fällen über die Funktion der NVM-Controller 130 hinaus geteilt. Die NVM-Vorrichtungen 140, 142 werden mit den NVM-Controllern 130 über Verbindungen verbunden, die normalerweise zusätzlich zu den Daten Befehle übertragen, und optional Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen zusätzlich zu den Datenwerten übertragen, die in den NVM-Vorrichtungen 140, 142 gespeichert werden sollen, sowie Datenwerte, die aus den NVM-Vorrichtungen 140, 142 ausgelesen werden. Die NVM-Vorrichtungen 140, 142 jede Anzahl (d. h. eine oder mehrere) von Speichervorrichtungen enthalten, einschließlich und ohne Einschränkung nichtflüchtige Halbleiter-Speichervorrichtungen, wie z. B. Flash-Speichervorrichtung(en).
  • Die Flash-Speichervorrichtung(en) (z. B. NVM-Vorrichtungen 140, 142) können beispielsweise für Unternehmensspeicher, geeignet für Anwendungen wie z. B. Cloud Computing, für Datenbankanwendungen, Primär- und/oder Sekundärspeicherung, oder zum Cachen gespeicherter (oder zu speichernder Daten) in der Sekundärspeicherung, wie z. B. Festplatten, konfiguriert werden. Zusätzlich und/oder alternativ können die Flash-Speichervorrichtung(en) (z. B. NVM-Vorrichtungen 140, 142) auch für kleinere Anwendungen, wie z. B. persönliche Flash-Laufwerk- oder Festplatten-Ersetzungen für PCs, Laptops und Tablets konfiguriert werden. Obwohl die Flash-Speichervorrichtungen und Flash-Controller hier als ein Beispiel verwendet werden, enthält die Speichervorrichtung 120 in einigen Ausführungsformen andere nichtflüchtige Speichervorrichtung(en) und entsprechende nichtflüchtige Speicher-Controller.
  • In einigen Ausführungsformen sind die NVM-Vorrichtungen 140, 142 in eine Anzahl von adressierbaren und individuell auswählbaren Blöcken aufgeteilt. In einigen Ausführungsformen sind die individuell auswählbaren Blöcke die löschbaren Einheiten der kleinsten Größe in einer Flash-Speichervorrichtung. In anderen Worten gesagt, jeder Block enthält die kleinste Anzahl von Speicherzellen, die gleichzeitig gelöscht werden können. Jeder Block ist normalerweise ferner in eine Vielzahl von Seiten und/oder Wortzeilen unterteilt, wobei jede Seite oder Wortzeile normalerweise eine Dateninstanz des kleinsten individuell zugänglichen (lesbaren) Abschnitts in einem Block ist. In einigen Ausführungsformen (z. B. bei Verwendung einiger Arten von Flash-Speichern), ist die kleinste individuell zugängliche Einheit eines Datensatzes jedoch ein Sektor, was die Untereinheit einer Seite ist. Das heißt, ein Block enthält eine Vielzahl von Sektoren und jeder Sektor ist die kleinste Dateneinheit zum Auslesen von Daten aus der Flash-Speichervorrichtung.
  • Während, wie oben gesagt, die Datenspeicherdichten von nichtflüchtigen Halbleiter-Speichervorrichtungen generell größer werden, ist ein Nachteil der zunehmenden Speicherdichte, dass die gespeicherten Daten mehr dazu neigen, falsch gespeichert und/oder gelesen zu werden. In einigen Ausführungsformen kann eine Fehlerkontrollcodierung verwendet werden, um die Anzahl von unkorrigierbaren Fehlern zu begrenzen, die durch elektrische Schwankungen, Defekte im Speichermedium, Betriebsbedingungen, die Vorgeschichte der Vorrichtung, Schreib-/Leseschaltkreise usw., oder eine Kombination dieser und anderer Faktoren eingeleitet werden.
  • In einigen Ausführungsformen enthält der Speicher-Controller 124 ein Managementmodul 121-1, eine Host-Schnittstelle 129, eine Speichermedium-Schnittstelle (E/A) 128 und Zusatzmodul(e) 125. Der Speicher-Controller 124 kann mehrere zusätzliche Merkmale enthalten, die aus Gründen der Kürze, und um sachbezogene Aspekte der hierin offenbarten, beispielhaften Ausführungsformen nicht zu verschleiern, nicht dargestellt sind, und eine verschiedene Anordnung der Merkmale kann möglich sein.
  • Die Host-Schnittstelle 129 stellt eine Schnittstelle zum Rechnersystem 110 über Datenverbindungen 101 bereit. Ähnlich stellt die Speichermedium-Schnittstelle 128 eine Schnittstelle zu den NVM-Controllern 130 über Verbindungen 103 bereit. In einigen Ausführungsformen enthält die Speichermedium-Schnittstelle 128 Lese- und Schreibschaltkreise, einschließlich der Schaltkreise, die den NVM-Controllern 130 Auslesesignale bereitstellen können (z. B. Auslesen von Schwellenspannungen für Flash-Speicher vom Typ NAND). In einigen Ausführungsformen sind die Verbindungen 101 und Verbindungen 103 als ein Kommunikationsmedium implementiert, über das Befehle und Daten unter Verwendung eines Protokolls, wie z. B. DDR3, SCSI, SATA, SAS oder Ähnliche mitgeteilt werden. In einigen Ausführungsformen enthält der Speicher-Controller 124 eine oder mehrere Prozessoreinheiten (manchmal auch bezeichnet als CPU oder Prozessoren oder Mikroprozessoren oder Mikrocontroller), die zur Ausführung von Anweisungen in einem oder mehreren Programmen (z. B. in Speicher-Controller 124) konfiguriert sind. In einigen Ausführungsformen werden der eine oder die mehreren Prozessoren von einer oder mehrere Komponenten innerhalb und in einigen Fällen über die Funktion des NVM-Controllers 124 hinaus geteilt.
  • In einigen Ausführungsformen enthält das Managementmodul 121-1 ein oder mehrere Prozessoreinheiten (CPUs, manchmal auch bezeichnet als Prozessoren oder Mikroprozessoren oder Mikrocontroller) 122, die zur Ausführung von Anweisungen in einem oder mehreren Programmen (z. B. im Managementmodul 121-1) konfiguriert sind. In einigen Ausführungsformen werden die eine oder die mehreren CPUs 122 von einer oder mehreren Komponenten innerhalb und in einigen Fällen über die Funktion des NVM-Controllers 124 hinaus geteilt. Das Managementmodul 121-1 ist mit der Host-Schnittstelle 129, dem/den Zusatzmodul(en) 125 und der Speichermedium-Schnittstelle 128 verbunden, um den Betrieb dieser Komponenten zu koordinieren. In einigen Ausführungsformen sind ein oder mehrere Module des Managementmoduls 121-1 im Managementmodul 121-2 des Rechnersystems 110 implementiert. In einigen Ausführungsformen sind ein oder mehrere Prozessoren des Rechnersystems 110 (nicht gezeigt) dazu konfiguriert, die Anweisungen in einem oder mehreren Programmen auszuführen (z. B. in Managementmodul 121-2). Das Managementmodul 121-2 ist mit der Speichervorrichtung 120 verbunden, um den Betrieb der Speichervorrichtung 120 zu verwalten.
  • Zusatzmodul(e) 125 sind mit der Speichermedium-Schnittstelle 128, Host-Schnittstelle 129 und dem Managementmodul 121-1 verbunden. Das/die Zusatzmodul(e) 125 können ein Fehlerkontrollmodul enthalten, um die Anzahl unkorrigierbarer Fehler zu begrenzen, die unbeabsichtigt beim Schreiben auf den Speicher und/oder Auslesen aus dem Speicher in die Daten eingeleitet wurden. In einigen Ausführungsformen werden das/die Zusatzmodul(e) 125 in der Software durch die eine oder die mehreren CPUs 122 des Managementmoduls 121-1 ausgeführt, und in anderen Ausführungsformen werden die Zusatzmodul(e) 125 ganz oder teilweise unter Verwendung spezieller Schaltkreise implementiert (z. B. zur Ausführung von Codier- und Decodierfunktionen). In einigen Ausführungsformen werden das/die Zusatzmodul(e) 125 ganz oder teilweise durch ausgeführte Software im Rechnersystem 110 implementiert.
  • In einigen Ausführungsformen enthält ein Fehlerkontrollmodul, das in dem/den Zusatzmodul(en) 125 enthalten ist, einen Codierer und einen Decodierer. In einigen Ausführungsformen codiert der Codierer Daten durch Anwendung eines Fehlerkontrollcodes (FCC) zum Erzeugen eines Codeworts, das nachfolgend in den NVM-Vorrichtungen 140, 142 gespeichert wird. Wenn codierte Daten (z. B. ein oder mehrere Codewörter) aus den NVM-Vorrichtungen 140, 142 ausgelesen werden, wendet der Decodierer einen Decodierprozess auf die codierten Daten an, um die Daten wiederherzustellen, und um Fehler in den wiederhergestellten Daten innerhalb der Fehlerkorrekturmöglichkeiten des Fehlerkontrollcodes zu korrigieren. Der Fachmann auf dem Gebiet versteht, dass die verschiedenen Fehlerkontrollcodes unterschiedliche Fehlererkennungs- und Fehlerkorrekturmöglichkeiten haben, und dass besondere Codes für verschiedene Anwendungen aus Gründen gewählt werden, die über den Geltungsbereich dieser Offenbarung hinausgehen. Somit ist hierin keine ausführliche Besprechung der verschiedenen Arten von Fehlerkontrollcodes enthalten. Des Weiteren versteht der Fachmann auf dem Gebiet, dass jede Art oder Familie von Fehlerkontrollcodes Codier- und Decodieralgorithmen haben kann, die spezifisch für die Art oder Familie von Fehlerkontrollcodes sind. Andererseits können einige Algorithmen zumindest in gewissem Maße bei der Decodierung einer Anzahl unterschiedlicher Arten oder Familien von Fehlerkontrollcodes verwendet werden. Als solche ist aus Gründen der Kürze hierin keine ausführliche Beschreibung der verschiedenen Arten von Codier- und Decodieralgorithmen, die den Fachleuten auf dem Gebiet allgemein verfügbar und bekannt sind, enthalten.
  • In einigen Ausführungsformen erhält die Host-Schnittstelle 129 bei einem Schreibvorgang Daten vom Rechnersystem 110, die in den NVM-Vorrichtungen 140, 142 gespeichert werden sollen. Die von der Host-Schnittstelle 129 erhaltenen Daten werden einem Codierer (z. B. in Zusatzmodul(en) 125) bereitgestellt, der die Daten codiert, um ein oder mehrere Codewörter zu erzeugen. Das eine oder die mehreren Codewörter werden der Speichermedium-Schnittstelle 128 bereitgestellt, die das eine oder die mehreren Codewörtern für NVM-Vorrichtungen 140, 142 (z. B. über NVM-Controller 130) unabhängig von der Art des verwendeten Speichermediums bereitstellt.
  • In einigen Ausführungsformen wird ein Lesevorgang eingeleitet, wenn das Rechnersystem (Host) 110 ein oder mehrere Host-Lesebefehle (z. B. über die Datenverbindungen 101, oder alternativ eine separate Steuerleitung oder einen Steuerbus) an den Speicher-Controller 124 sendet und Daten von den NVM-Vorrichtungen 140, 142 anfordert. Der Speicher-Controller 124 sendet einen oder mehrere Lesezugriffbefehle an die NVM-Vorrichtungen 140, 142 (z. B. über NVM-Controller 130) über die Speichermedium-Schnittstelle 128, um rohe Lesedaten gemäß den Speicherorten (Adressen) zu erhalten, die durch den einen oder die mehreren Lesebefehle des Hosts definiert werden. Die Speichermedium-Schnittstelle 128 stellt die rohen Lesedaten (z. B. umfassend ein oder mehrere Codewörter) einem Decodierer (z. B. in Zusatzmodulen) 125) bereit. Wenn die Decodierung erfolgreich ist, werden die decodierten Daten der Host-Schnittstelle 129 bereitgestellt, wo die decodierten Daten dem Rechnersystem 110 bereitgestellt werden.
  • Wenn die Decodierung nicht erfolgreich ist, kann der Speicher-Controller 124 in einigen Ausführungsformen auf eine Reihe von Abhilfemaßnahmen zurückgreifen, oder einen Hinweis auf einen unlösbaren Fehlerzustand liefern.
  • Wie oben erläutert, ist ein Speichermedium (z. B. NVM-Vorrichtungen 140, 142) in eine Anzahl von adressierbaren und individuell auswählbaren Blöcke unterteilt, und jeder Block ist optional (aber normalerweise) ferner in eine Vielzahl von Seiten und/oder Wortzeilen und/oder Sektoren unterteilt. Während das Löschen eines Speichermediums auf einer Blockbasis ausgeführt wird, wird das Lesen und Programmieren des Speichermediums in vielen Ausführungsformen auf einer kleineren Untereinheit eines Blocks ausgeführt (z. B. auf einer Seitenbasis, Wortzeilenbasis oder Sektorbasis). In einigen Ausführungsformen besteht die kleinere Untereinheit eines Blocks aus vielfachen Speicherzellen (z. B. einstufige Zellen oder vielstufige Zellen). In einigen Ausführungsformen wird das Programmieren auf einer ganzen Seite ausgeführt. In einigen Ausführungsformen hat ein NAND-Flash mit Multi-Level-Cell (MLC) normalerweise vier mögliche Zustände pro Zelle und trägt zwei Informationsbits pro Zelle. Ferner hat ein MLC NAND in einigen Ausführungsformen zwei Seitenarten: (1) eine untere Seite (manchmal bezeichnet als schnelle Seite), und (2) eine obere Seite (manchmal bezeichnet als langsame Seite). In einigen Ausführungsformen hat ein NAND-Flash mit Triple-Level-Cell (TLC) acht mögliche Zustände pro Zelle und trägt drei Informationsbits pro Zelle. Obwohl die Beschreibung hierin TLC, MLC und SLC als Beispiele verwendet, verstehen die Fachleute auf dem Gebiet, dass die hierin beschriebenen Ausführungsformen auf Speicherzellen ausgeweitet werden können, die mehr als acht mögliche Zustände pro Zelle haben und mehr als drei Informationsbits pro Zelle tragen können. In einigen Ausführungsformen wird ist das Codierungsformat auf dem Speichermedium (d. h. TLC, MLC, oder SLC und/oder eingewählter Datenredundanzmechanismus) eine Wahl, die getroffen wird, wenn die Daten eigentlich auf das Speichermedium geschrieben werden.
  • Wenn beispielsweise Daten in Seiten auf Speichermedium geschrieben werden, das Speichermedium aber in Blöcken gelöscht wird, können die Seiten im Speichermedium ungültige (z. B. veraltete) Daten enthalten, aber diese Seiten können erst dann gelöscht werden, wenn der gesamte Block, der diese Seiten enthält, gelöscht wird. Um auf die Seiten mit ungültigen Daten zu schreiben, werden die Seiten (wenn vorhanden) mit gültigen Daten in diesem Block gelesen und neu in einen neuen Block geschrieben und der alte Block wird gelöscht (oder in eine Schlange zum Löschen gestellt). Dieser Vorgang wird als automatische Speicherbereinigung bezeichnet. Nach der automatischen Speicherbereinigung enthält der neue Block die Seiten mit gültigen Daten und kann viele freie Seiten haben, die zum Schreiben neuer Daten verfügbar sind, und der alte Block kann gelöscht werden, damit er für das Schreiben neuer Daten verfügbar ist. Da der Flash-Speicher nur in einer begrenzten Anzahl programmiert und gelöscht werden kann, hat die Effizienz des verwendeten Algorithmus zur Auswahl des/der nächsten Blöcke zum erneuten Schreiben und Löschen eine bedeutende Auswirkung auf die Haltbarkeit und Zuverlässigkeit von Flash-basierten Speichersystemen.
  • Der Schreibfaktor ist ein Phänomen, wo die tatsächliche physische Menge geschriebener Daten auf ein Speichermedium (z. B. NVM-Vorrichtungen 140, 142 in der Speichervorrichtung 120) ein Vielfaches der logischen Menge geschriebener Daten von einem Host (z. B. das Rechnersystem 110, manchmal bezeichnet als ein Host) auf das Speichermedium. Wenn, wie oben besprochen, ein Block des Speichermediums gelöscht werden muss, bevor er neu geschrieben werden kann, führt der Prozess der automatischen Speicherbereinigung zur Ausführung dieser Abläufe zu einem einmaligen oder mehrmaligen Neuschreiben der Daten. Dieser Multiplizierungseffekt erhöht die Anzahl von Schreibvorgängen, die über die Lebensdauer in einem Speichermedium notwendig werden, was die Zeit verkürzt, in der es zuverlässig funktioniert. Die Formel zum Berechnen des Schreibfaktors eines Speichersystem wird durch die folgende Gleichung ausgedrückt: Menge der auf ein Speichermedium geschriebenen Daten / Menge der von einem Host geschriebenen Daten
  • Eine der Zielsetzungen bei jeder auf Flash-Speicher beruhenden Datenspeichersystem-Architektur ist es, den Schreibfaktor so weit wie möglich so zu reduzieren, dass die verfügbare Lebensdauer verwendet wird, um die Zuverlässigkeits- und Garantievorgaben an das Speichermedium zu erfüllen. Eine höhere Systemlebensdauer führt auch zu niedrigeren Kosten, weil das Speichersystem weniger Over-Provisioning benötigt. Durch Verringerung des Schreibfaktors wird die Lebensdauer des Speichermediums erhöht und die Gesamtkosten des Speichersystems werden verringert. Generell wird die automatische Speicherbereinigung zur besten Leistung und für den besten Schreibfaktor zum Löschen von Blöcken mit der geringsten Anzahl von gültigen Seiten durchgeführt.
  • Flash-Speichervorrichtungen verwenden Speicherzellen zum Speichern von Daten als elektrische Werte, wie z. B. elektrische Ladungen oder Spannungen. Jede Flash-Speicherzelle enthält normalerweise einen einzigen Transistor mit einem Floating-Gate, der zum Speichern einer Ladung verwendet wird, die die Schwellenspannung des Transistors ändert (d. h. die erforderliche Spannung zum Einschalten des Transistors). Die Größe der Ladung und die entsprechende Schwellenspannung, die die Ladung erzeugt, werden zur Darstellung eines oder mehrerer Datenwerte verwendet. In einigen Ausführungsformen wird während eines Lesevorgangs eine Lese-Schwellenspannung auf das Gate des Transistors angelegt, und die resultierende abgetastete Stromstärke oder Spannung wird auf einen Datenwert gemappt.
  • Die Begriffe „Zellspannung” und „Speicherzellenspannung” bedeutet im Zusammenhang mit Flash-Speicherzellen die Schwellenspannung der Speicherzelle, was die Mindestspannung ist, die am Gate des Transistors der Speicherzelle angelegt werden muss, damit der Transistor Strom leitet. Auf ähnliche Art und Weise sind die angewendeten Lese-Schwellenspannungen (manchmal auch bezeichnet als Lesesignale und Lesespannungen) auf Flash-Speicherzellen die Gate-Spannungen, die auf die Gates der Flash-Speicherzellen angewendet werden, um zu bestimmen, ob die Speicherzellen bei der Gate-Spannung Strom leiten. Wenn der Transistor einer Flash-Speicherzelle in einigen Ausführungsformen bei einer gegebenen Lese-Schwellenspannung Strom leitet, bedeutet dies, dass die Zellspannung niedriger als die Lese-Schwellenspannung ist, der Rohdatenwert für diesen Lesevorgang eine „1” ist und sonst der Rohdatenwert eine „0” ist.
  • ist ein Blockschema, das ein Managementmodul 121-1 gemäß einiger Ausführungsformen wie gezeigt in darstellt. Das Managementmodul 121-1 enthält normalerweise eine oder mehrere Prozessoreinheiten (manchmal bezeichnet als CPUs oder Prozessoren) 122-1 zum Ausführen von Modulen, Programmen und/oder Anweisungen, die im Speicher 206 gespeichert sind, und somit zum Ausführen von Verarbeitungsvorgängen, den Speicher 206 (manchmal bezeichnet als Controller-Speicher), und einen oder mehrere Datenbusse 208 zum Verbinden dieser Komponenten. Der eine oder die mehreren Datenbusse 208 enthalten optional Schaltkreise (manchmal bezeichnet als ein Chipsatz), die die Kommunikationen zwischen den Systemkomponenten verbinden und steuern. Das Managementmodul 121-1 ist mit der Host-Schnittstelle 129, dem/den Zusatzmodul(en) 125 und dem Speichermedium (E/A) 128 durch den einen oder die mehreren Datenbusse 208 verbunden. Der Speicher 206 enthält einen Hochgeschwindigkeits-Direktzugriffsspeicher, wie z. B. DRAM, SRAM, DDR RAM oder andere Direktzugriffs-Solid-State-Speichervorrichtungen, und kann einen nichtflüchtigen Speicher, wie z. B. eine oder mehrere magnetische Laufwerk-Speichervorrichtungen, optische Laufwerk-Speichervorrichtungen, Flash-Speichervorrichtungen, oder andere nichtflüchtige Solid-State-Speichervorrichtungen enthalten. Der Speicher 206 enthält optional eine oder mehrere Speichervorrichtungen, die entfernt von der/den CPUs 122-1 angeordnet sind. Der Speicher 206, oder alternativ die nichtflüchtige(n) Speichervorrichtung(en) im Speicher 206 umfasst ein nichttransitorisches computerlesbares Speichermedium. In einigen Ausführungsformen speichert der Speicher 206 oder das nichttransitorische computerlesbare Speichermedium des Speichers 206 die folgenden Programme, Module und Datenstrukturen, oder einen Untersatz oder Supersatz davon:
    • • eine Translationstabelle 212, die für das Mapping der logischen Adressen in physische Adressen verwendet wird;
    • • ein Datenlesemodul 214, das zum Lesen von Daten aus einem oder mehreren Codewörtern, Seiten oder Blöcken in einem Speichermedium (z. B. NVM-Vorrichtungen 140, 142, ) verwendet wird;
    • • ein Datenschreibmodul 216, das zum Schreiben von Daten in ein oder mehrere Codewörter, Seiten oder Blöcke in einem Speichermedium (z. B. NVM-Vorrichtungen 140, 142, ) verwendet wird;
    • • ein Datenlöschmodul 218, das zum Löschen von Daten aus einem oder mehreren Blöcken in einem Speichermedium (z. B. NVM-Vorrichtungen 140, 142, ) verwendet wird;
    • • ein automatisches Speicherbereinigungsmodul 220, das zur automatischen Speicherbereinigung für einen oder mehrere Blöcke in einem Speichermedium (z. B. NVM-Vorrichtungen 140, 142, ) verwendet wird;
    • • ein Befehlempfangsmodul 222, das zum Empfang einer Vielzahl von Befehlen (z. B. Unmapp-Befehle und E/A-Befehle, wie z. B. Schreibanforderungen und/oder Leseanforderung) von einem Host;
    • • ein Arbeitslastmodul 224, das zur Bestimmung einer Arbeitslast (oder Änderungen in der Arbeitslast) gemäß den Befehlen von einem Host (z. B. Rechnersystem 110, );
    • • ein Schreibcachemodul 236 das zum Unterhalten, Leeren und/oder Planen einer Leerung (z. B. eine regelmäßige Leerung und/oder an optimierte Leerung) eines Schreibcaches (z. B. Schreibcache 238); und
    • • ein Schreibcache 238, das eine Sammlung von Datenstrukturen entsprechend den Schreibbefehlen von einem Host.
  • Jedes der oben identifizierten Elemente kann in einem oder mehreren der vorher erwähnten Speichervorrichtungen gespeichert werden und entspricht einem Anweisungssatz zur Ausführung einer oben beschrieben Funktion. Die oben identifizierten Module oder Programme (d. h. Anweisungssätze) müssen nicht als separate Softwareprogramme, Verfahren oder Module implementiert werden, und somit können mehrere Untersätze dieser Module in verschiedenen Ausführungsformen kombiniert oder anderweitig neu angeordnet werden. In einigen Ausführungsformen kann der Speicher 206 einen Untersatz der oben identifizierten Module und Datenstrukturen speichern. Des Weiteren kann der Speicher 206 zusätzliche Module und Datenstrukturen speichern, die oben nicht beschrieben werden. In einigen Ausführungsformen stellen die Programme, Module und Datenstrukturen, die im Speicher 206 gespeichert sind, oder das nichttransitorisches computerlesbare Speichermedium des Speichers 206 Anweisungen zur Implementierung einiger der unten beschriebenen Verfahren bereit. In einigen Ausführungsformen können einige oder alle diese Module mit speziellen Hardware-Schaltkreisen implementiert werden, die einen Teil oder alle der Modulfunktionen subsumieren.
  • Obwohl die das Managementmodul 121-1 gemäß einiger Ausführungsformen zeigt, dient die eher als eine Funktionsbeschreibung der verschiedenen Funktionen, die im Managementmodul 121-1 vorhanden sein können, als denn ein Strukturschema der hierin beschriebenen Ausführungsformen. In der Praxis und anerkannt durch den Fachmann auf dem Gebiet könnten die getrennt gezeigten Programme, Module und Datenstrukturen kombiniert, und einige Programme, Module und Datenstrukturen könnten getrennt sein.
  • Bei einer gemischten Lese/Schreib-Random Arbeitslast (z. B. 30% Schreiben und 70% Lesen) mit niedriger Queue-Tiefe (z. B. Queue-Tiefe von 4) können Schreibbefehle von einem Host in einigen Ausführungsformen Lesebefehle vom Host blockieren, weil Schreibvorgänge langsamer sind (es dauert z. B. bedeutend länger, sie abzuschließen) als Lesevorgänge, was dazu führt, dass der Host kontinuierlich anhält und wartet, bis das Schreiben abgeschlossen ist. Die hierin beschriebenen verschiedenen Ausführungsformen enthalten Systeme, Verfahren, und/oder Vorrichtungen, um eine Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe zu ermöglichen (manchmal bezeichnet als qualifizierte Arbeitslasten). In einigen Ausführungsformen arbeitet die Speichervorrichtung, die eine oder mehrere nichtflüchtige Speichervorrichtungen (z. B. NVM-Vorrichtungen 140, 142, ) umfasst, entweder in einem ersten Modus (z. B. Lesemodus) oder in einem zweiten Modus (z. B. Schreibmodus). In einigen Ausführungsformen werden während des Lesemodus alle Schreibvorgänge (z. B. der Host schreibt und die automatische Speicherbereinigung schreit) in einem kondensatorunterstützten RAM (z. B. DRAM oder SRAM, manchmal bezeichnet als ein Schreibcache) zwischengespeichert, bis ein bestimmtes Kriterium erfüllt ist (z. B. bis der Pufferspeicher voll ist, bis genügend Daten angesammelt sind, um einen RAID-Streifen zu vervollständigen usw.). Während dieser Zeit werden Lesebefehle schnell bedient, weil es keine behindernden Schreibvorgänge gibt. Wenn in einigen Ausführungsformen das vordefinierte Kriterium erfüllt ist (z. B. wenn der Pufferspeicher voll ist, wenn genügend Daten angesammelt sind, um einen RAID-Streifen zu vervollständigen usw.), schaltet die Speichervorrichtung in den Schreibmodus, während dem die Speichervorrichtung so viele parallele Schreibvorgänge wie möglich ausgibt, wobei alle Leistungseinschränkungen auf Systemebene berücksichtigt werden. Alle ausgegebenen Lesevorgänge, während sich die Speichervorrichtung im Schreibmodus befindet, werden gesperrt, bis die Schreibvorgänge abgeschlossen sind.
  • zeigen eine Ablaufdiagrammdarstellung eines Verfahrens 300 zum Verwalten eines Speichersystems gemäß einiger Ausführungsformen. In mindestens einigen Ausführungsformen wird das Verfahren 300 von einer Speichervorrichtung (z. B. Speichervorrichtung 120, ) oder einer oder mehreren Komponenten der Speichervorrichtung (z. B. Speicher-Controller 124, NVM-Controller 130 und/oder NVM-Vorrichtungen 140, 142, ) durchgeführt, wobei die Speichervorrichtung operativ mit einem Host-System verbunden ist (z. B. Rechnersystem 110, ). In einigen Ausführungsformen wird das Verfahren 300 von Anweisungen gesteuert, die in einem nichttransitorischen computerlesbaren Speichermedium gespeichert sind, und die von einem oder mehreren Prozessoren einer Vorrichtung ausgeführt werden, wie die eine oder die mehreren Prozessoreinheiten (CPUs) 122-1 des Managementmodul 121-1, gezeigt in den und . In einigen Ausführungsformen wird das Verfahren 300 von einem Speichersystem (z. B. Datenspeichersystem 100, ) oder einer oder mehreren Komponenten des Speichersystems (z. B. Rechnersystem 110 und/oder Speichervorrichtung 120, ) durchgeführt. In einigen Ausführungsformen werden einige der Vorgänge des Verfahrens 300 auf einem Host (z. B. Rechnersystem 110, ) durchgeführt und die Informationen auf eine Speichervorrichtung übertragen (z. B. Speichervorrichtung 120, ). In einigen Ausführungsformen wird das Verfahren 300 zumindest teilweise von Anweisungen gesteuert, die in einem nichttransitorischen computerlesbaren Speichermedium gespeichert sind, und die von einem oder mehreren Prozessoren eines Hosts (nicht gezeigt in ) ausgeführt werden. Für eine vereinfachte Erläuterung wird nachfolgend das Verfahren 300 beschrieben, wie es von einer Speichervorrichtung (z. B. Speichervorrichtung 120, ) durchgeführt wird. Allerdings versteht der Fachmann auf dem Gebiet, dass einer oder mehrere der im Verfahren 300 beschriebenen Vorgänge in anderen Ausführungsformen von einem Host (z. B. Rechnersystem 110, ) durchgeführt werden.
  • Eine Speichervorrichtung (z. B. Speichervorrichtung 120, ) eines Speichersystems (z. B. Datenspeichersystem 100, ) unterhält (302) ein Schreibcache (z. B. Schreibcache 228, ) für die Schreibbefehle von einem Host (z. B. Rechnersystem 110, ), mit dem die Speichervorrichtung operativ verbunden ist, und die Speichervorrichtung enthält eine Vielzahl von nichtflüchtigen Speichereinheiten (z. B. NVM-Vorrichtungen 140, 142, ), wobei das Schreibcache Schreibbefehle von dem Host enthält, die zur Speicherung in der Vielzahl von nichtflüchtigen Speichereinheiten gemappt, aber noch nicht in den nichtflüchtigen Speichereinheiten gespeichert sind. In einigen Ausführungsformen enthält eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten einen Chip (z. B. a Flash-Speicher-Chip). In einigen Ausführungsformen enthält eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten einen Chip (z. B. ein Flash-Speicher-Chip mit zwei oder mehr Flash-Speicher-Chips). In einigen Ausführungsformen enthält eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten eine Speichereinheit, die parallel mit anderen Speichereinheiten programmiert werden kann (z. B. eine Ebene). In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul 228, ) verwendet, um ein Schreibcache für Schreibbefehle von einem Host zu unterhalten, mit dem eine Speichervorrichtung des Speichersystems operativ verbunden ist, und die Speichervorrichtung enthält eine Vielzahl von nichtflüchtigen Speichereinheiten, wobei das Schreibcache Schreibbefehle von dem Host enthält, die zur Speicherung in der Vielzahl von nichtflüchtigen Speichereinheiten gemappt, aber noch nicht in den nichtflüchtigen Speichereinheiten gespeichert sind, wie dies oben unter Bezugnahme auf beschrieben wird.
  • In einigen Ausführungsformen enthält die Speichervorrichtung (304) eine oder mehrere Flash-Speichervorrichtungen. In einigen Ausführungsformen enthält die Speichervorrichtung ein Speichermedium (z. B. NVM-Vorrichtungen 140, 142, ), und das Speichermedium enthält eine oder mehrere nichtflüchtige Speichervorrichtungen, wie z. B. Flash-Speichervorrichtungen. In einigen Ausführungsformen ist das Speichermedium eine einzige Flash-Speichervorrichtung, während das Speichermedium in anderen Ausführungsformen eine Vielzahl von Flash-Speichervorrichtungen enthält. In einigen Ausführungsformen enthält das Speichermedium beispielsweise Dutzende oder Hunderte von Flash-Speichervorrichtungen, die in parallelen Speicherkanälen organisiert sind, wie z. B. 16, 32 oder 64 Flash-Speichervorrichtungen pro Speicherkanal und 8, 16 oder 32 parallele Speicherkanäle. In einigen Ausführungsformen enthält das nichtflüchtige Speichermedium (z. B. NVM-Vorrichtungen 140, 142, ) einen Flash-Speicher vom Typ NAND oder Flash-Speicher vom Typ NOR. In anderen Ausführungsformen umfasst das Speichermedium einen oder mehrere andere Typen von nichtflüchtigen Speichervorrichtungen.
  • Die Speichervorrichtung bestimmt (306) eine Arbeitslast gemäß den Befehlen von dem Host, mit dem die Speichervorrichtung operativ verbunden ist. In einigen Ausführungsformen wird die Arbeitslast gemäß einer Queue-Tiefe von anstehenden befehlen von dem Host bestimmt. In einigen Ausführungsformen wird die Arbeitslast gemäß einem Prozentsatz von Schreibbefehlen von dem Host im Verhältnis zu einem Prozentsatz von Lesebefehlen von dem Host bestimmt. In einigen Ausführungsformen wird ein Arbeitslastmodul (z. B. Arbeitslastmodul 224, ) verwendet, um eine Arbeitslast gemäß den Befehlen von dem Host zu bestimmen, mit dem die Speichervorrichtung operativ verbunden ist, wie dies oben unter Bezugnahme auf beschrieben wird.
  • Die Speichervorrichtung plant (308) gemäß einer Bestimmung, dass die Arbeitslast eine nichtqualifizierte Arbeitslast ist, eine regelmäßige Leerung des Schreibcaches, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache (z. B. ein Datenblock) zu einer nichtflüchtigen Speichereinheit (z. B. NVM-Vorrichtung 140-1, ) der Vielzahl von nichtflüchtigen Speichereinheiten (NVM-Vorrichtungen 140, 142, ) enthält. In einigen Ausführungsformen besteht eine nichtqualifizierte Arbeitslast, wenn die Queue-Tiefe größer als der vordefinierte Tiefen-Schwellenwert ist. In einigen Ausführungsformen besteht beispielsweise dann eine nichtqualifizierte Arbeitslast, wenn die Queue-Tiefe größer als 32 ist. In einigen Ausführungsformen besteht eine nichtqualifizierte Arbeitslast, wenn der Prozentsatz von Schreibbefehlen im Verhältnis zum Prozentsatz von Lesebefehlen von dem Host größer als ein vordefinierter Schwellenwert ist. In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul 226, ) verwendet, um gemäß einer Bestimmung, dass die Arbeitslast eine nichtqualifizierte Arbeitslast ist, eine regelmäßige Leerung des Schreibcaches zu planen, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wie dies oben unter Bezugnahme auf beschrieben wird.
  • Die Speichervorrichtung plant (310) gemäß einer Bestimmung, dass die Arbeitslast eine qualifizierte Arbeitslast ist, eine optimierte Leerung des Schreibcaches, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist. In einigen Ausführungsformen enthält eine optimierte Leerung des Schreibcaches beispielsweise das Leeren von n Datenblöcken zu n nichtflüchtigen Speichereinheiten (z. B. das Leeren eines Datenblocks zu jedem der NVM-Vorrichtung 140-1, NVM-Vorrichtung 140-2, ... NVM-Vorrichtung 140-n). In einigen Ausführungsformen ist das erste Vielfache eine Ganzzahl größer als 7 (d. h. 8 oder größer), und normalerweise hat es einen Wert zwischen 8 und 32. In einigen Ausführungsformen besteht eine qualifizierte Arbeitslast, wenn die Queue-Tiefe kleiner oder gleich wie ein vordefinierter Tiefen-Schwellenwert ist. In einigen Ausführungsformen besteht beispielsweise dann eine qualifizierte Arbeitslast, wenn die Queue-Tiefe „niedrig” ist (z. B. Queue-Tiefe von 1 bis 32). In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul 226, ) verwendet, um gemäß einer Bestimmung, dass die Arbeitslast eine qualifizierte Arbeitslast ist, eine optimierte Leerung des Schreibcaches zu planen, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist, wie dies oben unter Bezugnahme auf beschrieben wird.
  • In einigen Ausführungsformen enthält die regelmäßige Leerung (312) das Ansammeln ausreichender Daten von Schreibbefehlen, um die vordefinierte Datenmenge auf die eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben, und die optimierte Leerung enthält das Ansammeln ausreichender Daten von Schreibbefehlen, um das erste Vielfache von der vordefinierten Datenmenge auf die entsprechende Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben. In einigen Ausführungsformen enthält die regelmäßige Leerung beispielsweise das Ansammeln ausreichender Daten von Schreibbefehlen, um einen Datenblock auf die eine nichtflüchtige Speichereinheit zu schreiben, und die optimierte Leerung enthält das Ansammeln ausreichender Daten von Schreibbefehlen, um n Datenblöcke auf n nichtflüchtige Speichereinheiten zu schreiben, wobei n eine Ganzzahl größer als eins ist. In einigen Ausführungsformen ist die entsprechende Anzahl gleich wie das erste Vielfache, oder die entsprechende Anzahl gleich wie das erste Vielfache geteilt durch eine ganzzahlige Potenz von zwei ist (z. B. wenn zwei oder mehr Abschnitt der nichtflüchtigen Speichereinheit parallel programmiert werden können).
  • In einigen Ausführungsformen führt die Speichervorrichtung (314) nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, eine oder mehrere regelmäßige Leerungen durch, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält. In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul 226, ) verwendet, um nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, eine oder mehrere regelmäßige Leerungen durchzuführen, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wie dies oben unter Bezugnahme auf beschrieben wird.
  • In einigen Ausführungsformen enthält die Durchführung der einen oder mehreren regelmäßigen Leerungen (314) die Durchführung (316) einer Vielzahl von regelmäßigen parallelen Leerungen (316). In einigen Ausführungsformen oder unter gewissen Umständen werden alle regelmäßigen Leerungen im Vorgang 314 parallel durchgeführt. In einigen Ausführungsformen ist die Durchführung mehrfacher Schreibcache-Leerungen „parallel” definiert, was die Durchführung des mehrfachen Schreibcaches während mindestens teilweise überlappender Zeiten bedeutet.
  • In einigen Ausführungsformen leert die Speichervorrichtung optional (318) gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, das Schreibcache zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten. In einigen Ausführungsformen führt die Speichervorrichtung gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, eine regelmäßige Leerung durch. In einigen Ausführungsformen oder unter gewissen Umständen (z. B. wo das Schreibcache ausreichende Daten zur Durchführung einer optimierten Leerung speichert) führt die Speichervorrichtung gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, eine optimierte Leerung durch. In einigen Ausführungsformen leert die Speichervorrichtung gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, die Gesamtheit des Schreibcaches zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten. In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul 226, ) verwendet, um gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, das Schreibcache zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten zu leeren, wie dies oben unter Bezugnahme auf beschrieben wird.
  • In einigen Ausführungsformen leert die Speichervorrichtung optional (320) gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält, das ganzzahlige Vielfache anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten. Wenn in einigen Ausführungsformen das Schreibcache beispielsweise zweieinhalb Datenblöcke enthält, leert die Speichervorrichtung zwei Datenblöcken zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten. In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul 226, ) verwendet, um gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält, das ganzzahlige Vielfache anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten zu leeren, wie dies oben unter Bezugnahme auf beschrieben wird.
  • Es ist verstanden, dass obwohl hierin die Begriffe „erste”, „zweite” usw. dazu verwendet werden können, um die verschiedenen Elemente zu beschreiben, diese Elemente nicht hierauf begrenzt werden dürfen. Diese Begriffe werden nur verwendet, um ein Element vom anderen zu unterscheiden. Eine erste Region kann beispielsweise als zweite Region bezeichnet werden, und auf ähnliche Weise könnte eine zweite Region als erste Region bezeichnet werden, ohne damit die Bedeutung der Beschreibung zu ändern, solange jedes Vorkommen der „ersten Region” durchgängig umbenannt wird, und jedes Vorkommen der „zweiten Region” durchgängig umbenannt wird. Die erste Region und die zweite Region sind zwar beide Regionen, aber nicht dieselbe Region.
  • Die hierin verwendete Terminologie dient nur den Zwecken der Beschreibung besonderer Ausführungsformen und ist nicht dazu beabsichtigt, die Ansprüche einzuschränken. Die Einzahlformen von „ein” und „der, die, das”, wie sie in der Beschreibung der Ausführungsformen und in den angehängten Ansprüchen verwendet werden, sind so beabsichtigt, dass sie auch die Pluralformen enthalten sollen, es sei denn, aus dem Kontext geht dies eindeutig anders hervor. Es ist gleichfalls verstanden, dass der Begriff „und/oder”, wie er hierin verwendet wird, sich auf alle möglichen Kombinationen von einer oder mehreren der jeweils aufgelisteten Elemente bezieht und diese umfasst. Es ist ferner verstanden, dass die Begriffe „umfassen” und/oder „umfassend”, wenn sie in dieser Spezifikation verwendet werden, das Vorhandensein der angegebenen Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten spezifiziert, dass sie aber nicht das Vorhandensein oder Hinzufügen von einem oder mehreren Merkmale, Ganzzahlen, Schritte, Vorgängen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Der Ausdruck „mindestens eines von A, B und C”, wie er hierin verwendet wird, muss so ausgelegt werden, dass eines oder mehrere der aufgelisteten Elemente erforderlich sind, und dieser Ausdruck liest sich als nur eine einzige Einheit von A, nur eine einzige Einheit von B oder nur eine einzige Einheit von C, während er auch Kombinationen der aufgelisteten Elemente umfasst, wie z. B. „eines oder mehrere von und eines oder mehrere von B ohne jedes von C” und Ähnliches.
  • Der Begriff „wenn”, wie er hierin verwendet wird, muss so ausgelegt werden, dass er „falls” oder „bei” oder „als Antwort auf die Feststellung” oder „gemäß einer Feststellung” oder „als Antwort auf die Feststellung” bedeutet, dass je nach Zusammenhang ein vorher angegebener Zustand wahr ist. Auf ähnliche Weise kann der Ausdruck „wenn festgestellt wird [ein vorher angegebener Zustand wahr ist]” oder „wenn [ein vorher angegebener Zustand wahr ist]” oder „falls [ein vorher angegebener Zustand wahr ist]” so ausgelegt werden kann, dass er bedeutet „bei Feststellung” oder „als Antwort auf die Feststellung” oder „gemäß einer Feststellung” oder „bei Feststellung” oder „als Antwort auf die Feststellung”, dass je nach Zusammenhang ein vorher angegebener Zustand wahr ist.
  • Die vorstehende Beschreibung zu Erläuterungszwecken wurde unter Bezugnahme auf spezifische Ausführungsformen beschrieben. Allerdings sind die illustrativen obigen Besprechungen nicht dazu beabsichtigt, erschöpfend zu sein, oder die Ansprüche auf präzise offenbarte Formen zu beschränken. Viele Modifikationen und Variationen der obigen Lehren sind möglich. Die Ausführungsformen wurden gewählt und beschrieben, um die Funktionsprinzipien und praktischen Anwendungen bestmöglich zu beschrieben, um sie dadurch anderen Fachleuten auf dem Gebiet zu ermöglichen.

Claims (15)

  1. Verfahren zum Verwalten eines Speichersystems, das Verfahren umfassend: Unterhalten eines Schreibcaches für Schreibbefehle von einem Host, mit dem eine Speichervorrichtung des Speichersystems operativ verbunden ist, und die Speichervorrichtung enthält eine Vielzahl von nichtflüchtigen Speichereinheiten, wobei das Schreibcache Schreibbefehle von dem Host enthält, die zur Speicherung in der Vielzahl von nichtflüchtigen Speichereinheiten gemappt, aber noch nicht in den nichtflüchtigen Speichereinheiten gespeichert sind; Bestimmen einer Arbeitslast gemäß den Befehlen von dem Host, mit dem die Speichervorrichtung operativ verbunden ist; gemäß einer Bestimmung, dass die Arbeitslast eine nichtqualifizierte Arbeitslast ist, Planen einer regelmäßigen Leerung des Schreibcaches, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält; und gemäß einer Bestimmung, dass die Arbeitslast eine qualifizierte Arbeitslast ist, Planen einer optimierten Leerung des Schreibcaches, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist.
  2. Verfahren nach Anspruch 1, wobei die regelmäßige Leerung das Ansammeln ausreichender Daten von Schreibbefehlen enthält, um die vordefinierte Datenmenge auf die eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben, und die optimierte Leerung enthält das Ansammeln ausreichender Daten von Schreibbefehlen, um das erste Vielfache von der vordefinierten Datenmenge auf die entsprechende Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben.
  3. Verfahren nach einem der Ansprüche 1–2, ferner umfassend nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, das Ausführen von einer oder mehreren regelmäßigen Leerungen, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält.
  4. Verfahren nach Anspruch 3, wobei das Ausführen der einen oder mehreren regelmäßigen Leerungen das parallele Ausführen einer Vielzahl von regelmäßigen Leerungen enthält.
  5. Verfahren nach einem der Ansprüche 1–4, ferner umfassend gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, das Leeren des Schreibcaches zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten.
  6. Verfahren nach einem der Ansprüche 1–4, ferner umfassend gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält, das Leeren des ganzzahligen Vielfachen anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten.
  7. Verfahren nach einem der Ansprüche 1–6, wobei die Speichervorrichtung eine oder mehrere Flash-Speichervorrichtungen umfasst.
  8. Speichervorrichtung umfassend: Mittel zum Unterhalten eines Schreibcaches für Schreibbefehle von einem Host, mit dem eine Speichervorrichtung des Speichersystems operativ verbunden ist, und die Speichervorrichtung enthält eine Vielzahl von nichtflüchtigen Speichereinheiten, wobei das Schreibcache Schreibbefehle von dem Host enthält, die zur Speicherung in der Vielzahl von nichtflüchtigen Speichereinheiten gemappt, aber noch nicht in den nichtflüchtigen Speichereinheiten gespeichert sind; Mittel zum Bestimmen einer Arbeitslast gemäß den Befehlen von dem Host, mit dem die Speichervorrichtung operativ verbunden ist; Mittel zum Planen gemäß einer Bestimmung, dass die Arbeitslast eine nichtqualifizierte Arbeitslast ist, einer regelmäßigen Leerung des Schreibcaches, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält; und Mittel zum Planen gemäß einer Bestimmung, dass die Arbeitslast eine qualifizierte Arbeitslast ist, einer optimierten Leerung des Schreibcaches, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist.
  9. Speichervorrichtung nach Anspruch 8, enthaltend Mittel zum Durchführen der regelmäßigen Leerung, einschließlich des Ansammelns ausreichender Daten von Schreibbefehlen, um die vordefinierte Datenmenge auf die eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben, und Mittel zum Durchführen der optimierten Leerung, einschließlich des Ansammelns ausreichender Daten von Schreibbefehlen, um das erste Vielfache von der vordefinierten Datenmenge auf die entsprechende Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben.
  10. Speichervorrichtung nach Anspruch 8, enthaltend ferner Mittel zum Durchführen einer oder mehrerer Leerungen nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält.
  11. Speichervorrichtung nach Anspruch 10, wobei die Mittel zum Durchführen der einen oder mehreren regelmäßigen Leerungen Mittel zum parallelen Durchführen einer Vielzahl von regelmäßigen Leerungen enthalten.
  12. Speichervorrichtung nach einem der Ansprüche 8–11, ferner umfassend Mittel zum Leeren des Schreibcaches zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist.
  13. Speichervorrichtung nach einem der Ansprüche 8–11, ferner umfassend Mittel zum Leeren des ganzzahligen Vielfachen anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält.
  14. Speichervorrichtung nach einem der Ansprüche 8–13, wobei die Speichervorrichtung eine oder mehrere Flash-Speichervorrichtungen enthält.
  15. Nichttransitorisches computerlesbares Speichermedium, das ein oder mehrere Programme speichert, die zur Ausführung des einen oder der mehreren Programme, die Anweisungen zum Ausführen des Verfahren nach einem der Ansprüche 1–7 enthalten, durch einen oder mehrere Prozessoren einer Speichervorrichtung konfiguriert sind
DE102015117500.2A 2014-10-27 2015-10-14 Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe Withdrawn DE102015117500A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462069241P 2014-10-27 2014-10-27
US62/069,241 2014-10-27
US14/677,662 US9952978B2 (en) 2014-10-27 2015-04-02 Method for improving mixed random performance in low queue depth workloads
US14/677,662 2015-04-02

Publications (1)

Publication Number Publication Date
DE102015117500A1 true DE102015117500A1 (de) 2016-04-28

Family

ID=55698626

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015117500.2A Withdrawn DE102015117500A1 (de) 2014-10-27 2015-10-14 Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe

Country Status (3)

Country Link
US (1) US9952978B2 (de)
CN (1) CN105718213B (de)
DE (1) DE102015117500A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017081794A1 (ja) * 2015-11-12 2017-05-18 オリンパス株式会社 サーバ、クライアント、通信システム、通信方法、およびプログラム
US10474582B2 (en) * 2017-04-28 2019-11-12 Seagate Technology Llc NAND flash storage device and methods using non-NAND storage cache
CN107870744A (zh) * 2017-10-27 2018-04-03 上海新储集成电路有限公司 一种非同步镜像的混合硬盘阵列存储系统及方法
CN108920313A (zh) * 2018-06-21 2018-11-30 郑州云海信息技术有限公司 一种raid的测试方法、装置、设备及介质
CN110908591B (zh) * 2018-09-17 2023-05-30 群联电子股份有限公司 存储器管理方法、存储器储存装置及存储器控制电路单元
CN110989918B (zh) * 2018-10-03 2023-03-28 慧荣科技股份有限公司 写入控制方法以及数据存储装置及其控制器
US11841871B2 (en) * 2021-06-29 2023-12-12 International Business Machines Corporation Managing extract, transform and load systems

Family Cites Families (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4586167A (en) 1983-01-24 1986-04-29 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device
EP0376285B1 (de) 1988-12-27 1994-03-09 Nec Corporation Mikrorechner mit einem elektrisch löschbaren und programmierbaren nichtflüchtigen Speicher
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5909559A (en) 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
US6209072B1 (en) 1997-05-06 2001-03-27 Intel Corporation Source synchronous interface between master and slave using a deskew latch
US6449709B1 (en) 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
KR100306882B1 (ko) 1998-10-28 2001-12-01 박종섭 반도체메모리소자에서데이터스트로브신호를버퍼링하기위한방법및장치
US6952682B1 (en) 1999-07-02 2005-10-04 Ariba, Inc. System and method for matching multi-attribute auction bids
US6401213B1 (en) 1999-07-09 2002-06-04 Micron Technology, Inc. Timing circuit for high speed memory
US6944731B2 (en) 2001-12-19 2005-09-13 Agere Systems Inc. Dynamic random access memory system with bank conflict avoidance feature
US6792516B2 (en) 2001-12-28 2004-09-14 Intel Corporation Memory arbiter with intelligent page gathering logic
US6922754B2 (en) * 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
KR100632940B1 (ko) 2004-05-06 2006-10-12 삼성전자주식회사 프로그램 사이클 시간을 가변시킬 수 있는 불 휘발성반도체 메모리 장치
KR100616214B1 (ko) 2005-06-30 2006-08-28 주식회사 하이닉스반도체 멀티-레벨 셀을 가지는 플래시 메모리 장치의 프로그램제어 회로 및 그 프로그램 제어 방법
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US8286159B2 (en) 2005-12-22 2012-10-09 Alan Joshua Shapiro Method and apparatus for gryphing a data storage medium
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US20110264851A1 (en) 2006-12-07 2011-10-27 Tae-Keun Jeon Memory system and data transmitting method thereof
KR100843280B1 (ko) 2006-12-07 2008-07-04 삼성전자주식회사 메모리 시스템 및 그것의 데이터 전송 방법
KR101354152B1 (ko) 2006-12-18 2014-01-27 삼성전자주식회사 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치
US8122202B2 (en) 2007-02-16 2012-02-21 Peter Gillingham Reduced pin count interface
US7987332B2 (en) 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
US20080235480A1 (en) 2007-03-21 2008-09-25 Shai Traister Systems for storing memory operations in a queue
US20080291204A1 (en) 2007-05-22 2008-11-27 International Business Machines Corporation Coupled placement of items using stable marriage techniques
US8341623B2 (en) 2007-05-22 2012-12-25 International Business Machines Corporation Integrated placement planning for heterogenous storage area network data centers
US8621137B2 (en) 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US20090177943A1 (en) 2008-01-09 2009-07-09 Broadcom Corporation Error correction coding using soft information and interleaving
US8285940B2 (en) * 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
DE102008022831B4 (de) 2008-05-08 2015-09-10 Fujitsu Technology Solutions Intellectual Property Gmbh Arbeitsverfahren für ein Speichersubsystem und Vorrichtungen zur Durchführung des Arbeitsverfahrens
US9123422B2 (en) 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US8010738B1 (en) 2008-06-27 2011-08-30 Emc Corporation Techniques for obtaining a specified lifetime for a data storage device
US7855931B2 (en) 2008-07-21 2010-12-21 Micron Technology, Inc. Memory system and method using stacked memory device dice, and system using the memory system
US8289760B2 (en) 2008-07-02 2012-10-16 Micron Technology, Inc. Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes
US7969809B2 (en) 2008-08-05 2011-06-28 Sandisk Il Ltd. Power consumption-oriented management of a storage system
US8756369B2 (en) 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US20100174845A1 (en) 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
KR20100082185A (ko) 2009-01-08 2010-07-16 삼성전자주식회사 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8250328B2 (en) 2009-03-24 2012-08-21 Micron Technology, Inc. Apparatus and method for buffered write commands in a memory
US8429498B1 (en) 2009-03-25 2013-04-23 Apple Inc. Dual ECC decoder
US8055816B2 (en) 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
EP2284714A1 (de) 2009-08-14 2011-02-16 Nxp B.V. Speichersteuerung mit externem Auffrischungsmechanismus
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8473669B2 (en) 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US8213255B2 (en) 2010-02-19 2012-07-03 Sandisk Technologies Inc. Non-volatile storage with temperature compensation based on neighbor state information
US8164967B2 (en) 2010-03-24 2012-04-24 Apple Inc. Systems and methods for refreshing non-volatile memory
US20110252215A1 (en) 2010-04-09 2011-10-13 International Business Machines Corporation Computer memory with dynamic cell density
US8397101B2 (en) 2010-06-03 2013-03-12 Seagate Technology Llc Ensuring a most recent version of data is recovered from a memory
CN103080917B (zh) 2010-06-18 2014-08-20 Lsi公司 可扩展存储装置
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8862807B2 (en) 2010-08-20 2014-10-14 Samsung Electronics Co., Ltd. Semiconductor storage device and method of throttling performance of the same
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8539139B1 (en) 2010-12-17 2013-09-17 Teradota Us, Inc. Managing device wearout using I/O metering
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8397023B2 (en) 2010-12-18 2013-03-12 Lsi Corporation System and method for handling IO to drives in a memory constrained environment
US8595415B2 (en) 2011-02-02 2013-11-26 Micron Technology, Inc. At least semi-autonomous modules in a memory system and methods
US8472274B2 (en) 2011-03-02 2013-06-25 Apple Inc. Using temperature sensors with a memory device
US8918595B2 (en) 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
US8954689B2 (en) 2011-06-30 2015-02-10 Seagate Technology Llc Limiting activity rates that impact life of a data storage media
CN103858116B (zh) 2011-08-09 2015-09-02 Lsi公司 I/o设备及计算主机互操作
KR101900423B1 (ko) 2011-09-19 2018-09-21 삼성전자주식회사 반도체 메모리 장치
US8321627B1 (en) 2011-10-06 2012-11-27 Google Inc. Memory operation command latency management
US8886872B1 (en) 2011-10-06 2014-11-11 Google Inc. Memory command dispatch in a data storage device
US8255618B1 (en) 2011-10-06 2012-08-28 Google Inc. Performance isolation in a shared memory device
US8683309B2 (en) 2011-10-28 2014-03-25 Lsi Corporation Systems and methods for ambiguity based decode algorithm modification
US8443271B1 (en) 2011-10-28 2013-05-14 Lsi Corporation Systems and methods for dual process data decoding
KR101861184B1 (ko) 2011-11-02 2018-05-28 삼성전자주식회사 스토리지의 동작 성능 조절방법 및 그에 따른 반도체 저장장치
KR101824949B1 (ko) 2011-11-23 2018-02-05 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치
US8825967B2 (en) 2011-12-08 2014-09-02 Conversant Intellectual Property Management Inc. Independent write and read control in serially-connected devices
US9082489B2 (en) 2012-01-13 2015-07-14 Stec, Inc. Programming algorithm for improved flash memory endurance and retention
US8949512B2 (en) 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
US8892811B2 (en) 2012-03-01 2014-11-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing write amplification in a flash memory
JP5853899B2 (ja) 2012-03-23 2016-02-09 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US9135192B2 (en) 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
US9337865B2 (en) 2012-05-04 2016-05-10 Seagate Technology Llc Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders
US9218281B2 (en) 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US9053808B2 (en) 2012-06-21 2015-06-09 Sandisk Technologies Inc. Flash memory with targeted read scrub algorithm
US9477591B2 (en) 2012-07-06 2016-10-25 Seagate Technology Llc Memory access requests in hybrid memory system
JP5788369B2 (ja) 2012-09-12 2015-09-30 株式会社東芝 メモリシステム、コンピュータシステム、およびメモリ管理方法
US8965383B2 (en) 2012-11-28 2015-02-24 China Mobile Communications Corporation Load balancing method and device
US8595590B1 (en) 2012-12-03 2013-11-26 Digital PowerRadio, LLC Systems and methods for encoding and decoding of check-irregular non-systematic IRA codes
US20140173239A1 (en) 2012-12-19 2014-06-19 Apple Inc. Refreshing of memory blocks using adaptive read disturb threshold
US20140229655A1 (en) 2013-02-08 2014-08-14 Seagate Technology Llc Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure
US9552288B2 (en) 2013-02-08 2017-01-24 Seagate Technology Llc Multi-tiered memory with different metadata levels
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US20140241071A1 (en) 2013-02-26 2014-08-28 Seagate Technology Llc Fast Power Loss Recovery By Swapping Boot and Recovery Data Sets in a Memory
US20140244897A1 (en) 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8984376B1 (en) 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for avoiding error mechanisms in layered iterative decoding
US9136874B2 (en) 2013-03-15 2015-09-15 Ibiquity Digital Corporation Method and apparatus for transmission and reception of in-band on-channel radio signals including complementary low density parity check coding
US10209904B2 (en) 2013-04-09 2019-02-19 EMC IP Holding Company LLC Multiprocessor system with independent direct access to bulk solid state memory resources
US9311326B2 (en) 2013-04-12 2016-04-12 Alterante, Inc. Virtual file system for automated data replication and review
US9128825B1 (en) 2013-05-17 2015-09-08 Google Inc. Optimizing allocation of flash memory to file groups
US9507733B2 (en) * 2013-06-21 2016-11-29 Microsoft Technology Licensing, Llc Cache destaging for virtual storage devices
WO2015008356A1 (ja) 2013-07-17 2015-01-22 株式会社日立製作所 ストレージコントローラ、ストレージ装置、ストレージシステム、半導体記憶装置
US20160170831A1 (en) 2013-07-25 2016-06-16 Hewlett-Packard Development Company, L.P. Response Control for Memory Modules That Include or Interface With Non-Compliant Memory Technologies
US9590916B2 (en) 2013-09-04 2017-03-07 Aruba Networks, Inc. Method and system for dynamically prioritizing user connections on network
US9201728B2 (en) 2013-09-12 2015-12-01 Seagate Technology Llc Memory device with variable code rate
KR102102224B1 (ko) 2013-10-01 2020-04-20 삼성전자주식회사 저장 장치 및 그것의 프로그램 방법
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US20150186278A1 (en) * 2013-12-26 2015-07-02 Sarathy Jayakumar Runtime persistence
US9170876B1 (en) 2013-12-31 2015-10-27 Pmc-Sierra Us, Inc. Method and system for decoding encoded data stored in a non-volatile memory
US20150261473A1 (en) 2014-03-11 2015-09-17 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US20150262632A1 (en) * 2014-03-12 2015-09-17 Fusion-Io, Inc. Grouping storage ports based on distance
KR102318478B1 (ko) 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
KR102321501B1 (ko) 2014-05-14 2021-11-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 스토리지 장치의 동작 방법
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US9612957B2 (en) 2014-07-30 2017-04-04 Qualcomm Innovation Center, Inc. Read disturb and data retention handling for NAND devices
US9582220B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
KR20160028680A (ko) 2014-09-04 2016-03-14 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
US9362000B2 (en) 2014-09-05 2016-06-07 Kabushiki Kaisha Toshiba Memory system and management method thereof
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
KR20160049200A (ko) 2014-10-27 2016-05-09 삼성전자주식회사 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US9558125B2 (en) 2014-10-27 2017-01-31 Sandisk Technologies Llc Processing of un-map commands to enhance performance and endurance of a storage device
US9916087B2 (en) 2014-10-27 2018-03-13 Sandisk Technologies Llc Method and system for throttling bandwidth based on temperature
CN105701021B (zh) 2014-12-10 2021-03-02 慧荣科技股份有限公司 数据储存装置及其数据写入方法
US20160210060A1 (en) 2015-01-21 2016-07-21 HGST Netherlands B.V. Dynamic resource allocation within storage devices
KR102291803B1 (ko) 2015-04-07 2021-08-24 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법
US9645765B2 (en) 2015-04-09 2017-05-09 Sandisk Technologies Llc Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to single relative memory address
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
US20160371394A1 (en) 2015-06-22 2016-12-22 The Governing Council Of The University Of Toronto Indoor localization using crowdsourced data

Also Published As

Publication number Publication date
CN105718213B (zh) 2019-01-15
CN105718213A (zh) 2016-06-29
US20160117253A1 (en) 2016-04-28
US9952978B2 (en) 2018-04-24

Similar Documents

Publication Publication Date Title
DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112011103295B4 (de) Decodieren in Solid-State-Speichereinheiten
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE102019123709A1 (de) Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE112016004629T5 (de) Datencodiertechniken für eine Vorrichtung
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102018123805A1 (de) Vorgang für verteiltes Programmieren
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102017128941A1 (de) Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE102017120826A1 (de) Verfahren und Vorrichtung zum Überwachen von Speicher unter Verwendung einer Hintergrundmedienabtastung
DE112016002305T5 (de) Reduktion der Schreibverstärkung in einem Objektspeicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES INC., PLANO, US

Free format text: FORMER OWNER: SANDISK ENTERPRISE IP LLC, MILPITAS, CALIF., US

Owner name: SANDISK TECHNOLOGIES LLC, PLANO, US

Free format text: FORMER OWNER: SANDISK ENTERPRISE IP LLC, MILPITAS, CALIF., US

R082 Change of representative

Representative=s name: PROCK, THOMAS, DIPL.-ING. (FH) DR., GB

Representative=s name: MARKS & CLERK LLP, GB

Representative=s name: DEHNS, DE

Representative=s name: DEHNS GERMANY, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES LLC, PLANO, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES INC., PLANO, TEX., US

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: MARKS & CLERK LLP, GB

Representative=s name: DEHNS, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee