DE102020202379A1 - Speichersystem, speicher-controller und deren betriebsverfahren - Google Patents

Speichersystem, speicher-controller und deren betriebsverfahren Download PDF

Info

Publication number
DE102020202379A1
DE102020202379A1 DE102020202379.4A DE102020202379A DE102020202379A1 DE 102020202379 A1 DE102020202379 A1 DE 102020202379A1 DE 102020202379 A DE102020202379 A DE 102020202379A DE 102020202379 A1 DE102020202379 A1 DE 102020202379A1
Authority
DE
Germany
Prior art keywords
read
mode
operating mode
attribute
volatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020202379.4A
Other languages
English (en)
Inventor
Yong-Seok Oh
Hee-Chan SHIN
Young-ho Ahn
Do-Hyeong Lee
Jin-Yeong Kim
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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of DE102020202379A1 publication Critical patent/DE102020202379A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system

Landscapes

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

Abstract

Ausführungsformen der vorliegenden Offenbarung beziehen sich auf ein Speichersystem, einen Speicher-Controller und ein Verfahren zu deren Betrieb, insbesondere auf ein Speichersystem, einen Speicher-Controller und ein Verfahren zu deren Betrieb, die einen Lese-Attribut-Wert, einen Schreib-Attribut-Wert und einen Zeitattributwert für einen nichtflüchtigen Speichersatz berechnen und eine Betriebsart des nichtflüchtigen Speichersatzes auf der Basis von mindestens einem der Werte Leseattributwert, Schreibattributwert und Zeitattributwert bestimmen, wodurch ein Host in die Lage versetzt wird, vorherzusagen, ob ein Speicher-Controller eine Hintergrundoperation ausführt oder nicht.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die Ausführungsformen der vorliegenden Offenbarung beziehen sich auf ein Speichersystem, einen Speicher-Controller und ein Verfahren zu deren Betrieb.
  • Beschreibung des Standes der Technik
  • Ein Speichersystem, das einer Speichervorrichtung entspricht, speichert Daten auf der Grundlage einer Anforderung von einem Host, wie z.B. einem Computer, einem mobilen Endgerät (z.B. einem Smartphone, einem Tablet-PC oder ähnlichem) oder irgendeiner von verschiedenen elektronischen Vorrichtungen. Das Speichersystem kann eine Vorrichtung zum Speichern von Daten in einem nichtflüchtigen Speicher, wie z.B. ein Festkörperlaufwerk (SSD), eine universelle Flash-Speichervorrichtung (UFS), eine eingebettete MMC-Vorrichtung (eMMC) oder ähnliches, sowie eine Vorrichtung zur Speicherung von Daten auf einer Magnetplatte, wie z.B. ein Festplattenlaufwerk (HDD), umfassen.
  • Das Speichersystem kann ferner einen Speicher-Controller zur Steuerung der Speichervorrichtung enthalten. Der Speicher-Controller kann einen Befehl von einem Host empfangen und auf der Grundlage des empfangenen Befehls Operationen d.h. Vorgänge zum Lesen, Schreiben oder Löschen von Daten aus einem oder in einen flüchtigen oder nichtflüchtigen Speicher des Speichersystems ausführen oder steuern.
  • Dabei kann der Speicher-Controller aus verschiedenen Gründen während des Lese-, Schreib- oder Löschvorgangs von Daten eine Hintergrundoperation (z. B. Garbage Collection (Müllsammlung), Read-Reclaim (Lese-Zurückanforderung) oder Wear Leveling (Abnutzungs-Ausgleichung)) durchführen. In diesem Fall kann die Hintergrundoperation die Zeit erhöhen, die für die Ausführung des Lese-, Schreib- oder Löschvorgangs benötigt wird, wodurch sich die Verzögerungszeit für den Speicher-Controller zur Verarbeitung eines vom Host empfangenen Befehls erhöht. Der Host kann jedoch nicht vorhersagen, ob der Speicher-Controller die Hintergrundoperation ausführt, und daher kann der Host das Problem einer Erhöhung der Verzögerungszeit nicht im Voraus handhaben.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ausführungsformen der vorliegenden Offenbarung können ein Speichersystem, einen Speicher-Controller und ein Verfahren zu deren Betrieb bereitstellen, die es einem Host ermöglichen, genauer vorherzusagen, ob ein Speicher-Controller eine Hintergrundoperation durchführen soll.
  • Darüber hinaus können Ausführungsformen der vorliegenden Offenbarung ein Speichersystem, einen Speicher-Controller und ein Verfahren zu deren Betrieb bereitstellen, die es einem Host ermöglichen, die Situation, in der eine Verzögerung wahrscheinlich zunehmen wird, im Voraus zu handhaben.
  • Darüber hinaus können Ausführungsformen der vorliegenden Offenbarung ein Speichersystem, einen Speicher-Controller und ein Verfahren zum Betrieb derselben bereitstellen, die eine höhere Dienstgüte (QoS; Quality of Service) für einen Host bereitstellen.
  • Gemäß einem Aspekt können Ausführungsformen der vorliegenden Offenbarung ein Speichersystem mit einem nichtflüchtigen Speichersatz, der einen oder mehrere nichtflüchtige Speicher und einen Speicher-Controller, der den nichtflüchtigen Speichersatz steuert, umfassen.
  • Der Speicher-Controller kann einen Lese-Attribut-Wert, einen Schreib-Attribut-Wert und einen Zeit-Attribut-Wert für den Satz nichtflüchtiger Speicher berechnen und eine Betriebsart des Satzes nichtflüchtiger Speicher auf der Basis von mindestens einem der Werte Lese-Attribut-Wert, Schreib-Attribut-Wert und Zeit-Attribut-Wert bestimmen.
  • Wenn es sich bei der Betriebsart um eine erste Betriebsart handelt, kann der Speicher-Controller eine Hintergrundoperation steuern, dass sie nicht auf dem nichtflüchtigen Speichersatz ausgeführt wird.
  • Wenn es sich bei der Betriebsart um eine zweite Betriebsart handelt, kann der Speicher-Controller andererseits eine Hintergrundoperation steuern, dass sie auf dem nichtflüchtigen Speichersatz ausgeführt wird.
  • Wenn die eingestellten Zielbedingungen erfüllt sind, wenn die Betriebsart die zweite Betriebsart ist, kann der Speicher-Controller die Hintergrundoperation auf dem nichtflüchtigen Speichersatz stoppen und in einen Zustand wechseln, in dem die Betriebsart bereit ist, in die erste Betriebsart umgeschaltet zu werden.
  • Der Speicher-Controller kann die Betriebsart von der ersten Betriebsart in die zweite Betriebsart umschalten, wenn ein Lese-Attributwert kleiner oder gleich einem ersten Schwellwert des Lese-Attributs ist, oder wenn ein Schreib-Attributwert kleiner oder gleich einem ersten Schwellwert des Schreib-Attributs ist, oder wenn ein Zeit-Attributwert kleiner oder gleich einem ersten Schwellwert des Zeit-Attributs ist.
  • Die Zielbedingungen können sein, dass der Lese-Attributwert größer oder gleich einem zweiten Schwellwert des Lese-Attributs ist, dass der Schreib-Attributwert größer oder gleich einem zweiten Schwellwert des Schreib-Attributs ist und dass der Zeit-Attributwert größer oder gleich einem zweiten Schwellwert des Zeit-Attributs ist.
  • Der nichtflüchtige Speichersatz kann einen oder mehrere Superspeicherblöcke enthalten. Jeder der Superspeicherblöcke kann einen oder mehrere Speicherblöcke enthalten. Darüber hinaus kann der in jedem der Superspeicherblöcke enthaltene Speicherblock in einem beliebigen der nichtflüchtigen Speicher des nichtflüchtigen Speichersatzes enthalten sein.
  • Der voranstehend erwähnte Wert des Leseattributs kann beispielsweise auf der Grundlage der Differenz zwischen einem maximalen Lesezählwert jedes Superspeicherblocks und einem Schwellenwert für den Lesezählwert des Superspeicherblocks bestimmt werden.
  • Als weiteres Beispiel kann der oben genannte Wert des Leseattributs auf der Grundlage eines maximalen Lesezählwerts jedes Superspeicher-Blocks, eines Summen-Lesezählwerts jedes Superspeicher-Blocks und eines Schwellenwertes für den read-reclaim-Lesezählwert des Superspeicherblocks bestimmt werden.
  • Der oben genannte Wert des Schreibattributs kann beispielsweise auf der Grundlage der Summe der Anzahl der reservierten Superspeicherblöcke und der Anzahl der freien Superspeicherblöcke unter den Superspeicherblöcken, die in der nichtflüchtigen Speichergruppe enthalten sind, bestimmt werden.
  • Nach einem anderen Aspekt können Ausführungsformen der vorliegenden Offenbarung einen Speicher-Controller mit einer Speicherschnittstelle bereitstellen, die so konfiguriert ist, dass sie mit einem nichtflüchtigen Speichersatz mit einem oder mehreren nichtflüchtigen Speichern und einer Steuerschaltung kommuniziert.
  • Die Steuerschaltung kann einen Lese-Attribut-Wert, einen Schreib-Attribut-Wert und einen Zeit-Attribut-Wert für den Satz nichtflüchtiger Speicher berechnen und eine Betriebsart des Satzes nichtflüchtiger Speicher auf der Basis von mindestens einem der Werte Lese-Attribut-Wert, Schreib-Attribut-Wert und Zeit-Attribut-Wert bestimmen.
  • Wenn es sich bei der Betriebsart um eine erste Betriebsart handelt, kann der Steuerschaltung eine Hintergrundoperation steuern, dass sie nicht auf dem nichtflüchtigen Speichersatz ausgeführt wird.
  • Wenn es sich bei der Betriebsart hingegen um eine zweite Betriebsart handelt, kann die Steuerschaltung eine Hintergrundoperation steuern, dass sie auf dem nichtflüchtigen Speichersatz ausgeführt wird.
  • Wenn die eingestellten Zielbedingungen erfüllt sind, wenn die Betriebsart die zweite Betriebsart ist, kann die Steuerschaltung die Hintergrundoperation auf dem nichtflüchtigen Speichersatz stoppen und in einen Zustand wechseln, in dem die Betriebsart in die erste Betriebsart umgeschaltet werden kann.
  • Die Steuerschaltung kann die Betriebsart von der ersten Betriebsart in die zweite Betriebsart umschalten, wenn ein Lese-Attributwert kleiner oder gleich einem ersten Schwellwert des Lese-Attributs ist, oder wenn ein Schreib-Attributwert kleiner oder gleich einem ersten Schwellwert des Schreib-Attributs ist, oder wenn ein Zeit-Attributwert kleiner oder gleich einem ersten Schwellwert des Zeit-Attributs ist.
  • Die Zielbedingungen können sein, dass der Lese-Attributwert größer oder gleich einem zweiten Schwellwert des Lese-Attributs ist, dass der Schreib-Attributwert größer oder gleich einem zweiten Schwellwert des Schreib-Attributs ist und dass der Zeit-Attributwert größer oder gleich einem zweiten Schwellwert des Zeit-Attributs ist.
  • Der nichtflüchtige Speichersatz kann einen oder mehrere Superspeicherblöcke enthalten. Jeder der Superspeicherblöcke kann einen oder mehrere Speicherblöcke enthalten. Darüber hinaus kann der in jedem der Superspeicherblöcke enthaltene Speicherblock in einem beliebigen der nichtflüchtigen Speicher des nichtflüchtigen Speichersatzes enthalten sein.
  • Der voranstehend erwähnte Wert des Leseattributs kann beispielsweise auf der Grundlage der Differenz zwischen einem maximalen Lesezählwert jedes Superspeicherblocks und einem Schwellenwert für den read-reclaim-Lesezählwert des Superspeicherblocks bestimmt werden.
  • Als weiteres Beispiel kann der voranstehend angegebene Wert des Leseattributs auf der Grundlage eines maximalen Lesezählwerts jedes Superspeicher-Blocks, eines Summen-Lesezählwerts jedes Superspeicher-Blocks und eines Schwellenwertes für den read-reclaim-Lesezählwert des Superspeicherblocks bestimmt werden.
  • Der voranstehend angegebene Wert des Schreibattributs kann beispielsweise auf der Grundlage der Summe der Anzahl der reservierten Superspeicherblöcke und der Anzahl der freien Superspeicherblöcke unter den Superspeicherblöcken, die in der nichtflüchtigen Speichergruppe enthalten sind, bestimmt werden.
  • Nach einem anderen Aspekt können Ausführungsformen der vorliegenden Offenbarung ein Verfahren zum Betrieb eines Speicher-Controllers zur Steuerung eines nichtflüchtigen Speichersatzes, der einen oder mehrere nichtflüchtige Speicher enthält, bereitstellen.
  • Das Verfahren zum Betrieb des Speicher-Controllers kann einen Schritt zur Berechnung eines Lese-Attribut-Wertes, eines Schreib-Attribut-Wertes und eines Zeit-Attribut-Wertes für den nichtflüchtigen Speichersatz umfassen.
  • Das Verfahren zum Betrieb des Speicher-Controllers kann einen Schritt zur Bestimmung der Betriebsart des nichtflüchtigen Speichers umfassen, der auf der Grundlage von mindestens einem der Werte für das Lese-Attribut, das Schreib-Attribut oder das Zeit-Attribut festgelegt wird.
  • Wenn es sich bei der Betriebsart um eine erste Betriebsart handelt, kann der Speicher-Controller eine Hintergrundoperation steuern, dass sie nicht auf dem nichtflüchtigen Speichersatz ausgeführt wird.
  • Wenn es sich bei der Betriebsart um eine zweite Betriebsart handelt, kann der Speicher-Controller andererseits eine Hintergrundoperation steuern, dass sie auf dem nichtflüchtigen Speichersatz ausgeführt wird.
  • Wenn die eingestellten Zielbedingungen erfüllt sind, wenn die Betriebsart die zweite Betriebsart ist, kann der Speicher-Controller die Hintergrundbetrieb auf dem nichtflüchtigen Speichersatz stoppen und in einen Zustand wechseln, in dem die Betriebsart in die erste Betriebsart umgeschaltet werden kann.
  • Der Speicher-Controller kann die Betriebsart von der ersten Betriebsart in die zweite Betriebsart umschalten, wenn ein Lese-Attributwert kleiner oder gleich einem ersten Schwellwert des Lese-Attributs ist, oder wenn ein Schreib-Attributwert kleiner oder gleich einem ersten Schwellwert des Schreib-Attributs ist, oder wenn ein Zeit-Attributwert kleiner oder gleich einem ersten Schwellwert des Zeit-Attributs ist.
  • Die Zielbedingungen können sein, dass der Lese-Attributwert größer oder gleich einem zweiten Schwellwert des Lese-Attributs ist, dass der Schreib-Attributwert größer oder gleich einem zweiten Schwellwert des Schreib-Attributs ist und dass der Zeit-Attributwert größer oder gleich einem zweiten Schwellwert des Zeit-Attributs ist.
  • Einem anderen Aspekt zufolge können Ausführungsformen der vorliegenden Offenbarung ein Speichersystem mit einer Speichervorrichtung mit mehreren Speicherblöcken und einem Controller, der zur Steuerung der Speichervorrichtung konfiguriert ist, bereitstellen.
  • Der Controller kann die Speichervorrichtung so steuern, dass sie in eine der ersten und zweiten Betriebsarten eintritt, basierend auf einem oder mehreren Lese-Attributwerten, einem Schreib-Attributwert und einem Zeit-Attributwert der Speicherblöcke.
  • Der Controller kann so steuern, dass er selbst in die erste Betriebsart übergeht, wenn alle Werte für das Lese-Attribut, das Schreib-Attribut und das Zeit-Attribut gleich zu jeweiligen Schwellenwerten oder größer sind.
  • Der Controller kann so steuern, dass in der ersten Betriebsart eine Vordergrund-Operation ohne eine Hintergrundoperation durchgeführt wird.
  • Der Controller kann so steuern, dass er in der zweiten Betriebsart eine Vordergrund-Operation zusammen mit der Hintergrundoperation durchführt.
  • Nach den Ausführungsformen der vorliegenden Offenbarung ist es möglich, ein Speichersystem, einen Speicher-Controller und ein Verfahren für deren Betrieb bereitzustellen, die es einem Host ermöglichen, genauer vorherzusagen, ob ein Speicher-Controller eine Hintergrundoperation durchführen soll oder nicht.
  • Darüber hinaus ist es nach den Ausführungsformen der vorliegenden Offenbarung möglich, ein Speichersystem, einen Speicher-Controller und ein Verfahren zu deren Betrieb bereitzustellen, die es einem Host ermöglichen, eine Situation, in der sich die Verzögerungszeit wahrscheinlich verlängert, im Voraus zu handhaben.
  • Darüber hinaus ist es nach den Ausführungsformen der vorliegenden Offenbarung möglich, ein Speichersystem, einen Speicher-Controller und ein Verfahren zum Betrieb derselben bereitzustellen, die für einen Host eine höhere QoS bereitstellen.
  • Figurenliste
  • Die voranstehend angegebenen und andere Aspekte, Merkmale und Vorteile der vorliegenden Offenbarung sind aus der folgenden ausführlichen Beschreibung in Verbindung mit den beiliegenden Zeichnungen näher ersichtlich:
    • 1 ist ein Diagramm, das schematisch die Konfiguration eines Speichersystems entsprechend den Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 2 ist ein Diagramm, das schematisch einen nichtflüchtigen Speicher gemäß den Ausführungsformen der vorliegenden Offenbarung darstellt;
    • 3 ist ein Diagramm, das schematisch die Struktur eines Speicherblocks in einem nichtflüchtigen Speicher entsprechend den Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 4 ist ein Diagramm, das schematisch eine Betriebsart für einen nichtflüchtigen Speichersatz veranschaulicht, entsprechend von Ausführungsformen der vorliegenden Offenbarung;
    • 5 ist ein Flussdiagramm, das eine Operation d.h. einen Betrieb gemäß einer Betriebsart eines nichtflüchtigen Speichersatzes veranschaulicht, gemäß Ausführungsformen der vorliegenden Offenbarung;
    • 6 ist ein Diagramm, das schematisch Attributwerte zur Bestimmung einer Betriebsart eines nichtflüchtigen Speicherssatzes darstellt, entsprechend zu Ausführungsformen der vorliegenden Offenbarung;
    • 7 ist ein Zustandsdiagramm, das die Umschaltung einer Betriebsart für einen nichtflüchtigen Speichersatz entsprechend zu Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 8 ist ein Diagramm, das die Konfiguration eines Superspeicherblocks in einem nichtflüchtigen Speichersatz illustriert, entsprechend zu Ausführungsformen der vorliegenden Offenbarung gesetzt ist;
    • 9 ist ein Diagramm, das ein Verfahren zur Berechnung eines verfügbaren Lesezählwertes eines Superspeicherblocks gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 10 ist ein Diagramm, das veranschaulicht, wie ein Leseattribut-Wert für einen nichtflüchtigen Speichersatz erhalten wird, wenn das mit Bezugnahme auf 9 beschriebene Verfahren anwendet wird;
    • 11 ist ein Diagramm, das ein Verfahren zur Berechnung eines verfügbaren Lesezählwertes eines Superspeicherblocks gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 12 ist ein Diagramm, das veranschaulicht, wie ein Leseattribut-Wert für einen nichtflüchtigen Speichersatz erhalten wird, indem das unter Bezugnahme auf 11 beschriebene Verfahren angewendet wird;
    • 13 ist ein Diagramm, das schematisch eine Bandbreite für eine Leseoperation gemäß Ausführungsformen der vorliegenden Offenbarung darstellt;
    • 14 ist ein Diagramm, das veranschaulicht, wie ein Schreibattributwert für einen nichtflüchtigen Speichersatz erhalten wird, entsprechend zu Ausführungsformen der vorliegenden Offenbarung;
    • 15 ist ein Flussdiagramm, das einen Prozess veranschaulicht, bei dem ein Speicher-Controller eine Speicherbereinigung (Müllsammlung bzw. garbage collection) gemäß Ausführungsformen der vorliegenden Offenbarung durchführt;
    • 16 ist ein Flussdiagramm, das einen anderen Prozess veranschaulicht, bei dem ein Speicher-Controller eine Speicherbereinigung entsprechend den Ausführungsformen der vorliegenden Offenbarung durchführt;
    • 17 ist ein Flussdiagramm, das ein Verfahren zum Betrieb eines Speicher-Controllers gemäß den Ausführungsformen der vorliegenden Offenbarung veranschaulicht; und
    • 18 ist ein Blockdiagramm, das schematisch ein Computersystem gemäß den Ausführungsformen der vorliegenden Offenbarung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Nachstehend werden Ausführungsformen der Offenbarung unter Bezugnahme auf die beiliegenden Zeichnungen ausführlich beschrieben.
  • 1 ist ein Diagramm, das schematisch die Konfiguration eines Speichersystems entsprechend den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • Unter Bezugnahme auf 1 kann ein Speichersystem 100 gemäß den Ausführungsformen der vorliegenden Offenbarung einen nichtflüchtigen Speichersatz 110 und einen Speicher-Controller 120, der den nichtflüchtigen Speichersatz 110 steuert, umfassen.
  • Der nichtflüchtige Speichersatz 110 kann einen oder mehrere nichtflüchtige Speicher (Non Volatile Memory; NVM) enthalten, und jeder der nichtflüchtigen Speicher (NVM) kann eine Vielzahl von Speicherblöcken enthalten. Der nichtflüchtige Speichersatz 110 kann als Reaktion auf die Steuerung des Speicher-Controllers 120 arbeiten.
  • Der Betrieb des nichtflüchtigen Speichersatzes 110 kann z.B. eine Leseoperation, eine Programmoperation (auch als „Schreiboperation“ bezeichnet), eine Löschoperation und ähnliches umfassen.
  • Jeder der nichtflüchtigen Speicher (NVM), die im nichtflüchtigen Speichersatz 110 enthalten sind, kann ein Speicherzellenfeld mit einer Vielzahl von Speicherzellen (im Folgenden einfach als „Zellen“ bezeichnet) enthalten, die Daten speichern. Ein solches Speicherzellenfeld kann innerhalb eines Speicherblocks existieren.
  • Der nichtflüchtige Speicher (NVM) kann beispielsweise in verschiedenen Typen implementiert werden, wie z.B. NAND-Flash-Speicher, vertikaler NAND-Flash-Speicher, NOR-Flash-Speicher, Phasenwechselspeicher (PRAM), magnetoresistiver Speicher mit wahlfreiem Zugriff (MRAM), ferroelektrischer Speicher mit wahlfreiem Zugriff (FRAM) und dergleichen.
  • Zudem kann der nichtflüchtige Speicher (NVM) als dreidimensionale Array-Struktur implementiert werden. Ausführungsformen der Offenbarung können auf einen Ladungsfallen-Flash (CTF) angewendet werden, bei dem eine Ladungsspeicherschicht aus einem isolierenden Film besteht, sowie auf eine Flash-Speichervorrichtung, bei der die Ladungsspeicherschicht aus einem leitenden Floating-Gate besteht.
  • Der nichtflüchtige Speichersatz 110 kann so konfiguriert werden, dass er einen Befehl, eine Adresse oder ähnliches vom Speicher-Controller 120 empfängt und auf den durch die Adresse im Speicherzellenfeld ausgewählten Bereich zugreift. Das heißt, der nichtflüchtige Speichersatz 110 kann eine einem Befehl entsprechende Operation auf den durch die Adresse ausgewählten Bereich ausführen.
  • Zum Beispiel kann der nichtflüchtige Speichersatz 110 eine Programmoperation, eine Leseoperation, eine Löschoperation und ähnliches durchführen. In diesem Zusammenhang kann der nichtflüchtige Speichersatz 110 während des Programmbetriebs Daten in den durch die Adresse ausgewählten Bereich programmieren. Während des Lesevorgangs kann der nichtflüchtige Speichersatz 110 Daten aus dem durch die Adresse ausgewählten Bereich lesen. Beim Löschvorgang kann der nichtflüchtige Speichersatz 110 Daten in dem durch die Adresse ausgewählten Bereich löschen.
  • Der Speicher-Controller 120 kann Schreib- (Programm-), Lese-, Lösch- und Hintergrundoperationen auf dem nichtflüchtigen Speichersatz 110 steuern. Die Hintergrundoperation kann beispielsweise mindestens eine der folgenden Operationen umfassen: Garbage Collection (Müll-Sammlung) GC, Wear Levelling (Abnutzungs-Ausgleichung), Bad Block Management (Schlechtes Blockmanagement; BBM) und ähnliches.
  • Der Speicher-Controller 120 kann den Betrieb des nichtflüchtigen Speichersatzes 110 entsprechend einer Anforderung eines Hosts HOST steuern. Alternativ kann der Speicher-Controller 120 den Betrieb des nichtflüchtigen Speichersatzes 110 unabhängig von der Anforderung des Hosts HOST steuern.
  • Zudem können der Speicher-Controller 120 und der Host HOST separate Vorrichtungen sein. In einigen Fällen können der Speicher-Controller 120 und der Host-HOST in einer Vorrichtung integriert sein. In der folgenden Beschreibung werden der Speicher-Controller 120 und der Host HOST als voneinander getrennt beschrieben.
  • Gemäß 1 kann der Speicher-Controller 120 eine Speicherschnittstelle 122 und eine Steuerschaltung 123 sowie eine Host-Schnittstelle 121 enthalten.
  • Die Host-Schnittstelle 121 bietet eine Schnittstelle für die Kommunikation mit dem HostHOST.
  • Der Steuer-Schaltung 123 kann einen Befehl vom Host HOST über die Host-Schnittstelle 121 empfangen und den empfangenen Befehl verarbeiten.
  • Die Speicherschnittstelle 122 ist mit dem nichtflüchtigen Speichersatz 110 verbunden, um eine Schnittstelle für die Kommunikation mit dem nichtflüchtigen Speichersatz 110 bereitzustellen. Das heißt, die Speicherschnittstelle 122 kann so konfiguriert werden, dass sie als Reaktion auf die Steuerung der Steuerschaltung 123 eine Schnittstelle zwischen dem nichtflüchtigen Speichersatz 110 und dem Speicher-Controller 120 bereitstellt.
  • Die Steuerschaltung 123 führt die gesamte Steueroperation des Speicher-Controllers 120 aus und steuert damit den Betrieb des nichtflüchtigen Speichersatzes 110. Zu diesem Zweck kann die Steuerschaltung 123 beispielsweise mindestens einen Prozessor 124, einen Arbeitsspeicher 125 oder ähnliches enthalten. In einigen Fällen kann die Steuerschaltung 123 außerdem eine Fehlererkennungs- und Korrekturschaltung (ECC-Schaltung) 126 enthalten.
  • Der Prozessor 124 kann den gesamten Betrieb des Speicher-Controllers 120 steuern und logische Operationen durchführen. Der Prozessor 124 kann mit dem Host HOST über die Host-Schnittstelle 121 und mit dem nichtflüchtigen Speicher Satz 110 über die Speicherschnittstelle 122 kommunizieren.
  • Der Prozessor 124 kann die Funktion einer Flash-Translationsschicht (FTL) übernehmen. Der Prozessor 124 kann eine vom Host bereitgestellte logische Blockadresse (LBA) über die FTL in eine physikalische Blockadresse (PBA) umwandeln. Die FTL kann eine logische Blockadresse (LBA) empfangen und diese mittels einer Abbildungstabelle in eine physikalische Blockadresse (PBA) umwandeln.
  • Es gibt mehrere Verfahren zur Abbildung der Adressen durch die Flash-Übersetzungsschicht, die von einer Abbildungseinheit abhängen. Zu den typischen Adresszuordnungs- bzw. Abbildungs-Verfahren gehören ein Seitenzuordnungsverfahren, ein Blockzuordnungsverfahren und ein hybrides Zuordnungsverfahren.
  • Der Prozessor 124 ist so konfiguriert, dass er die vom Host HOST empfangenen Daten zufällig verteilt. Beispielsweise kann der Prozessor 124 die vom Host HOST empfangenen Daten mit Hilfe eines Randomisierungs-Keims d.h. Seeds randomisieren. Die randomisierten Daten werden dem nichtflüchtigen Speicher Set 110 als zu speichernde Daten zur Verfügung gestellt und in das Speicherzellenfeld einprogrammiert.
  • Der Prozessor 124 ist so konfiguriert, dass er während eines Lesevorgangs vom nichtflüchtigen Speichersatz 110 empfangene Daten derandomisiert. Beispielsweise kann der Prozessor 124 die vom nichtflüchtigen Speichersatz 110 empfangenen Daten mit Hilfe des Derandomisierungs-Seeds derandomisieren. Die derandomisierten Daten können an den Host HOST ausgegeben werden.
  • Der Prozessor 124 kann Firmware ausführen, um den Betrieb des Speicher-Controllers 120 zu steuern. Mit anderen Worten, der Prozessor 124 kann die zum Zeitpunkt des Bootens in den Arbeitsspeicher 125 geladene Firmware ausführen (steuern), um den gesamten Betrieb des Speicher-Controllers 120 zu steuern und logische Operationen durchzuführen.
  • Die Firmware ist ein Programm, das im Speichersystem 100 ausgeführt wird, und kann verschiedene Funktionsschichten enthalten.
  • Zum Beispiel kann die Firmware mindestens eine FTL, die eine Umwandlung zwischen einer vom Host HOST an das Speichersystem 100 angeforderten logischen Adresse und einer physikalischen Adresse des nichtflüchtigen Speichersatzes 110 durchführt, eine Host-Schnittstellenschicht (HIL), die einen vom Host HOST an das Speichersystem 100, d.h. eine Speichervorrichtung, angeforderten Befehl interpretiert und diesen an die FTL überträgt, eine Flash-Schnittstellenschicht (FIL), die einen von der FTL angezeigten Befehl an den nichtflüchtigen Speichersatz 110 überträgt, enthalten.
  • Die Firmware kann z.B. in dem nichtflüchtigen Speichersatz 110 gespeichert und dann in den Arbeitsspeicher 125 geladen werden.
  • Der Arbeitsspeicher 125 kann Firmware, Programmcode, Befehle oder Daten speichern, die für die Ansteuerung des Speicher-Controllers 120 erforderlich sind. Der Arbeitsspeicher 125 kann z.B. als flüchtiger Speicher mindestens einen statischen RAM (SRAM), dynamischen RAM (DRAM), synchronen DRAM (SDRAM) und ähnliches enthalten.
  • Die Fehlererkennungs- und Korrekturschaltung 126 kann so konfiguriert werden, dass sie ein Fehlerbit der zu prüfenden Daten mit Hilfe eines Fehlerkorrekturcodes erkennt und das erkannte Fehlerbit korrigiert. Dabei können die zu prüfenden Daten z.B. im Arbeitsspeicher 125 gespeicherte Daten oder aus dem nichtflüchtigen Speichersatz 110 gelesene Daten sein.
  • Die Fehlererkennungs- und Korrekturschaltung 126 kann zur Dekodierung der Daten mit dem Fehlerkorrekturcode implementiert sein. Die Fehlererkennungs- und Korrekturschaltkreis 126 kann als einer von verschiedenen Code-Decodern implementiert werden. So kann z.B. ein Decoder verwendet werden, der eine unsystematische Codedecodierung oder ein Decoder, der eine systematische Codedecodierung durchführt.
  • Zum Beispiel kann die Fehlererkennungs- und Korrekturschaltung 126 ein Fehlerbit in Sektoreinheiten für jedes gelesene Datenstück erkennen. Das heißt, jeder gelesene Datenblock kann eine Vielzahl von Sektoren enthalten. Ein Sektor kann eine kleinere Dateneinheit sein als eine Seite, die eine Leseeinheit des Flash-Speichers ist. Die Sektoren, aus denen die einzelnen Lesedaten bestehen, können unter Verwendung von Adressen relativ zueinander angeordnet werden.
  • Die Fehlererkennungs- und Korrekturschaltung 126 kann eine Bitfehlerrate (BER) erzeugen und bestimmen, ob eine Korrektur in Einheiten von Sektoren möglich ist. Wenn die BER höher als ein Referenzwert ist, kann die Fehlererkennungs- und Korrekturschaltung 126 feststellen, dass der entsprechende Sektor nicht korrigierbar ist (oder ausgefallen ist). Ist die BER hingegen niedriger als ein Referenzwert, kann die Fehlererkennungs- und Korrekturschaltung 126 feststellen, dass der entsprechende Sektor korrigierbar ist (oder bestanden wurde).
  • Die Fehlererkennungs- und Korrekturschaltung 126 kann die Fehlererkennung und - korrektur nacheinander für alle gelesenen Daten durchführen. Wenn der in den Lesedaten enthaltene Sektor korrigierbar ist, kann die Fehlererkennungs- und Korrekturschaltung 126 die Fehlererkennungs- und Korrekturoperation auf dem entsprechenden Sektor für die nächsten Lesedaten auslassen. Wenn der Fehlererkennungs- und Korrekturvorgang für alle Lesedaten wie oben beschrieben abgeschlossen ist, kann die Fehlererkennungs- und Korrekturschaltung 126 einen als unkorrigierbar bestimmten Sektor erkennen. Ein oder mehrere Sektoren können als unkorrigierbar bestimmt werden. Die Fehlererkennungs- und - korrekturschaltung 126 kann Informationen über die als unkorrigierbar bestimmten Sektoren (z.B. Adressinformationen) an den Prozessor 124 übermitteln.
  • Der Bus 127 kann so konfiguriert werden, dass er einen Kanal zwischen den Komponenten 121, 122, 124, 125 und 126 des Speicher-Controllers 120 bereitstellt. Der Bus 127 kann z.B. einen Steuerbus zur Übertragung verschiedener Steuersignale, Befehle und ähnliches, sowie einen Datenbus zur Übertragung einer Vielzahl von Daten enthalten.
  • Die oben beschriebenen Komponenten 121, 122, 124, 125 und 126 des Speicher-Controllers 120 sind nur Beispiele. Einige der oben beschriebenen Komponenten 121, 122, 124, 125 und 126 des Speicher-Controllers 120 können ausgeschlossen oder in ein Element integriert werden. In einigen Fällen können zusätzlich zu den oben genannten Komponenten des Speicher-Controllers 120 eine oder mehrere andere Komponenten hinzugefügt werden.
  • Nachstehend wird der nichtflüchtige Speicher, der in dem nichtflüchtigen Speichersatz 110 enthalten ist, unter Bezugnahme auf 2 näher beschrieben.
  • 2 ist ein Diagramm, das schematisch einen nichtflüchtigen Speicher gemäß den Ausführungsformen der vorliegenden Offenbarung darstellt.
  • Unter Bezugnahme auf 2 kann der nichtflüchtige Speicher nach den Ausführungsformen der vorliegenden Offenbarung ein Speicherzellenfeld 210, einen Adressdecoder 220, eine Schreib- und Leseschaltung 230, eine Steuerlogik 240, eine Spannungserzeugungsschaltung 250 und Ähnliches umfassen.
  • Das Speicherzellenfeld 210 kann eine Vielzahl von Speicherblöcken BLK1 bis BLKz (wobei z eine natürliche Zahl von 2 oder mehr ist) enthalten.
  • In der Vielzahl von Speicherblöcken BLK1 bis BLKz können mehrere Wortleitungen WL und mehrere Bitleitungen BL und mehrere Speicherzellen MC angeordnet werden.
  • Die Vielzahl der Speicherblöcke BLK1 bis BLKz können über die Vielzahl der Wortleitungen WL mit dem Adressdecoder 220 verbunden werden. Die Vielzahl der Speicherblöcke BLK1 bis BLKz können über die Vielzahl der Bitleitungen BL mit der Schreib- und Leseschaltung 230 verbunden werden.
  • Jeder der Vielzahl von Speicherblöcken BLK1 bis BLKz kann eine Vielzahl von Speicherzellen enthalten. Zum Beispiel kann die Vielzahl von Speicherzellen nichtflüchtige Speicherzellen mit einer vertikalen Kanalstruktur sein.
  • Das Speicherzellenfeld 210 kann als Speicherzellenfeld mit einer zweidimensionalen Struktur oder in einigen Fällen als Speicherzellenfeld mit einer dreidimensionalen Struktur konfiguriert werden.
  • Jede der Vielzahl Speicherzellen, die in dem Speicherzellenfeld 210 enthalten sind, kann mindestens ein Datenbit speichern. Zum Beispiel kann jede der Vielzahl von Speicherzellen, die in dem Speicherzellenfeld 210 enthalten sind, eine einstufige Zelle (SLC) sein, die ein Datenbit speichert. Ein weiteres Beispiel: Jede der Vielzahl von Speicherzellen, die in dem Speicherzellenfeld 210 enthalten sind, kann eine mehrstufige Zelle (MLC) sein, die zwei Datenbits speichert. Ein weiteres Beispiel ist, dass jede der Vielzahl von Speicherzellen in dem Speicherzellenfeld 210 eine dreistufige Zelle (TLC) sein kann, die drei Datenbits speichert. Ein weiteres Beispiel ist, dass jede der mehreren Speicherzellen im Speicherzellenfeld 210 eine vierstufige Zelle (QLC) sein kann, die 4 Datenbits speichert. Ein weiteres Beispiel: Das Speicherzellenfeld 210 kann eine Vielzahl von Speicherzellen enthalten, die jeweils fünf oder mehr Datenbits speichern.
  • Unter Bezugnahme auf 2 können der Adressdecoder 220, die Schreib- und Leseschaltung 230, die Steuerlogik 240 und die Spannungserzeugungsschaltung 250 als periphere Schaltungen zur Ansteuerung des Speicherzellenfeldes 210 arbeiten.
  • Der Adressdecoder 220 kann über eine Vielzahl von Wortleitungen WL mit dem Speicherzellenfeld 210 verbunden sein.
  • Der Adressdecoder 220 kann so konfiguriert werden, dass er als Reaktion auf die Steuerung der Steuerlogik 240 arbeitet.
  • Der Adressdecoder 220 kann Adressen über einen Ein-/Ausgabepuffer in dem nichtflüchtigen Speicher empfangen. Der Adressdecoder 220 kann so konfiguriert werden, dass er eine Blockadresse unter den empfangenen Adressen dekodiert. Der Adressdecoder 220 kann mindestens einen Speicherblock entsprechend der dekodierten Blockadresse auswählen.
  • Der Adressdecoder 220 kann eine Lesespannung Vread und eine Durchlassspannung Vpass von der Spannungserzeugungsschaltung 250 erhalten.
  • Wenn während des Lesevorgangs d.h. der Leseoperation eine Lesespannung angelegt wird, kann der Adressdecoder 220 eine Lesespannung Vread an eine ausgewählte Wortleitung WL in einem ausgewählten Speicherblock anlegen und kann eine Durchlassspannung Vpass an die verbleibenden nicht ausgewählten Wortleitungen WL anlegen.
  • Bei einer Programmverifikationsoperation kann der Adressdecoder 220 eine von der Spannungserzeugungsschaltung 250 erzeugte Verifikationsspannung d.h. Prüfspannung an eine ausgewählte Wortleitung WL in dem ausgewählten Speicherblock und kann eine Durchlassspannung Vpass an die verbleibenden nicht ausgewählten Wortleitungen WL anlegen.
  • Der Adressdecoder 220 kann so konfiguriert werden, dass er die Spaltenadressen der empfangenen Adressen dekodiert. Der Adressdecoder 220 kann die decodierten Spaltenadressen an die Schreib- und Leseschaltung 230 übertragen.
  • Der Lesevorgang d.h. eine Leseoperation und der Programmbetrieb d.h. eine Programmoperation des nichtflüchtigen Speichers können in Einheiten von Seiten durchgeführt werden. Die bei der Anforderung des Lesevorgangs und des Programmvorgangs erhaltene Adresse kann mindestens eine Blockadresse, eine Zeilenadresse oder eine Spaltenadresse enthalten.
  • Der Adressdecoder 220 kann einen Speicherblock und eine Wortleitung entsprechend der Blockadresse und der Zeilenadresse auswählen. Die Spaltenadresse kann mit dem Adressdecoder 220 dekodiert werden, um sie der Schreib- und Leseschaltung 230 zur Verfügung zu stellen.
  • Der Adressdecoder 220 kann mindestens einen Blockdecoder, einen Zeilendecoder, einen Spaltendecoder, einen Adresspuffer und ähnliches enthalten.
  • Die Schreib- und Leseschaltung 230 kann eine Vielzahl von Seitenpuffern PB enthalten. Die Lese- und Schreibschaltung 230 kann während des Lesevorgangs des Speicherzellenfeldes 210 als „Leseschaltung“ und während des Schreibvorgangs als „Schreibschaltung“ arbeiten.
  • Die oben beschriebene Lese- und Schreibschaltung 230 kann auch als „Seitenpufferschaltung“ oder „Datenregisterschaltung“ mit einer Vielzahl von Seitenpuffern PB bezeichnet werden. Hier kann die Lese- und Schreibschaltung 230 einen Datenpuffer für eine Funktion der Datenverarbeitung enthalten, und in einigen Fällen kann sie auch einen Cache-Puffer für eine Cache-Funktion enthalten.
  • Eine Vielzahl von Seitenpuffern PB kann über eine Vielzahl von Bitleitungen BL mit dem Speicherzellenfeld 210 verbunden sein. Um während des Lesevorgangs und des Programmverifikationsvorgangs Schwellenspannungen Vth der Speicherzellen erfassen, kann die Vielzahl von Seitenpuffern PB weiterhin einen Erfassungs- oder Abtaststrom an die mit den Speicherzellen verbundenen Bitleitungen BL liefern und kann eine Änderung der Strommenge, die entsprechend dem Programmzustand der entsprechenden Speicherzelle durch einen Erfassungsknoten fließt, erkennen, was dann als Erfassungsdaten gespeichert wird.
  • Die Lese- und Schreibschaltung 230 kann als Reaktion auf die von der Steuerlogik 240 ausgegebenen Seitenpuffer-Steuersignale arbeiten.
  • Beim Lesevorgang erfasst die Lese- und Schreibschaltung 230 die Daten der Speicherzelle, um die gelesenen Daten vorübergehend zu speichern, und gibt dann die Daten DATA an den Ein-/Ausgabepuffer des nichtflüchtigen Speichers aus. In einer Ausführungsform kann die Lese- und Schreibschaltung 230 eine Spaltenauswahlschaltung sowie die Seitenpuffer PBs oder Seitenregister enthalten.
  • Die Steuerlogik 240 kann mit dem Adressdecoder 220, der Schreib- und Leseschaltung 230 und der Spannungserzeugungsschaltung 250 verbunden sein. Die Steuerlogik 240 kann einen Befehl CMD und ein Steuersignal CTRL über einen Ein-/Ausgangspuffer des nichtflüchtigen Speichers empfangen.
  • Die Steuerlogik 240 kann so konfiguriert sein, dass der gesamte Betrieb des nichtflüchtigen Speichers als Reaktion auf das Steuersignal CTRL gesteuert wird. Die Steuerlogik 240 kann ein Steuersignal zur Einstellung der Vorladepotentialpegel der Erfassungsknoten der Vielzahl von Seitenpuffern PB ausgeben.
  • Die Steuerlogik 240 kann die Schreib- und Leseschaltung 230 steuern, um einen Lesevorgang auf dem Speicherzellenfeld 210 durchzuführen. Die Spannungserzeugungsschaltung 250 kann als Reaktion auf das Steuersignal der Spannungserzeugungsschaltung, das von der Steuerlogik 240 ausgegeben wird, eine Lesespannung Vread und eine Durchlassspannung Vpass erzeugen, die bei der Leseoperation verwendet werden.
  • 3 ist ein Diagramm, das schematisch die Struktur eines Speicherblocks in einem nichtflüchtigen Speicher entsprechend den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • Unter Bezugnahme auf 3 kann der in dem nichtflüchtigen Speicher enthaltene Speicherblock BLK z.B. als eine Vielzahl von Seiten PG und eine Vielzahl von Ketten (Strings) STR konfiguriert werden, die sich überschneiden.
  • Die Anzahl der Seiten PG entspricht der Anzahl der Wortzeilen WL, und die Anzahl der Ketten STR entspricht der Anzahl der Bitleitungen BL.
  • Die Vielzahl von Wortleitungen WL und die Vielzahl von Bitleitungen BL können so angeordnet werden, dass sie sich in dem Speicherblock BLK schneiden. Beispielsweise können die jeweiligen Wortleitungen der Vielzahl von Wortleitungen WL in einer Zeilenrichtung und die jeweiligen Bitleitungen der Vielzahl von Bitleitungen BL in einer Spaltenrichtung angeordnet sein. Als weiteres Beispiel können die jeweiligen Wortleitungen der Vielzahl von Wortleitungen WL in einer Spaltenrichtung und die jeweiligen Bitleitungen der Vielzahl von Bitleitungen BL in einer Zeilenrichtung angeordnet werden.
  • Die Vielzahl der Wortleitungen WL und die Vielzahl der Bitleitungen BL schneiden sich gegenseitig und definieren so eine Vielzahl von Speicherzellen MC. In jeder Speicherzelle MC kann ein Transistor TR angeordnet sein.
  • So kann der in jeder Speicherzelle MC angeordnete Transistor TR beispielsweise eine Drain, eine Source, ein Gate und ähnliches enthalten. Die Drain (oder die Source) des Transistors TR kann direkt oder über einen anderen Transistor TR mit einer entsprechenden Bitleitung BL verbunden werden. Die Source (oder die Drain) des Transistors TR kann direkt oder über einen anderen Transistor TR mit der Source-Leitung (die die Masse sein kann) verbunden werden. Das Gate des Transistors TR kann ein von einem Isolator umgebenes Floating-Gate FG und ein Steuergate CG enthalten, an das eine Gatespannung von der Wortleitung WL aus angelegt wird.
  • Jeder der mehreren Speicherblöcke BLK1 bis BLKz kann ferner eine erste Auswahlleitung (auch als „Source-Auswahlleitung“ oder „Drain-Auswahlleitung“ bezeichnet), die außerhalb einer ersten äußersten Wortleitung, die näher an der Lese- und Schreibschaltung 230 liegt, zwischen zwei äußersten Wortleitungen angeordnet ist, und eine zweite Auswahlleitung (auch als „Drain-Auswahlleitung“ oder „Source-Auswahlleitung“ bezeichnet), die außerhalb einer zweiten äußersten Wortleitung angeordnet ist, enthalten.
  • In einigen Fällen können eine oder mehrere Dummy-Wortleitungen zwischen der ersten äußersten Wortleitung und der ersten Auswahlleitung weiter angeordnet sein. Außerdem können eine oder mehrere Dummy-Wortleitungen zwischen der zweitäußersten Wortleitung und der zweiten Wählleitung weiter angeordnet sein.
  • Mit der in 3 dargestellten Speicherblockstruktur können der Lesevorgang und der Programmbetrieb (Schreibvorgang) in Einheiten von Seiten und der Löschvorgang in Einheiten von Speicherblöcken durchgeführt werden.
  • 4 ist ein Diagramm, das schematisch eine Betriebsart für einen nichtflüchtigen Speicher Satz 110 gemäß den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • Unter Bezugnahme auf 4 kann eine Betriebsart d.h. eine Betriebsart OP_MODE für den nichtflüchtigen Speichersatz 110 eine erste Betriebsart OP_MODE_1 oder eine zweite Betriebsart OP_MODE_2 sein.
  • Der Speicher-Controller 120 kann die Betriebsart OP_MODE für den nichtflüchtigen Speicher Set 110 als eine der ersten Betriebsart OP_MODE_1 oder der zweiten Betriebsart OP_MODE_2 bestimmen.
  • Der Speicher-Controller 120 kann die Betriebsart OP_MODE auf verschiedene Arten verwalten. Zum Beispiel kann der Speicher-Controller 120 die Betriebsart OP_MODE mit Hilfe eines Flag-Wertes verwalten, und in einem anderen Beispiel kann der Speicher-Controller 120 die Betriebsart OP_MODE mit Hilfe eines Statusfensters verwalten.
  • Die Betriebsart OP_MODE für den nichtflüchtigen Speicher Satz 110 kann mit der Zeit von der ersten Betriebsart OP_MODE_1 in die zweite Betriebsart OP_MODE_2 oder von der zweiten Betriebsart OP_MODE_2 in die erste Betriebsart OP_MODE_1 wechseln.
  • In diesem Fall kann die Umschaltung der Betriebsart von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 als Reaktion auf einen Befehl von dem Speicher-Controller 120 oder ohne den Befehl erfolgen, wenn die festgelegten Bedingungen erfüllt sind. Andererseits kann die Umschaltung d.h. ein Wechsel der Betriebsart von der zweiten Betriebsart OP_MODE_2 in die erste Betriebsart OP_MODE_1 nur als Reaktion auf einen Befehl vom Speicher-Controller 120 durchgeführt werden.
  • Nachstehend wird die Umschaltung der Betriebsart OP_MODE unter Bezugnahme auf 7 ausführlich beschrieben.
  • Mithin ist der Unterschied zwischen der ersten Betriebsart OP_MODE_1 und der zweiten Betriebsart OP_MODE_2 wie folgt.
  • Wenn die Betriebsart OP_MODE die erste Betriebsart OP_MODE_1 ist, kann der Speicher-Controller 120 die Steuerung so durchführen, dass eine Hintergrundoperation BG_OP auf dem nichtflüchtigen Speichersatz 110 nicht ausgeführt wird. Die Hintergrundoperation BG_OP kann z.B. Garbage Collection GC, Read Reclaim RR, WL (wear levelling) oder ähnliches sein.
  • In diesem Fall gibt es keine Latenzzeit, wenn die Hintergrundoperation in dem Prozess ausgeführt wird, in dem der Speicher-Controller 120 einen von einem Host empfangenen Befehl (z.B. einen Lese-/Schreibbefehl) verarbeitet. Daher kann der Speicher-Controller 120 den vom Host HOST empfangenen Befehl innerhalb einer bestimmten geschätzten Zeit verarbeiten und so eine hohe Dienstgüte (QoS) für den Host HOST bereitstellen. Darüber hinaus kann der Host vorhersagen, dass der an den Speicher-Controller 120 übertragene Befehl innerhalb einer festgelegten geschätzten Zeit verarbeitet wird.
  • Ist andererseits die Betriebsart OP_MODE die zweite Betriebsart OP_MODE_2, kann der Speicher-Controller 120 die Steuerung so durchführen, dass die Hintergrundoperation BG_OP auf dem nichtflüchtigen Speichersatz 110 ausgeführt wird.
  • In diesem Fall kann es zu einer Latenzzeit kommen, wenn die Hintergrundoperation BG_OP in dem Prozess ausgeführt wird, in dem der Speicher-Controller 120 einen von einem Host empfangenen Befehl (z. B. einen Lese-/Schreibbefehl) verarbeitet. Daher kann die Zeit, die der Speicher-Controller 120 für die Verarbeitung des vom Host HOST empfangenen Befehls benötigt, eine festgelegte geschätzte Zeit überschreiten.
  • Wenn die aktuelle Betriebsart OP_MODE die zweite Betriebsart OP_MODE_2 ist, kann der Host HOST außerdem vorhersagen, dass der Speicher-Controller 120 eine Hintergrundoperation durchführen kann, und kann bestimmen, dass der an den Speicher-Controller 120 übertragene Befehl wahrscheinlich nach einer festgelegten geschätzten Zeit verarbeitet wird. Daher ist der Host HOST in der Lage, das Problem der Erhöhung der Verzögerungszeit aufgrund der Hintergrundoperation in der zweiten Betriebsart OP_MODE_2 im Voraus zu behandeln.
  • Das heißt, der Speicher-Controller 120 schaltet die Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 oder die zweite Betriebsart OP_MODE_2 und führt die Steuerung so durch, dass die Hintergrundoperation nur dann ausgeführt wird, wenn die Betriebsart OP_MODE die zweite Betriebsart OP_MODE_2 ist. Dies unterscheidet sich von einem allgemeinen Fall, in dem die Hintergrundoperation unabhängig von der Betriebsart nur im Leerlauf ausgeführt wird.
  • Zudem kann ein Opfer-Speicherblock, der das Ziel der Hintergrundoperation ist, wenn der Speicher-Controller 120 eine Hintergrundoperation in der zweiten Betriebsart OP_MODE_2 ausführt, auf verschiedene Weise bestimmt werden.
  • Beispielsweise muss eine Lese-Rückforderungs-Operation (Read Reclaim) für einen Speicherblock mit einem Lesezählwert durchgeführt werden, der gleich oder größer als ein Lesezählschwellenwert von 100 ist. In diesem Fall kann der Speicher-Controller 120 nur Speicherblöcke mit Lesezählwerten gleich oder größer als ein Lesezählschwellenwert von 100 als Opfer-Speicherblöcke auswählen. Alternativ kann der Speicher-Controller 120 Speicherblöcke mit Lesezählwerten, deren Differenz zu einem Lesezählschwellenwert gleich oder kleiner als ein eingestellter Wert ist, als Opfer-Speicherblöcke auswählen. Beispielsweise kann der Speicher-Controller 120 auch Speicherblöcke mit Lesezählwerten unter 100 (z.B. 90) als Opfer-Speicherblöcke auswählen.
  • Ein weiteres Beispiel: Wenn die Anzahl der freien Speicherblöcke, in die Daten geschrieben werden können, weniger als 20 beträgt, muss die Garbage Collection (Speicherbereinigung) ausgeführt werden, bis die Anzahl der freien Speicherblöcke 20 oder mehr erreicht.
  • In diesem Fall kann der Speicher-Controller 120 die Opfer-Speicherblöcke auswählen, auf denen die Speicherbereinigung ausgeführt werden soll, bis die Anzahl der freien Speicherblöcke 20 erreicht. Alternativ kann der Speicher-Controller 120 Opfer-Speicherblöcke auswählen, bis die Anzahl der freien Speicherblöcke mehr als 20 beträgt (z.B. 25), wodurch die Garbage Collection ausgeführt wird.
  • Die Auswahl von Speicherblöcken, auf denen die Hintergrundoperation nicht sofort als Opfer-Speicherblöcke ausgeführt werden muss, soll die Zeit erhöhen, in der die Betriebsart OP_MODE die erste Betriebsart OP_MODE_1 nach Abschluss der Hintergrundoperation ist. Dies ist darauf zurückzuführen, dass die Zeit, die benötigt wird, um die Hintergrundoperation nach Abschluss der Hintergrundoperation erneut auszuführen, zunimmt, da während der Hintergrundoperation eine große Anzahl von Opfer-Speicherblöcken ausgewählt wird.
  • Nachstehend wird die oben beschriebene Umschaltung der Betriebsart anhand des Flussdiagramms in 5 beschrieben.
  • 5 ist ein Flussdiagramm, das einen Betreib in Abhängigkeit von der Betriebsart eines nichtflüchtigen Speichersatzes veranschaulicht, entsprechend von Ausführungsformen der vorliegenden Offenbarung.
  • Unter Bezugnahme auf 5 kann der Speicher-Controller 120 zunächst die aktuelle Betriebsart (S510) identifizieren.
  • Zusätzlich bestimmt der Speicher-Controller 120, ob die Betriebsart OP_MODE eine erste Betriebsart OP_MODE_1 (S520) ist oder nicht.
  • Wenn die aktuelle Betriebsart OP_MODE die erste Betriebsart OP_MODE_1 („J“ in S520) ist, führt der Speicher-Controller 120 keine Hintergrundoperation (S530) aus.
  • Wenn andererseits die aktuelle Betriebsart OP_MODE nicht die erste Betriebsart OP_MODE_1 ist (d.h. wenn die aktuelle Betriebsart eine zweite Betriebsart OP_MODE_2 ist) („N“ in S520), kann der Speicher-Controller 120 eine Hintergrundoperation (S540) ausführen.
  • Nach Schritt S540 bestimmt der Speicher-Controller 120, ob die Betriebsart OP_MODE bereit ist oder nicht, von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 (S550) umgeschaltet zu werden.
  • Wenn festgestellt wird, dass die Betriebsart OP_MODE bereit ist, in die erste Betriebsart OP_MODE_1 („Y“ in S550) umgeschaltet zu werden, kann der Speicher-Controller 120 die gerade ausgeführte Hintergrundoperation (S560) stoppen. Wenn andererseits festgestellt wird, dass die Betriebsart OP_MODE nicht bereit ist, in die erste Betriebsart OP_MODE_1 („N“ in S550) geschaltet zu werden, wiederholt der Speicher-Controller 120 die Schritte S540 und S550, bis festgestellt wird, dass die Betriebsart OP_MODE bereit ist, in die erste Betriebsart OP_MODE_1 geschaltet zu werden.
  • Das oben beschriebene Verfahren zur Bestimmung der Betriebsart unter Bezugnahme auf die 4 und 5 kann auf verschiedene Weise durchgeführt werden. Nachstehend wird ein Verfahren zur Bestimmung der Betriebsart unter Verwendung von Attributwerten entsprechend den Ausführungsformen der vorliegenden Offenbarung beschrieben.
  • 6 ist ein Diagramm, das schematisch die Attributwerte ATTR zur Bestimmung der Betriebsart OP_MODE eines nichtflüchtigen Speichersatzes 110 gemäß den Ausführungsformen der vorliegenden Offenbarung darstellt.
  • Der Speicher-Controller 120 kann die Attributwerte ATTR für den nichtflüchtigen Speichersatz 110 berechnen und auf der Grundlage der Attributwerte ATTR eine Betriebsart OP_MODE bestimmen.
  • In diesem Fall kann der Attributwert für die Bestimmung der Betriebsart OP_MODE des nichtflüchtigen Speichersatzes 110 ein Lese-Attributwert READ_ATTR, ein Schreib-Attributwert WRITE_ATTR oder ein Zeit-Attributwert TIME_ATTR sein.
  • Der Speicher-Controller 120 kann einen Lese-Attributwert READ_ATTR, einen Schreib-Attributwert WRITE_ATTR und einen Zeit-Attributwert TIME_ATTR für den nichtflüchtigen Speichersatz 110 berechnen und die Betriebsart OP_MODE des nichtflüchtigen Speichersatzes 110 auf der Basis eines oder mehrerer dieser Werte bestimmen.
  • Der Lese-Attributwert READ_ATTR, der Schreib-Attributwert WRITE_ATTR und der Zeit-Attributwert TIME_ATTR können auf verschiedene Weise definiert werden.
  • Beispielsweise kann der Leseattributwert READ_ATTR als die Anzahl der Leseoperationen definiert werden, die der Speicher-Controller 120 unter Beibehaltung der Betriebsart OP_MODE als erste Betriebsart OP_MODE_1 ausführen kann. Wenn der Leseattributwert READ_ATTR 100 ist, kann der Speicher-Controller 120 vorhersagen, dass eine Hintergrundoperation (z.B. Read-Reclaim) auf dem nichtflüchtigen Speichersatz 110 erst dann ausgeführt wird, wenn die Leseoperation auf dem nichtflüchtigen Speichersatz 110 100 Mal ausgeführt ist, d.h. während die erste Betriebsart OP_MODE_1 beibehalten wird.
  • Beispielsweise kann der Schreibattributwert WRITE_ATTR als die Anzahl der Schreiboperationen definiert werden, die der Speicher-Controller 120 ausführen kann, während die Betriebsart OP_MODE als erste Betriebsart OP_MODE_1 beibehalten wird. Wenn beispielsweise der Schreibattributwert WRITE_ATTR 50 beträgt, kann der Speicher-Controller 120 vorhersagen, dass eine Hintergrundoperation (z.B. Garbage Collection) auf dem nichtflüchtigen Speichersatz 110 erst dann ausgeführt wird, wenn die Schreiboperation auf dem nichtflüchtigen Speichersatz 110 50 Mal ausgeführt ist, d.h. während die erste Betriebsart OP_MODE_1 beibehalten wird.
  • Beispielsweise kann der Zeitattributwert TIME_ATTR als die Zeit definiert werden, die der Speicher-Controller 120 benötigt, um den Zustand zu erhalten, in dem die Betriebsart OP_MODE die erste Betriebsart OP_MODE_1 ist. Wenn beispielsweise der Zeitattributwert TIME_ATTR 30 ms beträgt, kann der Speicher-Controller 120 vorhersagen, dass eine Hintergrundoperation auf dem nichtflüchtigen Speicher Satz 110 30 ms lang nicht ausgeführt wird, d.h. während des Verbleibs in der ersten Betriebsart OP_MODE_1.
  • Zudem können die Einheiten des Lese-Attribut-Wertes READ_ATTR, des Schreib-Attribut-Wertes WRITE_ATTR und des Zeit-Attribut-Wertes TIME_ATTR, wie oben beschrieben, auf verschiedene Weise bestimmt werden.
  • Die Einheit des Lese-Attribut-Wertes READ_ATTR kann z.B. die Anzahl der Operationen oder die Größe der zu lesenden Daten (z.B. Seiten) sein. Die Einheit des Schreib-Attribut-Wertes WRITE_ATTR kann auch die Anzahl der Operationen oder die Größe der zu schreibenden Daten (z.B. Seiten) sein. Die Einheit des Zeit-Attribut-Wertes TIME_ATTR kann ein bestimmter Zeitwert (z.B. ms/µs) oder ein bestimmter periodischer Wert (z.B. ein Tick) sein.
  • 7 ist ein Zustandsdiagramm, das eine Änderung der Betriebsart OP_MODE für einen nichtflüchtigen Speichersatz 110 gemäß den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • Zunächst kann der Speicher-Controller 120 in den folgenden Fällen die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 umschalten. Wenn beispielsweise die Betriebsart OP_MODE die erste Betriebsart OP_MODE_1 ist, kann der Speicher-Controller 120 die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 umschalten, 1) wenn ein Leseattributwert READ_ATTR kleiner oder gleich einem ersten Schwellwert des Leseattributs ist, 2) wenn ein Schreibattributwert WRITE_ATTR kleiner oder gleich einem ersten Schwellwert für das Schreibattribut ist, oder 3) wenn ein Zeitattributwert TIME_ATTR kleiner oder gleich einem ersten Schwellwert für das Zeitattribut ist.
  • Wenn beispielsweise der Leseattributwert READ_ATTR kleiner oder gleich einem ersten Schwellwert für das Leseattribut ist, kann der Speicher-Controller 120 eine Lese-Rückforderungs-Operation (Read-Reclaim) auf dem nichtflüchtigen Speichersatz 110 ausführen, um Lesefehler zu verhindern, und kann die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 für den gleichen Zweck umschalten.
  • Wenn beispielsweise der Schreibattributwert WRITE_ATTR kleiner oder gleich einem ersten Schwellenwert für das Schreibattribut ist, kann der Speicher-Controller 120 eine Garbage-Collection-Operation (Speicherbereiningung) auf dem nichtflüchtigen Speichersatz 110 ausführen, um einen freien Speicherblock zu sichern, und kann die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 für den gleichen Zweck umschalten.
  • Wenn z.B. der Zeitattributwert READ_ATTR kleiner oder gleich einem ersten Zeitattributwert ist, kann der Speicher-Controller 120 feststellen, dass es notwendig ist, die Hintergrundoperation erneut auszuführen, weil seit der Ausführung der Hintergrundoperation viel Zeit vergangen ist, und kann die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 für denselben Zweck umschalten.
  • Wie voranstehend beschrieben, kann der Speicher-Controller 120, wenn einer der Werte für das Lese-Attribut READ_ATTR, das Schreib-Attribut WRITE_ATTR oder das Zeit-Attribut TIME_ATTR erschöpft ist, feststellen, dass eine Hintergrundoperation ausgeführt werden muss, damit der nichtflüchtige Speicher 110 später normal funktioniert, und kann daher die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 umschalten.
  • Ein weiteres Beispiel: Wenn ein Befehl von einem Host HOST empfangen wird, der die Umschaltung der Betriebsart OP_MODE auf die zweite Betriebsart OP_MODE_2 anweist, kann der Speicher-Controller 120 auch die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 umschalten. In diesem Fall kann der Speicher-Controller 120 die Betriebsart OP_MODE ändern, und zwar unabhängig vom Lese-Attributwert READ_ATTR, dem Schreib-Attributwert WRITE_ATTR oder dem Zeit-Attributwert TIME_ATTR.
  • Ein weiteres Beispiel: Tritt ein Fehler (z.B. fehlerhafte Laufzeitblöcke, Lese- oder Schreibfehler) in dem nichtflüchtigen Speichersatz 100 auf, kann der Speicher-Controller 120 die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 umschalten. In diesem Fall kann der Speicher-Controller 120 die Ursache des entsprechenden Fehlers feststellen und feststellen, dass eine Hintergrundoperation zur Verarbeitung des entsprechenden Fehlers ausgeführt werden muss, wodurch die Betriebsart OP_MODE auf die zweite Betriebsart OP_MODE_2 umgeschaltet wird.
  • In diesem Fall kann der Speicher-Controller 120 zusätzlich einen Sub-Zustand der zweiten Betriebsart OP_MODE_2 konfigurieren. Der Sub-Zustand kann als einer von einem ersten Sub-Zustand SUB_1 und einem zweiten Sub-Zustand SUB_2 konfiguriert werden. Wenn der Speicher-Controller 120 die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 umschaltet, wird der Sub-Zustand d.h. Unterzustand vorzugsweise als erster Sub-Zustand SUB_1 konfiguriert.
  • Wenn der Sub-Zustand der erste Sub-Zustand SUB_1 ist, kann der Speicher-Controller 120 die Betriebsart OP_MODE nicht direkt von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 umschalten. Der Speicher-Controller 120 führt eine Hintergrundoperation aus, wenn der Sub-Zustand der erste Sub-Zustand SUB_1 ist. Zusätzlich behält der Speicher-Controller 120 den ersten Sub-Zustand SUB_1 bei, bis die Betriebsart OP_MODE bereit ist, als Ergebnis der Hintergrundoperation in die erste Betriebsart OP_MODE_1 umgeschaltet zu werden.
  • Ist der Sub-Zustand hingegen der zweite Sub-Zustand SUB_2, kann der Speicher-Controller 120 die Betriebsart OP_MODE von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 umschalten.
  • Wenn die Betriebsart OP_MODE die zweite Betriebsart OP_MODE_2 ist, und wenn der Sub-Zustand der zweite Sub-Zustand SUB_2 ist, kann der Speicher-Controller 120 den aktuell laufenden Hintergrundbetrieb (Hintergrundoperation) stoppen, um die Betriebsart OP_MODE schnell von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 umzuschalten. Dabei kann der gestoppte Hintergrundbetrieb wieder aufgenommen werden, wenn die Betriebsart OP_MODE nach dem Umschalten in die erste Betriebsart OP_MODE_1 wieder in die zweite Betriebsart OP_MODE_2 wechselt.
  • Wenn die Betriebsart OP_MODE des Speicher-Controllers 120 die zweite Betriebsart OP_MODE_2 ist, und wenn der Sub-Zustand der erste Sub-Zustand SUB_1 ist, kann der Speicher-Controller 120 in dem zweiten Sub-Zustand SUB_2 sein, wenn festgelegte Zielbedingungen erfüllt sind.
  • Die Zielbedingungen für das Umschalten des Sub-Zustands von dem ersten Sub-Zustand SUB_1 in den zweiten Sub-Zustand SUB_2, wenn die Betriebsart OP_MODE des Speicher-Controllers 120 die zweite Betriebsart OP_MODE_2 ist, können auf verschiedene Weise bestimmt werden.
  • Zum Beispiel, wenn die Betriebsart OP_MODE des Speicher-Controllers 120 die zweite Betriebsart OP_MODE_2 ist, 1) wenn ein Lese-Attributwert READ_ATTR größer oder gleich einem zweiten Schwellwert des Lese-Attributs ist, 2) wenn ein Schreib-Attributwert WRITE_ATTR größer oder gleich einem zweiten Schwellwert des Schreib-Attributs ist, und 3) wenn ein Zeitattributwert größer oder gleich einem zweiten Zeitattribut-Schwellenwert ist, kann der Speicher-Controller 120 in dem Zustand sein, in dem die Betriebsart OP_MODE bereit ist, von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 umgeschaltet zu werden (i.e., der zweite Sub-Zustand SUB_2).
  • Wenn eine Hintergrundoperation ausgeführt wird, nachdem die Betriebsart OP_MODE in die zweite Betriebsart OP_MODE_2 geändert wurde, können der Lese-Attributwert READ_ATTR, der Schreib-Attributwert WRITE_ATTR und der Zeit-Attributwert TIME_ATTR wieder ansteigen.
  • Wenn beispielsweise der Leseattributwert READ_ATTR größer oder gleich dem zweiten Schwellwert des Leseattributs ist, kann der Speicher-Controller 120 aufgrund einer Lese-Rückforderungs-Operation (Read-Reclaim) feststellen, dass die Leseoperation in der ersten Betriebsart OP_MODE_1 zur Ausführung bereit ist.
  • Wenn z.B. der Schreibattributwert WRITE_ATTR größer oder gleich dem zweiten Schwellwert des Schreibattributs ist, kann der Speicher-Controller 120 aufgrund einer Garbage-Collection-Operation (Speicherbereinigung) feststellen, dass der Schreibvorgang in der ersten Betriebsart OP_MODE_1 ausgeführt werden kann.
  • Wenn z. B. der Zeitattributwert TIME_ATTR größer oder gleich dem zweiten Zeitattribut-Schwellenwert ist, kann der Speicher-Controller 120 feststellen, dass die Lese- oder Schreiboperation in der ersten Betriebsart OP_MODE_1 ausgeführt werden kann, weil die Hintergrundoperation für eine bestimmte Zeit oder länger ausgeführt wird.
  • Wie oben beschrieben, kann der Speicher-Controller 120 auf der Grundlage des aktualisierten Lese-Attribut-Wertes READ_ATTR, des Schreib-Attribut-Wertes WRITE_ATTR und des Zeit-Attribut-Wertes TIME_ATTR feststellen, dass die Lese- oder Schreiboperation in der ersten Betriebsart OP_MODE_1 zur Ausführung bereit ist. In diesem Fall befindet sich der Speicher-Controller 120 in dem Zustand, in dem die Betriebsart OP_MODE bereit ist, von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 umgeschaltet zu werden.
  • Der Speicher-Controller 120 befindet sich jedoch nur dann in dem Zustand, in dem die Betriebsart OP_MODE bereit ist, von der zweiten Betriebsart OP_MODE_2 in die erste Betriebsart OP_MODE_1 umgeschaltet zu werden, wenn der Lese-Attributwert READ_ATTR, der Schreib-Attributwert WRITE_ATTR und der Zeit-Attributwert TIME_ATTR alle die Bedingungen erfüllen.
  • Wenn beispielsweise der Lese-Attributwert READ_ATTR größer oder gleich dem zweiten Schwellwert des Lese-Attributs ist, muss der Speicher-Controller, wenn der Schreib-Attributwert WRITE_ATTR kleiner als der zweite Schwellwert des Schreib-Attributs ist, die Betriebsart OP_MODE als zweite Betriebsart OP_MODE_2 beibehalten, da die Garbage Collection unter den Hintergrundoperationen ausgeführt werden muss.
  • Wenn sich der Speicher-Controller 120 in dem Zustand befindet, in dem die Betriebsart OP_MODE bereit ist, wie oben beschrieben von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 umgeschaltet zu werden, wenn der Speicher-Controller 120, vom Host HOST, einen Befehl empfängt, der die Umschaltung der Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 anweist, kann der Speicher-Controller 120 die Betriebsart OP_MODE von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 umschalten. Das heißt, in diesem Fall kann der Speicher-Controller 120 die Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 umschalten, wenn ein Befehl vom Host HOST empfangen wird, anstatt automatisch die Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 umzuschalten.
  • Nachstehend wird ein Beispiel für ein spezifisches Verfahren zur Bestimmung der oben genannten Attributwerte ATTR (Lese-Attributwerte READ_ATTR/Schreib-Attributwerte WRITE_ATTR/Zeit-attributwerte TIME_ATTR) durch den Speicher-Controller 120 ausführlich beschrieben.
  • In diesem Fall kann der Speicher-Controller 120 den nichtflüchtigen Speichersatz 110 in einen oder mehrere Superspeicherblöcke SBLK aufteilen und kann die oben genannten Attributwerte ATTR auf der Grundlage des Zustands jedes Superspeicherblocks SBLK berechnen.
  • Nachstehend wird die Konfiguration eines Superspeicherblocks SBLK unter Bezugnahme auf 8 beschrieben, und die Ermittlung eines Leseattribut- oder Schreibattributwerts auf der Grundlage des Zustands eines Superspeicherblocks SBLK, der in dem nichtflüchtigen Speichersatz 110 enthalten ist, wird unter Bezugnahme auf 9 bis 16 beschrieben.
  • 8 ist ein Diagramm, das die Konfiguration eines Superspeicherblocks SBLK in einem nichtflüchtigen Speichersatz 110 gemäß den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • Der nichtflüchtige Speichersatz 110 kann einen oder mehrere Superspeicherblöcke SBLK enthalten.
  • Jeder der Superspeicherblöcke SBLK kann einen oder mehrere Speicherblöcke BLK enthalten. Jeder der im Superspeicherblock SBLK enthaltenen Speicherblöcke kann in jedem der nichtflüchtigen Speicher (NVM) enthalten sein, die im nichtflüchtigen Speichersatz 110 enthalten sind.
  • Für alle Superspeicherblöcke SBLK, die im nichtflüchtigen Speichersatz 110 enthalten sind, kann die Anzahl der Speicherblöcke BLK, die in den jeweiligen Superspeicherblöcken SBLK enthalten sind, gleich oder unterschiedlich sein. Wie in 8 dargestellt, kann es beispielsweise Superspeicherblöcke SBLK geben, die jeweils einen, zwei und drei Speicherblöcke BLK enthalten. Alle Superspeicherblöcke SBLK können jedoch die gleiche Anzahl von Speicherblöcken BLK aufweisen (z.B. drei Speicherblöcke).
  • Zusätzlich können die jeweiligen Speicherblöcke BLK, die in einem Superspeicherblock SBLK enthalten sind, in demselben nichtflüchtigen Speicher (NVM) enthalten sein, wie in 8 gezeigt, oder können in verschiedenen nichtflüchtigen Speichern (NVM) enthalten sein.
  • Nachstehend wird ein Beispiel für ein spezifisches Verfahren zur Bestimmung eines Leseattributwertes READ_ATTR unter den Attributen ATTR durch den Speicher-Controller 120 im Falle der Konfiguration eines oder mehrerer Superspeicherblöcke SBLK, die im nichtflüchtigen Speichersatz 110 enthalten sind, wie oben unter Bezugnahme auf 9 bis 12 beschrieben, beschrieben.
  • Beispielsweise kann der Leseattributwert READ_ATTR auf der Grundlage der Differenz zwischen 1) dem maximalen Lesezählwert jedes Superspeicherblocks SBLK und 2) dem Schwellenwert RR_THRESHOLD für den Read-Reclaim-Zählwert für den Superspeicherblock SBLK bestimmt werden.
  • Der maximale Lesezahlwert des Superspeicherblocks SBLK bedeutet einen Maximalwert unter den Lesezahlwerten für die im entsprechenden Superspeicherblock SBLK enthaltenen Speicherblöcke.
  • Der Schwellwert für den Lese-Rückforderungs-Lesezählwert RR_THRESHOLD für den Superspeicherblock SBLK bedeutet einen Schwellwert für die Auslösung einer Lese-Rückforderungs-Operation für mindestens einen der Speicherblöcke, die in dem entsprechenden Superspeicherblock SBLK enthalten sind. Wenn der Lesezählwert von mindestens einem der im Superspeicherblock SBLK enthaltenen Speicherblöcke gleich oder größer als der Lesezählschwellenwert RR_THRESHOLD ist, kann eine Lese-Rückforderungs-Operation auf dem entsprechenden Superspeicherblock SBLK ausgelöst werden.
  • Nachstehend wird ein Verfahren zur Ermittlung eines Lese-Attribut-Wertes READ_ATTR unter Bezugnahme auf die 9 und 10 ausführlich beschrieben.
  • 9 ist ein Diagramm, das ein Verfahren zur Berechnung eines verfügbaren Lesezählwertes AVAIL_READ_CNT eines Superspeicherblocks SBLK gemäß den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • In 9 enthält der Superspeicherblock SBLK vier Speicherblöcke BLK_1, BLK_2, BLK_3 und BLK_4. In diesem Fall ist der Lesezählwert READ_CNT des Speicherblocks BLK_1 8, der Lesezählwert READ_CNT des Speicherblocks BLK_2 ist 7, der Lesezählwert READ_CNT des Speicherblocks BLK_3 ist 4 und der Lesezählwert READ_CNT des Speicherblocks BLK_4 ist 5. Zusätzlich ist der Schwellenwert für den Lese-Rückforderungs-Lesezählwert RR_THRESHOLD 10.
  • In diesem Fall kann der maximale Lesezählwert des Superspeicherblocks SBLK auf MAX (8, 7, 4, 5) = 8 bestimmt werden.
  • In diesem Fall kann ein verfügbarer Lesezählwert AVAIL_READ_CNT auf 2 festgelegt werden, was der Differenz zwischen dem Schwellenwert des Lesezählwertes RR_THRESHOLD „10“ und dem maximalen Lesezählwert „8“ des Superspeicherblocks SBLK entspricht.
  • Im schlimmsten Fall, wenn eine Leseoperation für den Speicherblock BLK_1 unter den im Superspeicherblock SBLK enthaltenen Speicherblöcken zwei weitere Male ausgeführt wird, wird der Lesezählwert READ_CNT des Speicherblocks BLK_1 zu 8 + 2 = 10, was dem Schwellenwert des Read-Reclaim-Lese-Zählwerts RR_THRESHOLD „10“ entspricht. In diesem Fall muss eine Read-Reclaim-Operation auf dem entsprechenden Superspeicherblock SBLK ausgeführt werden. Wenn andererseits eine Leseoperation auf einem anderen Speicherblock als dem Speicherblock BLK_1 ausgeführt wird, können zwei oder mehr Leseoperationen ausgeführt werden, bevor die Lese-Rückforderungs-Operation (Read-Reclaim) ausgeführt wird. Das bedeutet, dass die Lese-Rückforderungsoperation auf dem Superspeicherblock SBLK erst dann ausgeführt wird, wenn mindestens zwei Leseoperationen ausgeführt sind.
  • Der Speicher-Controller 120 kann einen verfügbaren Lesezählwert AVAIL_READ_CNT für jeden Superspeicherblock im nichtflüchtigen Speichersatz 110 erhalten und den Leseattributwert READ_ATTR des nichtflüchtigen Speichersatzes 110 auf der Grundlage des verfügbaren Lesezählwertes AVAIL_READ_CNT bestimmen.
  • 10 ist ein Diagramm, das veranschaulicht, wie ein Leseattributwert READ_ATTR für einen nichtflüchtigen Speichersatz 110 durch Anwendung des in 9 beschriebenen Verfahren ermittelt wird.
  • In 10 sind die vier Superspeicherblöcke SBLK #1, SBLK #2, SBLK #3 und SBLK #4 in dem nichtflüchtigen Speichersatz 110 enthalten. Zusätzlich enthält jeder Superspeicherblock drei Speicherblöcke BLK #1, BLK #2 und BLK #3. Außerdem ist der Schwellenwert RR_THRESHOLD für den Read-Reclaim-Lesezählwert 10.
  • In 10 sind die Lesezählwerte READ_CNT der Speicherblöcke BLK #1, BLK #2 und BLK #3 des Superspeicherblocks SBLK #1 jeweils 6, 0 und 0. In diesem Fall wird der maximale Lesezahlwert MAX_READ_CNT des Superspeicherblocks SBLK #1 zu MAX (6, 0, 0) = 6, und der verfügbare Lesezahlwert AVAIL_READ_CNT des Superspeicherblocks SBLK #1 ist 10 - 6 = 4.
  • Wenn die Lesezählwerte READ_CNT der Speicherblöcke BLK #1, BLK #2 und BLK #3 des Superspeicherblocks SBLK #2 jeweils 8, 8 und 8 betragen, wird der maximale Lesezählwert MAX_READ_CNT des Superspeicherblocks SBLK #2 zu MAX (8, 8, 8) = 8 und der verfügbare Lesezählwert AVAIL_READ_CNT des Superspeicherblocks SBLK #2 beträgt 10 - 8 = 2.
  • Wenn die Lesezählwerte READ_CNT der Speicherblöcke BLK #1, BLK #2 und BLK #3 des Superspeicherblocks SBLK #3 jeweils 9, 4 und 5 betragen, wird der maximale Lesezählwert MAX_READ_CNT des Superspeicherblocks SBLK #3 zu MAX (9, 4, 5) = 9 und der verfügbare Lesezählwert AVAIL_READ_CNT des Superspeicherblocks SBLK #3 beträgt 10 - 9 = 1.
  • Wenn die Lesezählwerte READ_CNT der Speicherblöcke BLK #1, BLK #2 und BLK #3 des Superspeicherblocks SBLK #4 jeweils 2, 2 und 2 betragen, wird der maximale Lesezählwert MAX_READ_CNT des Superspeicherblocks SBLK #4 zu MAX (2, 2, 2) = 2, und der verfügbare Lesezählwert AVAIL_READ_CNT des Superspeicherblocks SBLK #4 beträgt 10 - 2 = 8.
  • Wie oben beschrieben, kann der Speicher-Controller 120, wenn die verfügbaren Lesezählwerte AVAIL_READ_CNT für die jeweiligen Lesezählwerte der vier Superspeicherblöcke SBLK #1, SBLK #2, SBLK #3 und SBLK #4 ermittelt werden, einen Leseattributwert READ_ATTR auf der Basis desselben bestimmen. Beispielsweise kann der Speicher-Controller 120 den Mindestwert (d.h. MIN(4, 2, 1, 8) = 1) der ermittelten verfügbaren Lesezählwerte AVAIL_READ_CNT als Lese-Attributwert READ_ATTR bestimmen.
  • Der Leseattributwert READ_ATTR des Wertes 1 bedeutet, dass die Betriebsart nach dem einmaligen Auslesen des nichtflüchtigen Speichersatzes 110 (im ungünstigsten Fall) geändert werden kann, während in der ersten Betriebsart OP_MODE_1 verblieben wird.
  • Damit soll der Situation Rechnung getragen werden, dass der Lesevorgang kontinuierlich nur auf dem Speicherblock BLK #1, der den höchsten Lesezählwert READ_CNT aufweist, des Superspeicherblocks SBLK #3 im ungünstigsten Fall ausgeführt wird.
  • Das obige Verfahren, dass den ungünstigsten Fall (Worst Case) berücksichtigt, kann verhindern, dass der Host HOST fälschlicherweise annimmt, dass eine Leseoperation in der ersten Betriebsart OP_MODE_1 zu dem Zeitpunkt, zu dem der Speicher-Controller 120 eine Lese-Rückforderungs-Operation durchführen muss, immer noch zur Ausführung bereit ist.
  • Bei der Verwendung des obigen Verfahrens wird jedoch in den meisten Fällen die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 in die zweite Betriebsart OP_MODE_2 vor dem Zeitpunkt geschaltet, zu dem der Speicher-Controller 120 den Lese-Rückgewinnungsvorgang durchführen muss. Dies ist darauf zurückzuführen, dass die Leseoperation nicht unbedingt auf den Speicherblock mit dem höchsten Lesezählwert READ_CNT durchgeführt werden muss.
  • In diesem Fall kann die Zeit, in der die Betriebsart OP_MODE die erste Betriebsart OP_MODE_1 ist (d. h. die Zeit, die in der Lage ist, dem Host Host eine hohe QoS zu liefern), reduziert werden. Es besteht daher die Möglichkeit, dass der Host HOST die Leistung des Speichersystems 100 als gering einstuft. Da außerdem die Häufigkeit des Umschaltens der Betriebsart OP_MODE zunimmt, kann der Leistungsverlust, der auftritt, wenn das Speichersystem 100 das Umschalten der Betriebsart OP_MODE verarbeitet, zunehmen.
  • Daher kann der Speicher-Controller 120 die Anzahl der vor der Ausführung der Lese-Rückforderungs-Operation vorhergesagten Lesevorgänge bestimmen, indem er eine Änderung des gesamten Lesezählwertes ermittelt, anstatt nur den ungünstigsten Fall zu berücksichtigen.
  • Bei Verwendung dieses Verfahrens erhöht sich die vorhergesagte Anzahl der Lesevorgänge im Vergleich zu dem Fall, dass nur der ungünstigste Fall betrachtet wird, so dass die Zeit, in der die Betriebsart OP_MODE die erste Betriebsart OP_MODE_1 ist (d.h. die Zeit, die in der Lage ist, dem Host HOST eine hohe QoS zu liefern), erhöht werden kann. Da zudem die Häufigkeit des Umschaltens der Betriebsart OP_MODE minimiert wird, kann außerdem der Leistungsverlust, der auftritt, wenn das Speichersystem 100 das Umschalten der Betriebsart OP_MODE verarbeitet, ebenfalls minimiert werden.
  • Nachstehend wird ein weiteres Beispiel für ein Verfahren zur Bestimmung eines Leseattributwertes READ_ATTR durch einen Speicher-Controller 120 beschrieben.
  • Der Leseattributwert READ_ATTR kann auf der Grundlage 1) des maximalen Lesezählwertes für jeden Superspeicherblock, 2) eines Summen-Lesezählwertes für jeden Superspeicherblock und 3) eines Schwellenwertes für den Lesezählwert des Superspeicherblocks bestimmt werden.
  • In diesem Fall bedeutet der Summen-Lesezählwert für den Superspeicherblock die Summe der Lesezählwerte der jeweiligen im Superspeicherblock enthaltenen Speicherblöcke.
  • Nachstehend wird ein weiteres Verfahren zur Ermittlung eines Lese-Attribut-Wertes READ_ATTR unter Bezugnahme auf die 11 und 12 ausführlich beschrieben.
  • 11 ist ein Diagramm, das ein anderes Verfahren zur Berechnung eines verfügbaren Lesezählwertes eines Superspeicherblocks gemäß den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • In 11 sind N Speicherblöcke BLK_1, BLK_2, BLK_3,..., und BLK_N im Superspeicherblock SBLK enthalten. Zusätzlich werden die Lesezählwerte READ_CNT der N Speicherblöcke BLK_1, BLK_2, BLK_3,... und BLK_N als READ_CNT_BLK_1, READ_CNT_BLK_2, READ_CNT_BLK_3,... bzw. READ_CNT_BLK_N angenommen.
  • In diesem Fall kann der maximale Lesezahlwert MAX_READ_CNT des Superspeicherblocks SBLK als MAX bestimmt werden (READ_CNT_BLK_1, READ_CNT_BLK_2,..., READ_CNT_BLK_N).
  • Der Summen-Lesezählwert SUM_READ_CNT für den Superspeicherblock SBLK kann als (READ_CNT_BLK_1, READ_CNT_BLK_2,..., READ_CNT_BLK_N) bestimmt werden.
  • In diesem Fall sind die Muster, nach denen sich die Lesezählwerte der im Superspeicherblock SBLK enthaltenen Speicherblöcke BLK_1, BLK_2, BLK_3,..., und BLK_N im Laufe der Zeit ändern, gleich. Das heißt, der Lesezählwert eines beliebigen im Superspeicherblock SBLK enthaltenen Speicherblocks steigt im Laufe der Zeit gleichmäßig an, anstatt zu einem bestimmten Zeitpunkt schnell zu steigen.
  • In diesem Fall, das ist Verhältnis von 1) dem maximalen Lesezählwert MAX_READ_CNT des aktuellen Superspeicherblocks SBLK zu 2) dem Summen-Lesezählwert SUM_READ_CNT des aktuellen Superspeicherblocks SBLK gleich dem Verhältnis von 3) einem Schwellwert für den Lese-Rückforderungs-Zählwert RR_THRESHOLD zu 4) einen Summen-Lesezählwert ALL_READ_CNT für den Super-Speicherblock SBLK, wenn der maximale Lesezählwert MAX_READ_CNT für den Super-Speicherblock SBLK ein Schwellenwert RR_THRESHOLD für den Leserückforderungs-Lesezählwert ist.
  • Dies kann durch die folgende Gleichung ausgedrückt werden. MAX_READ_CNT:RR_THRESHOLD=SUM_READ_CNT:ALL_READ_CNT
    Figure DE102020202379A1_0001
    ALL_READ_CNT)= ( RR_THRESHOLD*SUM_READ_CNT ) / MAX_READ_CNT
    Figure DE102020202379A1_0002
  • Auf dieser Grundlage kann die verfügbare Lesezahl AVAIL_READ_CNT für den Superspeicherblock SBLK wie folgt ermittelt werden. AVAIL_READ_CNT=ALL_READ_CNT-SUM_READ_CNT
    Figure DE102020202379A1_0003
  • 12 ist ein Diagramm, das veranschaulicht, wie ein Leseattributwert für einen nichtflüchtigen Speichersatz durch Anwendung des in 11 beschriebenen Verfahrens ermittelt wird.
  • In 12 sind vier Superspeicherblöcke SBLK #1, SBLK #2, SBLK #3 und SBLK #4 in einem nichtflüchtigen Speichersatz 110 enthalten. Zusätzlich enthält jeder der Superspeicherblöcke drei Speicherblöcke BLK #1, BLK #2 und BLK #3. Der Schwellenwert RR_THRESHOLD für den Read-Reclaim-Lesezählwert ist 10.
  • In 12 sind die Lesezählwerte READ_CNT der Speicherblöcke BLK #1, BLK #2 und BLK #3 des Superspeicherblocks SBLK #1 jeweils 6, 0 und 0. In diesem Fall wird der maximale Lesezahlwert MAX_READ_CNT des Superspeicherblocks SBLK #1 zu MAX (6, 0, 0) = 6 und der summierte Lesezahlwert SUM_READ_CNT davon wird zu 6 + 0 + 0 = 6. Der Summen-Lesezählwert ALL_READ_CNT für den Superspeicherblock SBLK ist (10 * 6) / 6 = 10, wenn der maximale Lesezählwert MAX_READ_CNT für den Superspeicherblock SBLK #1 ein Schwellenwert RR_THRESHOLD für den Read-Reclaim-Lesezählwert ist.
  • Daher kann der verfügbare Lesezählwert AVAIL_READ_CNT für den Superspeicherblock SBLK #1 mit 10 - 6 = 4 bestimmt werden.
  • Wenn die Lesezählwerte READ_CNT der Speicherblöcke BLK #1, BLK #2 und BLK #3 des Superspeicherblocks SBLK #2 jeweils 8, 8 und 8 betragen, wird der maximale Lesezählwert MAX_READ_CNT des Superspeicherblocks SBLK #2 zu MAX (8, 8, 8) = 8 und der Summen-Lesezählwert SUM_READ_CNT davon wird zu 8 + 8 + 8 = 24. Der Summen-Lesezählwert ALL_READ_CNT für den Superspeicherblock SBLK ist (10 * 24) / 8 = 30, wenn der maximale Lesezählwert MAX_READ_CNT für den Superspeicherblock SBLK #2 ein Schwellenwert RR_THRESHOLD für den Read-Reclaim-Lesezählwert ist.
  • Daher kann der verfügbare Lesezählwert AVAIL_READ_CNT für den Superspeicherblock SBLK #2 mit 30 - 24 = 6 bestimmt werden.
  • Wenn die Lesezählwerte READ_CNT der Speicherblöcke BLK #1, BLK #2 und BLK #3 des Superspeicherblocks SBLK #3 9, 4 bzw. 5 betragen, wird der maximale Lesezählwert MAX_READ_CNT des Superspeicherblocks SBLK #3 zu MAX (9, 4, 5) = 9 und der Summen-Lesezählwert SUM_READ_CNT davon wird zu 9 + 4 + 5 = 18. Der Summen-Lesezählwert ALL_READ_CNT für den Superspeicherblock SBLK ist (10 * 18) / 9 = 20, wenn der maximale Lesezählwert MAX_READ_CNT für den Superspeicherblock SBLK #2 ein Schwellenwert RR_THRESHOLD für den Read-Reclaim-Lesezählwert ist.
  • Daher kann der verfügbare Lesezählwert AVAIL_READ_CNT für den Superspeicherblock SBLK #3 mit 20 - 18 = 2 bestimmt werden.
  • Wenn die Lesezählwerte READ_CNT der Speicherblöcke BLK #1, BLK #2 und BLK #3 des Superspeicherblocks SBLK #4 jeweils 2, 2 und 2 betragen, wird der maximale Lesezählwert MAX_READ_CNT des Superspeicherblocks SBLK #4 zu MAX (2, 2, 2) = 2 und die Summe der Lesezählwerte SUM_READ_CNT davon zu 2 + 2 + 2 = 6. Der Summen-Lesezählwert ALL_READ_CNT für den Superspeicherblock SBLK ist (10 * 6) / 2 = 30, wenn der maximale Lesezählwert MAX_READ_CNT für den Superspeicherblock SBLK #2 ein Schwellenwert RR_THRESHOLD für den Read-Reclaim-Lesezählwert ist.
  • Daher kann der verfügbare Lesezählwert AVAIL_READ_CNT für den Superspeicherblock SBLK #4 mit 30 - 6 = 24 bestimmt werden.
  • Wenn die verfügbaren Lesezählwerte AVAIL_READ_CNT der vier Superspeicherblöcke SBLK #1, SBLK #2, SBLK #3 und SBLK #4 wie oben beschrieben bestimmt werden, kann der Speicher-Controller 120 auf der Grundlage derselben einen Leseattributwert READ_ATTR bestimmen. Beispielsweise kann der Speicher-Controller 120 den minimalen Wert der ermittelten verfügbaren Lesezählwerte AVAIL_READ_CNT (d.h. MIN (4, 6, 2, 24) = 2) als Lese-Attributwert READ_ATTR bestimmen.
  • Wenn der Lese-Attributwert READ_ATTR gemäß des in den 9 bis 12 beschriebenen Verfahrens bestimmt wird, kann der Speicher-Controller 120 anhand des Lese-Attributwertes READ_ATTR bestimmen, ob eine Hintergrundoperation ausgeführt werden soll oder nicht. Wenn beispielsweise der Leseattributwert READ_ATTR kleiner oder gleich Null ist, kann der Speicher-Controller 120 die Betriebsart OP_MODE auf die zweite Betriebsart OP_MODE_2 umschalten und kann eine Lese-Rückforderungs-Operation (Read Reclaim) ausführen.
  • In diesem Fall kann der Speicher-Controller 120 gleichzeitig den Lese-Rückforderungs-Vorgang und eine Operation zur Verarbeitung eines vom Host HOST erhaltenen Lesebefehls ausführen. In diesem Fall ist muss der Speicher-Controller 120 eine angemessene Lesebandbreite für jede Operation sicherzustellen. Die Lesebandbreite bezieht sich auf die maximale Größe der Daten, die pro Zeiteinheit gelesen werden können. Wenn die Lesebandbreite beispielsweise 10 MB/s beträgt, kann der Speicher-Controller bis zu 10 MB Daten pro Sekunde lesen. Nachstehend wird dies unter Bezugnahme auf 13 ausführlich beschrieben.
  • 13 ist ein Diagramm, das schematisch eine Bandbreite für eine Leseoperation gemäß den Ausführungsformen der vorliegenden Offenbarung darstellt.
  • Wenn die Betriebsart OP_MODE die zweite Betriebsart OP_MODE_2 ist, kann der Speicher-Controller 120 eine minimale Lesebandbreite
    MIN_HOST_READ_BANDWIDTH für die Verarbeitung einer Leseoperation vom Host HOST beibehalten (siehe 13), wenn eine Lese-Rückforderungsoperation auf dem nichtflüchtigen Speichersatz 110 ausgeführt wird.
  • Wenn der Speicher-Controller 120 eine Lese-Rückforderungs-Operation in der zweiten Betriebsart OP_MODE_2 ausführt, kann der Speicher-Controller 120 den größten Teil der Lesebandbreite READ_BANDWIDTH nutzen, um Daten zu lesen, die ein Ziel der Lese-Rückforderungs-Operation im nichtflüchtigen Speichersatz 110 sein sollen.
  • In diesem Fall kann eine Lese-Rückforderungs-Lesebandbreite REFRESH_READ_BANDWIDTH für eine Operation des Lesens von Daten, die ein Ziel der Lese-Rückforderungs-Operation im nichtflüchtigen Speichersatz 110 sein soll, deutlich ansteigen. Infolgedessen sichert der Speicher-Controller 120 möglicherweise nicht die Bandbreite, die für die Verarbeitung des vom Host HOST empfangenen Lesebefehls erforderlich ist (d.h. eine Host-Lesebandbreite HOST_READ_BANDWIDTH). In diesem Fall verarbeitet der Speicher-Controller 120 den vom Host HOST empfangenen Lesebefehl möglicherweise nicht ordnungsgemäß.
  • Daher kann der Speicher-Controller 120 die minimale Lesebandbreite MIN_HOST_READ_BANDWIDTH für die Ausführung der Leseoperation vom Host-HOST beibehalten, selbst wenn die Lese-Rückforderungsoperation auf dem nichtflüchtigen Speichersatz 110 ausgeführt wird, wodurch der vom Host HOST empfangene Lesebefehl verarbeitet wird, während die Lese-Rückforderungsoperation innerhalb des Speichersystems 100 ausgeführt wird.
  • Zudem kann der minimale Wert der Lesebandbreite MIN_HOST_READ_BANDWIDTH als das Verhältnis der Host-Lesebandbreite HOST_READ_BANDWIDTH zu der Read-Reclaim-Lesebandbreite REFRESH_READ_BANDWIDTH (z.B. 20:1) statt als absoluter Bandbreitenwert ausgedrückt werden.
  • Zudem kann der minimale Lesebandbreiten-MIN_HOST_READ_BANDWIDTH-Wert vom Host HOST konfiguriert werden, anstatt auf einem festen Wert gehalten zu werden.
  • In den obigen Zeichnungen wurde ein Verfahren zur Bestimmung eines Lese-Attributwertes READ_ATTR unter den oben genannten Attributwerten ATTR durch den Speicher-Controller 120 im Falle der Konfiguration eines oder mehrerer Superspeicherblöcke SBLK, die im nichtflüchtigen Speichersatz 110 enthalten sind, beschrieben.
  • Nachstehend wird ein Verfahren zur Bestimmung eines Schreibattributwertes WRITE_ATTR unter den oben genannten Attributwerten ATTR durch den Speicher-Controller 120 im Falle der Konfiguration eines oder mehrerer Superspeicherblöcke SBLK, die im nichtflüchtigen Speichersatz 110 enthalten sind, unter Bezugnahme auf die 14 bis 16 beschrieben.
  • 14 ist ein Diagramm, das den Erhalt eines Schreibattributwerts WRITE_ATTR für einen nichtflüchtigen Speichersatz 110 gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • Zunächst können die Superspeicherblöcke, die im nichtflüchtigen Speichersatz 110 enthalten sind, grob in den reservierten Superspeicherblock RESERVED_SBLK, die freien Superspeicherblöcke FREE_SBLK, und die geschlossenen Superspeicherblöcke CLOSED_SBLK eingeteilt werden.
  • Die reservierten Superspeicherblöcke RESERVED_SBLK sind Superspeicherblöcke, die einige der Superspeicherblöcke ersetzen, die derzeit Daten speichern, wenn einige der Superspeicherblöcke aufgrund des Auftretens von fehlerhaften Speicherblöcken oder Problemen wie Lese- oder Schreibfehlern ersetzt werden müssen.
  • Der reservierte Superspeicherblock RESERVED_SBLK kann auf verschiedene Weise bestimmt werden. Zum Beispiel können die reservierten Super-Speicherblöcke RESERVED_SBLK einen im OP-Bereich vorhandenen Speicherblock enthalten. Zudem kann der Speicher-Controller 120 die Anzahl der reservierten Super-Speicherblöcke RESERVED_SBLK unter den Super-Speicherblöcken, die in dem nichtflüchtigen Speichersatz 110 enthalten sind, auf der Grundlage einer festgelegten Richtlinie (z.B. zehn oder mehr) bestimmen.
  • Ein freier Super-Speicherblock FREE_SBLK ist ein Super-Speicherblock, in den Daten eingeschrieben werden können.
  • Ein geschlossener Superspeicherblock CLOSED_SBLK ist ein Superspeicherblock, in den bereits Daten geschrieben wurden, so dass keine neuen Daten geschrieben werden können, bis die Daten gelöscht werden.
  • Der Speicher-Controller 120 kann einen Schreibattributwert WRITE_ATTR auf verschiedene Weise auf der Grundlage der Anzahl der reservierten Superspeicherblöcke RESERVED_SBLK, der Anzahl der freien Superspeicherblöcke FREE_SBLK und der Anzahl der geschlossenen Superspeicherblöcke CLOSED_SBLK bestimmen.
  • Beispielsweise kann der Schreibattributwert WRITE_ATTR auf der Grundlage der Anzahl FREE_SBLK_NUM der freien Superspeicherblöcke FREE_SBLK unter den Superspeicherblöcken ermittelt werden. Der Schreibattributwert WRITE_ATTR kann durch Multiplikation der Anzahl FREE_SBLK_NUM der freien Superspeicherblöcke FREE_SBLK mit der Anzahl der gültigen Speicherblöcke VALID_BLKN_PER_SBLK, die in jedem Superspeicherblock enthalten sind, bestimmt werden. Wenn die Anzahl der freien Superspeicherblöcke FREE_SBLK 5 beträgt und wenn die Anzahl der gültigen Speicherblöcke VALID_BLKN_PER_SBLK in jedem Superspeicherblock 10 beträgt, kann der Schreibattributwert WRITE_ATTR auf 5 * 10 = 50 festgelegt werden.
  • Als weiteres Beispiel kann der Schreibattributwert WRITE_ATTR auf der Grundlage der Summe der Anzahl FREE_SBLK_NUM der freien Superspeicherblöcke FREE_SBLK und der Anzahl RESERVED_SBLK_NUM der reservierten Superspeicherblöcke RESERVED_SBLK bestimmt werden. Wenn die Anzahl FREE_SBLK_NUM der freien Superspeicherblöcke FREE_SBLK 6 und die Anzahl RESERVED_SBLK_NUM der reservierten Superspeicherblöcke RESERVED_SBLK 10 beträgt, kann der Wert des Schreibattributs WRITE_ATTR auf 10 + 6 = 16 festgelegt werden.
  • Auf der Grundlage des wie oben beschriebenen Schreibattribut-Wertes WRITE_ATTR kann der Speicher-Controller 120 in der zweiten Betriebsart OP_MODE_2 die Speicherbereinigung (Garbage Collection) durchführen, wenn die Speicherbereinigung erforderlich ist. Wenn außerdem der Schreibattributwert WRITE_ATTR so wiederhergestellt wird, dass der Schreibvorgang aufgrund der Speicherbereinigung in der ersten Betriebsart OP_MODE_1 zur Ausführung bereit ist, kann der Speicher-Controller 120 die Speicherbereinigung stoppen.
  • Nachstehend wird ein Prozess, bei dem der Speicher-Controller 120 eine Speicherbereinigung durchführt, wenn der Schreibattributwert WRITE_ATTR auf der Grundlage der Summe der Anzahl FREE_SBLK_NUM der freien Superspeicherblöcke FREE_SBLK und der Anzahl RESERVED_SBLK_NUM der reservierten Superspeicherblöcke RESERVED_SBLK bestimmt wird, mit Bezug auf Flussdiagramme in den 15 und 16 beschrieben.
  • 15 ist ein Flussdiagramm, das einen Prozess veranschaulicht, bei dem ein Speicher-Controller 120 die Speicherbereinigung gemäß den Ausführungsformen der vorliegenden Offenbarung durchführt.
  • Wenn bestimmt wird, dass eine Speicherbereinigung erforderlich ist, weil der Schreibattributwert WRITE_ATTR kleiner oder gleich einem ersten Schwellenwert für das Schreibattribut wird, kann der Speicher-Controller 120 die Speicherbereinigung einleiten (S1510). In diesem Fall kann der Speicher-Controller 120 die Betriebsart OP_MODE auf die zweite Betriebsart OP_MODE_2 umschalten.
  • Wenn die Betriebsart OP_MODE die zweite Betriebsart OP_MODE_2 ist, kann der Speicher-Controller 120 die Summe T aus 1) der Anzahl der reservierten Superspeicherblöcke RESERVED_SBLK und 2) der Anzahl der freien Superspeicherblöcke FREE_SBLK berechnen, die im nichtflüchtigen Speichersatz 110 (S1520) enthalten sind.
  • Der Speicher-Controller 120 bestimmt, ob der in Schritt S1520 berechnete Wert T größer als eine erste Schwellenzahl von Superspeicherblöcken (S 1530) ist oder nicht.
  • Ist der Wert T größer als die erste Schwellenzahl von Superspeicherblöcken („J“ in S1530), kann der Speicher-Controller 120 die Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 umschalten. Zu diesem Zweck stoppt der Speicher-Controller 120 die aktuell ausgeführte Speicherbereinigung (S1540) und ermöglicht die Umschaltung der Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 (S1550).
  • Wie oben beschrieben, darf der Speicher-Controller 120 die Betriebsart OP_MODE jedoch nur dann auf die erste Betriebsart OP_MODE_1 umschalten, wenn ein Befehl vom Host HOST empfangen wird, der die Umschaltung der Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 anweist, wie oben beschrieben.
  • Ist andererseits der Wert T kleiner oder gleich der ersten Schwellenzahl von Superspeicherblöcken („N“ in S1530), bedeutet dies, dass zusätzliche freie Superspeicherblöcke FREE_SBLK gesichert werden müssen, um die Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 umzuschalten. Daher kann der Speicher-Controller 120 Garbage Collection (S1560) ausführen, um freie Superspeicherblöcke zu sichern, und kann dann in Schritt S1520 den Wert T erneut berechnen.
  • 16 ist ein Flussdiagramm, das einen weiteren Prozess veranschaulicht, bei dem ein Speicher-Controller 120 die Speicherbereinigung gemäß den Ausführungsformen der vorliegenden Offenbarung durchführt.
  • Wenn festgestellt wird, dass eine Speicherbereinigung erforderlich ist, weil der Schreibattributwert WRITE_ATTR kleiner oder gleich einem ersten Schwellenwert für das Schreibattribut wird, kann der Speicher-Controller 120 die Speicherbereinigung einleiten (S1610). In diesem Fall kann der Speicher-Controller 120 die Betriebsart OP_MODE auf die zweite Betriebsart OP_MODE_2 umschalten.
  • Wenn die Betriebsart OP_MODE die zweite Betriebsart OP_MODE_2 ist, kann der Speicher-Controller 120 die Summe T aus 1) der Anzahl der reservierten Superspeicherblöcke RESERVED_SBLK und 2) der Anzahl der freien Superspeicherblöcke FREE_SBLK berechnen, die in dem nichtflüchtigen Speichersatz 110 (S1620) enthalten sind.
  • Der Speicher-Controller 120 bestimmt, ob der in Schritt S1620 berechnete Wert T kleiner als eine zweite Schwellenzahl von Superspeicherblöcken (S1630) ist oder nicht.
  • Ist der Wert T kleiner als die zweite Schwellwertanzahl von Superspeicherblöcken („Y“ in S1630), kann der Speicher-Controller 120 es unmöglich machen, die Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 (S1640) umzuschalten. Das heißt in diesem Fall, selbst wenn der Host HOST dem Speicher-Controller 120 einen Befehl überträgt, der die Umschaltung der Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 anweist, schaltet der Speicher-Controller 120 die Betriebsart OP_MODE nicht auf die erste Betriebsart OP_MODE_1 um.
  • Nachdem Schritt S1640 ausgeführt wurde, kann der Speicher-Controller 120 eine Speicherbereinigung durchführen, um freie Superspeicherblöcke (S1650) zu sichern, und kann in Schritt S1620 erneut einen Wert T berechnen.
  • Ist andererseits der Wert T größer oder gleich der zweiten Schwellenzahl von Superspeicherblöcken („N“ in S1630), kann der Speicher-Controller 120 die Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 (S1660) umschalten. Wenn in diesem Fall ein Befehl vom Host-HOST empfangen wird, der die Umschaltung der Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 anweist, kann der Speicher-Controller 120 die Betriebsart OP_MODE auf die erste Betriebsart OP_MODE_1 umschalten.
  • 17 ist ein Flussdiagramm, das ein Verfahren zum Betrieb eines Speicher-Controllers 120 gemäß den Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
  • Das Betriebsverfahren des Speicher-Controllers 120 kann einen Schritt zur Berechnung eines Attributwertes für den nichtflüchtigen Speichersatz 110 (S1710) beinhalten. In diesem Fall kann der Attributwert 1) ein Lese-Attributwert READ_ATTR, 2) ein Schreib-Attributwert WRITE_ATTR und 3) ein Zeit-Attributwert TIME_ATTR sein.
  • Das Betriebsverfahren des Speicher-Controllers 120 kann einen Schritt zur Bestimmung einer Betriebsart OP_MODE des nichtflüchtigen Speichersatzes 110 auf der Grundlage von mindestens einem der folgenden Werte umfassen: 1) dem Lese-Attributwert READ_ATTR, 2) dem Schreib-Attributwert WRITE_ATTR und 3) dem Zeit-Attributwert TIME_ATTR (S1720).
  • In Schritt S1720 kann der Speicher-Controller 120 die Betriebsart OP_MODE des nichtflüchtigen Speichersatzes 110 auf verschiedene Weise bestimmen.
  • Zum Beispiel, wie mit Bezug auf die 7 beschrieben, kann der Speicher-Controller 120 die Betriebsart OP_MODE von der ersten Betriebsart OP_MODE_1 auf die zweite Betriebsart OP_MODE_2 umschalten 1) wenn der Leseattributwert READ_ATTR kleiner oder gleich einem ersten Schwellwert des Leseattributs ist, 2) wenn der Schreibattributwert WRITE_ATTR kleiner oder gleich einem ersten Schwellenwert des Schreibattributs ist, oder 3) wenn der Zeitattributwert TIME_ATTR kleiner oder gleich einem ersten Schwellenwert des Zeitattributs ist, wenn die Betriebsart OP_MODE die erste Betriebsart OP_MODE_1 ist.
  • Zudem kann der Speicher-Controller 120 im Betrieb S1720, wenn die eingestellten Zielbedingungen erfüllt sind, wenn die Betriebsart OP_MODE die zweite Betriebsart OP_MODE_2 ist, den Hintergrundbetrieb auf dem eingestellten nichtflüchtigen Speicher stoppen und kann in den Zustand wechseln, in dem die Betriebsart OP_MODE bereit ist, in die erste Betriebsart OP_MODE_1 umgeschaltet zu werden.
  • In diesem Fall, wie mit Bezug auf die 7 beschrieben, können die Zielbedingungen sein: 1) dass der Leseattributwert READ_ATTR größer oder gleich einem zweiten Schwellenwert des Leseattributs ist, 2) dass der Schreibattributwert WRITE_ATTR größer oder gleich einem zweiten Schwellenwert des Schreibattributs ist, und 3) dass der Zeitattributwert größer oder gleich einem zweiten Zeitattribut-Schwellenwert ist, und wenn die Zielbedingungen erfüllt sind, kann die Betriebsart OP_MODE von der zweiten Betriebsart OP_MODE_2 auf die erste Betriebsart OP_MODE_1 umgeschaltet werden.
  • In diesem Fall kann der Speicher-Controller 120, wenn es sich bei der Betriebsart um die erste Betriebsart handelt, die Steuerung so durchführen, dass keine Hintergrundoperation auf dem nichtflüchtigen Speichersatz ausgeführt wird. Wenn es sich bei der Betriebsart um die zweite Betriebsart handelt, kann der Speicher-Controller 120 die Steuerung so durchführen, dass eine Hintergrundoperation auf dem nichtflüchtigen Speichersatz ausgeführt wird.
  • Zudem kann der oben beschriebene Betrieb des Speicher-Controllers 120 durch die Steuerschaltung 123 gesteuert und so ausgeführt werden, dass der Prozessor 124 eine Firmware ausführt (ansteuert), in der der Gesamtbetrieb des Speicher-Controllers 120 programmiert ist.
  • 18 ist ein Blockdiagramm, das schematisch ein Computersystem 1800 gemäß den Ausführungsformen der vorliegenden Offenbarung darstellt.
  • Unter Bezugnahme auf die 18 kann ein Computersystem 1800 gemäß den Ausführungsformen der vorliegenden Offenbarung ein Speichersystem 100, das elektrisch mit einem Systembus 1860 verbunden ist, eine Zentraleinheit (CPU) 1810 zur Steuerung des Gesamtbetriebs des Computersystems 1800, ein RAM 1820 zur Speicherung von Daten und Informationen, die sich auf den Betrieb des Computersystems 1800 beziehen, ein Benutzerschnittstellen-/Benutzererfahrungsmodul (UI/UX) 1830 zur Bereitstellung einer Benutzerumgebung, ein Kommunikationsmodul 1840 zur Kommunikation mit einem externen Gerät über drahtgebundene und/oder drahtlose Kommunikation und ein Energieverwaltungsmodul 1850 zur Verwaltung der vom Computersystem 1800 verbrauchten Leistung umfassen.
  • Das Computersystem 1800 kann nach den Ausführungsformen der vorliegenden Offenbarung ein Personal Computer (PC) sein oder kann ein mobiles Endgerät, wie z.B. ein Smartphone, ein Tablet-PC oder ähnliches, oder verschiedene elektronische Geräte umfassen.
  • Das Computersystem 1800 kann ferner eine Batterie zur Versorgung mit einer Betriebsspannung enthalten und kann ferner einen Anwendungs-Chipsatz, ein grafikbezogenes Modul, einen Kamera-Bildprozessor (CIS), einen DRAM und ähnliches umfassen. Darüber hinaus wird die Konfiguration des Computersystems für den Fachmann offensichtlich sein.
  • Zudem kann das oben beschriebene Speichersystem 100 eine Vorrichtung zum Speichern von Daten in einem nichtflüchtigen Speicher, wie z.B. ein Festkörperlaufwerk (SSD), eine universelle Flash-Speichervorrichtung (UFS), eine eingebettete MMC-Vorrichtung (eMMC) oder ähnliches, sowie eine Vorrichtung zum Speichern von Daten auf einer Magnetplatte, wie z.B. einem Festplattenlaufwerk (HDD), enthalten. Der nichtflüchtige Speicher kann einen Festwertspeicher (ROM), einen programmierbaren ROM (PROM), einen elektrisch programmierbaren ROM (EPROM), einen elektrisch löschbaren und programmierbaren ROM (EEPROM), einen Flash-Speicher, einen Phasenwechsel-RAM (PRAM), einen magnetischen RAM (MRAM), einen resistiven RAM (RRAM), einen ferroelektrischen RAM (FRAM) und ähnliches umfassen. Darüber hinaus kann das Speichersystem 100 als eine der verschiedenen Arten von Speichergeräten implementiert und an verschiedenen elektronischen Vorrichtungen angebracht werden.
  • Nach oben beschriebenen Ausführungsformen der vorliegenden Offenbarung ist es möglich, ein Speichersystem, einen Speicher-Controller und ein Verfahren zu dessen Betrieb bereitzustellen, die es einem Host ermöglichen, genauer vorherzusagen, ob ein Speicher-Controller in der Lage ist, eine Hintergrundoperation durchzuführen oder nicht.
  • Darüber hinaus ist es nach Ausführungsformen der vorliegenden Offenbarung möglich, ein Speichersystem, einen Speicher-Controller und ein Verfahren zu dessen Betrieb bereitzustellen, die es einem Host ermöglichen, die Situation, in der sich die Verzögerungszeit wahrscheinlich verlängert, im Voraus zu handhaben.
  • Darüber hinaus ist es nach den Ausführungsformen der vorliegenden Offenbarung möglich, ein Speichersystem, einen Speicher-Controller und ein Verfahren zum Betrieb von diesen bereitzustellen, die einem Host eine höhere QoS bieten.
  • Obwohl verschiedene Ausführungsformen der vorliegenden Offenbarung zur Veranschaulichung beschrieben wurden, werden Durchschnittsfachleute in dem technischen Gebiet erkennen, dass verschiedene Modifikationen, Ergänzungen und Substitutionen möglich sind, ohne von dem Umfang und dem Kern der Offenbarung, wie sie in den beiliegenden Ansprüchen offenbart wird, abzuweichen. Daher wurden Ausführungsformen der vorliegenden Offenbarung im Interesse der Kürze und Klarheit beschrieben. Der Umfang der vorliegenden Offenbarung ist auf der Grundlage der beiliegenden Ansprüche so auszulegen, dass alle technischen Ideen, die in dem zu den Ansprüchen äquivalenten Umfang enthalten sind, zu der vorliegenden Offenbarung gehören.

Claims (20)

  1. Speichersystem, umfassend: einen nichtflüchtigen Speichersatz, der einen oder mehrere nichtflüchtige Speicher umfasst; und einen Speicher-Controller, der zur Steuerung des nichtflüchtigen Speichersatzes konfiguriert ist, wobei der Speicher-Controller konfiguriert ist, um: einen Lese-Attribut-Wert, einen Schreib-Attribut-Wert und einen Zeit-Attribut-Wert für den nichtflüchtigen Speichersatz zu berechnen; eine Betriebsart des nichtflüchtigen Speichersatzes auf der Grundlage mindestens eines der Werte für das Lese-Attribut, das Schreib-Attribut oder das Zeit-Attribut zu bestimmen; wenn es sich bei der Betriebsart um eine erste Betriebsart handelt, eine Hintergrundoperation zu steuern, dass sie nicht auf dem nichtflüchtigen Speichersatz ausgeführt werden soll; wenn die Betriebsart eine zweite Betriebsart ist, eine Hintergrundoperation zu steuern, dass sie auf dem nichtflüchtigen Speichersatz ausgeführt wird; und wenn eingestellte Zielbedingungen erfüllt sind, wenn die Betriebsart die zweite Betriebsart ist, die Hintergrundoperation auf dem nichtflüchtigen Speichersatz zu stoppen und in einen Zustand umzuschalten, in dem die Betriebsart bereit ist, in die erste Betriebsart umgeschaltet zu werden.
  2. Speichersystem nach Anspruch 1, wobei der Speicher-Controller die Betriebsart von der ersten Betriebsart in die zweite Betriebsart umschaltet, wenn ein Leseattributwert kleiner oder gleich einem ersten Schwellwert des Leseattributs ist oder wenn ein Schreibattributwert kleiner oder gleich einem ersten Schwellwert des Schreibattributs ist oder wenn ein Zeitattributwert kleiner oder gleich einem ersten Schwellwert des Zeitattributs ist.
  3. Speichersystem nach Anspruch 1, wobei die Zielbedingungen sind, dass der Leseattributwert größer oder gleich einem zweiten Schwellwert des Leseattributs ist, und dass der Schreibattributwert größer oder gleich einem zweiten Schwellwert des Schreibattributs ist, und dass der Zeitattributwert größer oder gleich einem zweiten Schwellwert des Zeitattributs ist.
  4. Speichersystem nach Anspruch 3, wobei der Speicher-Controller, wenn ein Befehl vom Host empfangen wird, der die Umschaltung der Betriebsart auf die erste Betriebsart anweist, die Betriebsart von der zweiten Betriebsart auf die erste Betriebsart umschaltet.
  5. Speichersystem von Anspruch 1, wobei der nichtflüchtige Speichersatz einen oder mehrere Superspeicherblöcke umfasst, wobei jeder der Superspeicherblöcke einen oder mehrere Speicherblöcke umfasst, und wobei der Speicherblock, der in jedem der Superspeicherblöcke enthalten ist, in irgendeinem der nichtflüchtigen Speicher enthalten ist, die in dem nichtflüchtigen Speichersatz enthalten sind.
  6. Speichersystem nach Anspruch 5, wobei der Leseattributwert auf der Grundlage einer Differenz zwischen einem maximalen Lesezählwert jedes der Superspeicherblöcke und einem Schwellenwert für den Lesezählwert des Superspeicherblocks bestimmt wird.
  7. Speichersystem nach Anspruch 5, bei dem der Leseattributwert auf der Grundlage eines maximalen Lesezählwertes jedes der Superspeicherblöcke, eines Summen-Lesezählwertes jedes der Superspeicherblöcke und eines Schwellen-Lese-Rückforderungs-Lesezählwertes für den Superspeicherblock bestimmt wird.
  8. Speichersystem nach Anspruch 1, wobei, wenn eine Lese-Rückforderungsoperation an dem nichtflüchtigen Speichersatz durchgeführt wird, wenn die Betriebsart die zweite Betriebsart ist, der Speicher-Controller eine minimale Lesebandbreite zur Verarbeitung eines von einem Host empfangenen Lesebefehls aufrechterhält.
  9. Speichersystem nach Anspruch 5, bei dem der Wert des Schreibattributs auf der Grundlage einer Summe einer Anzahl von reservierten Superspeicherblöcken und einer Anzahl von freien Superspeicherblöcken unter den Superspeicherblöcken bestimmt wird, die in dem nichtflüchtigen Speichersatz enthalten sind.
  10. Speichersystem nach Anspruch 9, wobei, wenn die Summe der Anzahl der reservierten Superspeicherblöcke und der Anzahl der freien Superspeicherblöcke größer als eine erste Schwellenzahl von Superspeicherblöcken ist, wenn die Betriebsart die zweite Betriebsart ist, der Speicher-Controller in der Lage ist, die Betriebsart auf die erste Betriebsart umzuschalten.
  11. Speichersystem nach Anspruch 9, wobei der Speicher-Controller, wenn die Summe der Anzahl der reservierten Superspeicherblöcke, die in dem nichtflüchtigen Speichersatz enthalten sind, und der Anzahl der freien Superspeicherblöcke kleiner als eine zweite Schwellenzahl von Superspeicherblöcken ist, wenn die Betriebsart die zweite Betriebsart ist, die Betriebsart nicht auf die erste Betriebsart umschaltet.
  12. Speicher-Controller, umfassend: eine Speicherschnittstelle, die so konfiguriert ist, dass sie mit einem nichtflüchtigen Speichersatz, der einen oder mehrere nichtflüchtige Speicher umfasst, kommuniziert; und eine Steuerschaltung, die konfiguriert ist, um: einen Lese-Attribut-Wert, einen Schreib-Attribut-Wert und einen Zeit-Attribut-Wert für den nichtflüchtigen Speichersatz zu berechnen; eine Betriebsart des nichtflüchtigen Speichersatzes auf der Grundlage mindestens eines der Werte für das Lese-Attribut, das Schreib-Attribut oder das Zeit-Attribut zu bestimmen; wenn es sich bei der Betriebsart um eine erste Betriebsart handelt, eine Hintergrundoperation zu steuern, dass sie nicht auf dem nichtflüchtigen Speichersatz ausgeführt wird; wenn die Betriebsart eine zweite Betriebsart ist, eine Hintergrundoperation zu steuern, dass sie auf dem nichtflüchtigen Speichersatz ausgeführt wird; und wenn die eingestellten Zielbedingungen erfüllt sind, wenn die Betriebsart die zweite Betriebsart ist, die Hintergrundoperation auf dem nichtflüchtigen Speichersatz zu stoppen und in einen Zustand umzuschalten, in dem die Betriebsart bereit ist, in die erste Betriebsart umgeschaltet zu werden.
  13. Speicher-Controller nach Anspruch 12, wobei die Betriebsart von der ersten Betriebsart in die zweite Betriebsart geschaltet wird, wenn der Leseattributwert kleiner oder gleich einem ersten Schwellwert des Leseattributs ist oder wenn der Schreibattributwert kleiner oder gleich einem ersten Schwellwert des Schreibattributs ist oder wenn der Zeitattributwert kleiner oder gleich einem ersten Schwellwert des Zeitattributs ist.
  14. Speicher-Controller nach Anspruch 12, wobei die Zielbedingungen sind, dass der Leseattributwert größer oder gleich einem zweiten Schwellwert des Leseattributs ist, und dass der Schreibattributwert größer oder gleich einem zweiten Schwellwert des Schreibattributs ist, und dass der Zeitattributwert größer oder gleich einem zweiten Schwellwert des Zeitattributs ist.
  15. Der Speicher-Controller von Anspruch 12, wobei der nichtflüchtige Speichersatz einen oder mehrere Superspeicherblöcke umfasst, wobei jeder der Superspeicherblöcke einen oder mehrere Speicherblöcke umfasst, und wobei der Speicherblock, der in jedem der Superspeicherblöcke enthalten ist, in irgendeinem der nichtflüchtigen Speicher enthalten ist, die in dem nichtflüchtigen Speichersatz enthalten sind.
  16. Speicher-Controller nach Anspruch 15, wobei der Leseattributwert auf der Grundlage eines maximalen Lesezählwertes jedes der Superspeicherblöcke, eines Summen-Lesezählwertes jedes der Superspeicherblöcke und eines Schwellen-Lese-Rückforderungs-Lesezählwertes für den Superspeicherblock bestimmt wird.
  17. Speicher-Controller nach Anspruch 15, wobei der Wert des Schreibattributs auf der Grundlage einer Summe einer Anzahl von reservierten Superspeicherblöcken und einer Anzahl von freien Superspeicherblöcken unter den Superspeicherblöcken bestimmt wird, die in dem nichtflüchtigen Speichersatz enthalten sind.
  18. Verfahren zum Betreiben eines Speicher-Controllers zum Steuern eines nichtflüchtigen Speichersatzes, der einen oder mehrere nichtflüchtige Speicher umfasst, wobei das Verfahren umfasst: Berechnen eines Lese-Attribut-Wertes, eines Schreib-Attribut-Wertes und eines Zeit-Attribut-Wertes für den nichtflüchtigen Speichersatz; Bestimmen einer Betriebsart des nichtflüchtigen Speichersatzes auf der Grundlage von mindestens einem der Werte für das Lese-Attribut, das Schreib-Attribut oder das Zeit-Attribut; Steuern, wenn die Betriebsart eine erste Betriebsart ist, einer Hintergrundoperation, dass sie nicht auf dem nichtflüchtigen Speichersatz ausgeführt wird; Steuern einer Hintergrundoperation, dass sie auf dem nichtflüchtigen Speichersatz ausgeführt wird, wenn es sich bei der Betriebsart um eine zweite Betriebsart handelt; und wenn eingestellte Zielbedingungen erfüllt sind, wenn die Betriebsart die zweite Betriebsart ist, Stoppen des Hintergrundbetriebs auf dem nichtflüchtigen Speichersatz und Umschalten in einen Zustand, in dem die Betriebsart bereit ist, in die erste Betriebsart umgeschaltet zu werden.
  19. Verfahren nach Anspruch 18, wobei das Bestimmen der Betriebsart des nichtflüchtigen Speichersatzes das Umschalten der Betriebsart von der ersten Betriebsart in die zweite Betriebsart umfasst, wenn der Leseattributwert kleiner oder gleich einem ersten Schwellwert des Leseattributs ist, wenn der Schreibattributwert kleiner oder gleich einem ersten Schwellwert des Schreibattributs ist, oder wenn der Zeitattributwert kleiner oder gleich einem ersten Schwellwert des Zeitattributs ist.
  20. Verfahren nach Anspruch 18, wobei die Zielbedingungen sind, dass der Leseattributwert größer oder gleich einem zweiten Schwellwert des Leseattributs ist, dass der Schreibattributwert größer oder gleich einem zweiten Schwellwert des Schreibattributs ist, und dass der Zeitattributwert größer oder gleich einem zweiten Schwellwert des Zeitattributs ist.
DE102020202379.4A 2019-06-28 2020-02-25 Speichersystem, speicher-controller und deren betriebsverfahren Pending DE102020202379A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2019-0077478 2019-06-28
KR1020190077478A KR20210001414A (ko) 2019-06-28 2019-06-28 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법

Publications (1)

Publication Number Publication Date
DE102020202379A1 true DE102020202379A1 (de) 2020-12-31

Family

ID=73747677

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020202379.4A Pending DE102020202379A1 (de) 2019-06-28 2020-02-25 Speichersystem, speicher-controller und deren betriebsverfahren

Country Status (5)

Country Link
US (2) US11144225B2 (de)
JP (1) JP7050839B2 (de)
KR (1) KR20210001414A (de)
CN (1) CN112148209A (de)
DE (1) DE102020202379A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200142724A (ko) * 2019-06-13 2020-12-23 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법
KR20220103340A (ko) * 2021-01-15 2022-07-22 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102491655B1 (ko) 2021-10-01 2023-01-27 삼성전자주식회사 에러 카운트를 결정하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
CN114201113B (zh) * 2021-12-13 2023-06-02 建信金融科技有限责任公司 多对象存储桶的选择方法、装置及处理器
US11907535B2 (en) 2022-01-25 2024-02-20 Western Digital Technologies, Inc. Storage device optimizations in proof of space blockchain systems
US11894060B2 (en) * 2022-03-25 2024-02-06 Western Digital Technologies, Inc. Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
TWI369633B (en) 2007-06-27 2012-08-01 Sandisk Corp Phased garbage collection and house keeping operations in a flash memory system
US20090006720A1 (en) * 2007-06-27 2009-01-01 Shai Traister Scheduling phased garbage collection and house keeping operations in a flash memory system
US20100287217A1 (en) * 2009-04-08 2010-11-11 Google Inc. Host control of background garbage collection in a data storage device
US9098399B2 (en) * 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
JP5481453B2 (ja) * 2011-09-21 2014-04-23 株式会社東芝 メモリデバイス
US9329990B2 (en) 2013-01-11 2016-05-03 Micron Technology, Inc. Host controlled enablement of automatic background operations in a memory device
KR20140128852A (ko) 2013-04-29 2014-11-06 삼성전자주식회사 데이터 처리 지연에 대한 빠른 응답을 수행할 수 있는 데이터 저장 장치와 이를 이용한 데이터 처리 방법들
KR20150106778A (ko) 2014-03-12 2015-09-22 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 제어 방법
KR20150140496A (ko) * 2014-06-05 2015-12-16 삼성전자주식회사 실시간 데이터 복구를 위한 리드 리클레임 방법 및 그에 따른 메모리 시스템
US9606915B2 (en) * 2015-08-11 2017-03-28 Toshiba Corporation Pool level garbage collection and wear leveling of solid state devices
KR102637160B1 (ko) * 2016-04-14 2024-02-19 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
KR102614083B1 (ko) * 2016-08-31 2023-12-18 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
JP6677627B2 (ja) 2016-12-20 2020-04-08 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびメモリアクセス方法
TWI602116B (zh) * 2017-03-07 2017-10-11 Silicon Motion Inc 資料儲存裝置及其資料維護方法
US10732895B2 (en) * 2017-03-22 2020-08-04 Burlywood, Inc. Drive-level internal quality of service
US10353628B2 (en) 2017-04-13 2019-07-16 Samsung Electronics Co., Ltd. Opportunity window hints for background operations in SSD
US10452537B2 (en) * 2017-06-12 2019-10-22 Western Digital Technologies, Inc. System and method of direct write and mapping of data in a non-volatile memory having multiple sub-drives
US10740026B2 (en) * 2018-05-18 2020-08-11 Micron Technology, Inc. Time indicator of super block operations
TWI703442B (zh) * 2018-08-31 2020-09-01 大陸商合肥沛睿微電子股份有限公司 快閃記憶體控制器及相關的存取方法及電子裝置

Also Published As

Publication number Publication date
KR20210001414A (ko) 2021-01-06
JP7050839B2 (ja) 2022-04-08
CN112148209A (zh) 2020-12-29
US20210405901A1 (en) 2021-12-30
US11144225B2 (en) 2021-10-12
US11500562B2 (en) 2022-11-15
US20200409581A1 (en) 2020-12-31
JP2021009676A (ja) 2021-01-28

Similar Documents

Publication Publication Date Title
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112014004761T5 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102013108491A1 (de) Nichtflüchtige Speichervorrichtung und Betriebsverfahren mit variablen Speicherzellenzustandsdefinitionen
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102007039844A1 (de) Flashspeicherelement und Speichersystem
DE102013218440A1 (de) Verfahren zum Betreiben eines Flash-Speicherbauelements sowie Bildverarbeitungssystem
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet
DE102020119190A1 (de) Speichervorrichtung und Betriebsverfahren derselben
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102019135863A1 (de) Speichercontroller, Speichervorrichtung und Speichersystem mit verbesserten Schwellenspannungs-Verteilungseigenschaften und ähnliche Betriebsverfahren
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)