DE112016000696T5 - Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung - Google Patents

Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung Download PDF

Info

Publication number
DE112016000696T5
DE112016000696T5 DE112016000696.9T DE112016000696T DE112016000696T5 DE 112016000696 T5 DE112016000696 T5 DE 112016000696T5 DE 112016000696 T DE112016000696 T DE 112016000696T DE 112016000696 T5 DE112016000696 T5 DE 112016000696T5
Authority
DE
Germany
Prior art keywords
scheduling scheme
memory
operations
scheduling
storage device
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.)
Granted
Application number
DE112016000696.9T
Other languages
English (en)
Other versions
DE112016000696B4 (de
Inventor
Einat Inna Zevulun
Yacov Duzly
Amir Shaharabany
Igor Genshaft
Marina Frid
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE112016000696T5 publication Critical patent/DE112016000696T5/de
Application granted granted Critical
Publication of DE112016000696B4 publication Critical patent/DE112016000696B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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)

Abstract

Ein Verfahren, das von einer Datenspeichervorrichtung ausgeführt werden kann, umfasst ein Konfigurieren der Datenspeichervorrichtung zum Verwenden eines ersten Ablaufplanungsschemas und als Antwort auf ein Detektieren eines Auslöserereignisses ein Konfigurieren der Datenspeichervorrichtung zum Verwenden eines zweiten Ablaufplanungsschemas. Eines des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas wird verwendet, um eine Durchführung von Speicheroperationen mit dem gleichen Operationstyp auf mehreren Chips eines Speichers der Datenspeichervorrichtung einzuplanen. Das andere des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas wird verwendet, um Speicheroperationen opportunistisch einzuplanen.

Description

  • Gebiet der Offenbarung
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung.
  • Hintergrund
  • Datenspeichervorrichtungen können dazu ausgelegt sein, Lesebefehle und/oder Schreibbefehle von einer Zugriffsvorrichtung zu empfangen, die auf mehreren Chips eines Speichers (z. B. eines Flash-Speichers) der Datenspeichervorrichtung durchgeführt werden sollen. Zusätzlich zum Durchführen der Lesebefehle und/oder der Schreibbefehle, die von der Zugriffsvorrichtung empfangen werden, kann die Datenspeichervorrichtung Verwaltungsoperationen ausführen, wie beispielsweise Lese- und/oder Schreiboperationen in einer Logisch-zu-physisch-Tabelle, Müllsammeloperationen, Löschoperationen und/oder Validierungsoperationen (z. B. Verifizierungsoperationen, um zu bestätigen, dass in den Speicher geschriebene Daten keine Fehler enthalten) als veranschaulichende, nicht einschränkende Beispiele. Eine Ablaufplanung der Befehle (z. B. der Lesebefehle und/oder der Schreibbefehle), die von der Zugriffsvorrichtung empfangen werden, kann in Kombination mit einer Ablaufplanung einer oder mehrerer Verwaltungsoperationen dazu führen, dass verschiedene Speicherchips "Nichtbeschäftigungs-"Zeitspannen und "Beschäftigungs-"Zeitspannen haben. Die Nichtbeschäftigungs-Zeitspannen können die Speicherausnutzung verringern, was einem verringerten Leistungsvermögen (z. B. Leseleistungsvermögen und/oder Schreibleistungsvermögen) der Datenspeichervorrichtung entsprechen kann.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm einer bestimmten veranschaulichenden Ausführungsform eines Systems, das dazu ausgelegt ist, Operationen einzuplanen, die in einem Speicher einer Datenspeichervorrichtung ausgeführt werden sollen;
  • 2A2B sind Zeitdiagramme, die Beispiele von Operationen darstellen, die in der Datenspeichervorrichtung von 2 durchgeführt werden können;
  • 3 ist ein weiteres Zeitdiagramm, das Beispiele von Operationen darstellt, die in der Datenspeichervorrichtung von 1 durchgeführt werden können;
  • 4 ist ein Ablaufdiagramm, das ein spezielles Beispiel eines Betriebsverfahrens der Datenspeichervorrichtung von 1 darstellt;
  • 5 ist ein Ablaufdiagramm, das ein weiteres spezielles Beispiel eines Betriebsverfahrens der Datenspeichervorrichtung von 1 darstellt;
  • 6 ist ein Ablaufdiagramm, das ein weiteres spezielles Beispiel eines Betriebsverfahrens der Datenspeichervorrichtung von 1 darstellt;
  • 7 ist ein Ablaufdiagramm, das ein weiteres spezielles Beispiel eines Betriebsverfahrens der Datenspeichervorrichtung von 1 darstellt; und
  • 8 ist ein Ablaufdiagramm, das ein weiteres spezielles Beispiel eines Betriebsverfahrens der Datenspeichervorrichtung von 1 darstellt.
  • Genaue Beschreibung
  • Besondere Implementierungen sind unter Bezugnahme auf die Zeichnungen beschrieben. In der Beschreibung werden über alle Zeichnungen hinweg gemeinsame Merkmale durch gemeinsame Bezugszeichen bezeichnet. Wie hierin verwendet bezeichnet ein Ordinalbegriff (z. B. "erster", "zweiter", "dritter" usw.), der verwendet wird, um ein Element wie etwa eine Struktur, eine Komponente, eine Operation usw. zu modifizieren, an sich keinerlei Priorität oder Ordnung des Elements in Bezug auf ein anderes Element, sondern unterscheidet lediglich das Element von einem anderen Element mit dem gleichen Namen (mit Ausnahme des Ordinalbegriffs).
  • Unter Bezugnahme auf 1 ist eine spezielle beispielhafte Ausführungsform eines Systems dargestellt und allgemein mit 100 bezeichnet. Das System 100 enthält eine Datenspeichervorrichtung 102 und eine Zugriffsvorrichtung 150. Die Datenspeichervorrichtung 102 enthält einen Controller 120 und einen Speicher 104 wie etwa einen nichtflüchtigen Speicher, der mit dem Controller 120 gekoppelt ist. Der Speicher 104 enthält mehrere Speicherchips 103.
  • Der Controller 120 kann dazu ausgelegt sein, Operationen (z. B. Speicheroperationen), die in den mehreren Speicherchips 103 ausgeführt werden sollen, einzuplanen. Die Operationen können Operationen (z. B. Leseoperationen und/oder Schreiboperationen), die von der Zugriffsvorrichtung 150 empfangen werden, und Verwaltungsoperationen, die durch die Datenspeichervorrichtung 102 erzeugt werden, umfassen. Beispielsweise können die Verwaltungsoperationen Leseverwaltungsoperationen, Schreibverwaltungsoperationen, Mullsammeloperationen, Löschoperationen (z. B. Blocklöschoperationen) und Validierungsoperationen (z. B. Verifizierungsoperationen) als veranschaulichende, nicht einschränkende Beispiele umfassen.
  • Die Leseverwaltungsoperationen und die Schreibverwaltungsoperationen können durchgeführt werden, um eine oder mehrere Tabellen und/oder Zuordnungen wie Zuordnungen von logisch zu physisch (z. B. eine Logisch-zu-physisch-Zuordnungstabelle), Zuordnungen von physisch zu logisch (z. B. eine Physisch-zu-logisch-Zuordnungstabelle), eine Liste freier Blöcke usw. der mehreren Speicherchips 103 zu verwenden und/oder zu pflegen. Aufgrund der Größe der einen oder mehreren Tabellen und/oder Zuordnungen können die eine oder die mehreren Tabellen und/oder Zuordnungen in dem Speicher 104 gespeichert sein. Um eine spezielle Tabelle und/oder Zuordnung zu verwenden, kann der Controller 120 einen Abschnitt der speziellen Tabelle und/oder Zuordnung aus dem Speicher 104 lesen und den Abschnitt in einem Speicher des Controllers 120 (z. B. einem zweiten Speicher 160, wie hier beschrieben) wie etwa ein Speicher mit wahlfreiem Zugriff (RAM) (z. B. einem Cache-Speicher) speichern.
  • Die Müllsammeloperationen können durchgeführt werden, um einen freien Block zu schaffen. Zum Beispiel können die Müllsammeloperationen Lese- und Schreiboperationen umfassen, um Daten von einem oder mehreren Blöcken in einen einzelnen Block zu verschieben und dort zu bündeln. Die Löschoperation kann dazu ausgelegt sein, einen Datenblock zu löschen. Eine Löschoperation kann länger als eine Schreiboperation dauern. Zum Beispiel kann Das Ausführen der Löschoperation als beispielhaftes, nicht einschränkendes Beispiel mindestens zehnmal länger dauern als das Ausführen einer Einniveau-Zellen-Schreiboperation (SLC-Schreiboperation). Die Validierungsoperationen können dazu ausgelegt sein, Daten zu verifizieren, die in die mehreren Speicherchips 103 geschrieben sind (um z. B. zu bestimmen, ob neu programmierte Daten fehlerfrei sind). Beispielsweise kann die Validierungsoperation ein Lesen von Daten, die zuvor in einen bestimmten Chip der mehreren Speicherchips 103 geschrieben wurden, und ein Bestimmen, ob die gelesenen Daten Fehler enthalten, beinhalten.
  • Der Controller 120 kann dazu ausgelegt sein, eine oder mehrere Operationen gemäß einem ersten Ablaufplanungsmodus, der einem ersten Ablaufplanungsschema entspricht, oder gemäß einem zweiten Ablaufplanungsmodus, der einem zweiten Ablaufplanungschema entspricht, einzuplanen. In einigen Implementierungen kann der erste Ablaufplanungsmodus einem opportunistischen Ablaufplanungsschema zugeordnet sein und der zweite Ablaufplanungsmodus einem Pipeline-Ablaufplanungsschema (z. B. einem festen Ablaufplanungsschema) zugeordnet sein. Das opportunistische Ablaufplanungsschema kann dazu ausgelegt sein, eine oder mehrere Operationen opportunistisch einzuplanen. Beispielsweise kann das opportunistische Ablaufplanungsschema dazu ausgelegt sein, verwendet zu werden, um verschiedene Typen von Operationen und/oder Operationen mit unterschiedlichen Zeitdauern auf der Basis einer Schiedsprozesses hinsichtlich des "nächsten verfügbaren Chips" (z. B. ein Schema, in dem Operationen auf mehreren Chips basierend auf einer Reihenfolge, in der Chips verfügbar werden und/oder eine Operation ausführen, eingeplant werden) und/oder auf der Basis von Prioritäten mehrerer Operationen, die eingeplant werden sollen, einzuplanen. Das opportunistische Ablaufplanungsschema kann dazu ausgelegt sein, jeden Chip der mehreren Speicherchips 103 in einer unabhängigen Weise zu behandeln, und kann eine Operation auf einem Chip unabhängig von Operationen, die auf anderen Chips der mehreren Speicherchips 103 eingeplant sind (oder ausgeführt werden), einplanen.
  • Das Pipeline-Ablaufplanungsschema (z. B. das feste Ablaufplanungsschema) kann dazu ausgelegt sein, Sätze von Speicheroperationen von dem gleichen Operationstyp, wie beispielsweise einem Löschtyp, einem Validierungstyp, einem Lesetyp, einem Schreibtyp usw., auf den mehreren Speicherchips 103 einzuplanen. Beispielsweise kann das Pipeline-Ablaufplanungsschema dazu ausgelegt sein, verwendet zu werden, um Operationen gemäß einer vordefinierten Reihenfolge (z. B. einer festen Reihenfolge) einzuplanen. Beispielsweise kann die vordefinierte Reihenfolge eine Reihenfolge der Ablaufplanung verschiedener Operationstypen angeben. Beispielsweise kann ein Satz von Löschoperationen gefolgt von einem Satz von Verifizierungsoperationen eingeplant werden. Zusätzlich oder alternativ kann das Pipeline-Ablaufplanungsschema dazu ausgelegt sein, verwendet zu werden, um den gleichen Typ von Operation auf jedem Chip der mehreren Speicherchips 103 gleichzeitig einzuplanen. Zum Beispiel können sich Ausführungen jeder der Operationen auf mehreren Chips der mehreren Speicherchips 103 zumindest teilweise zeitlich überlappen.
  • In einigen Implementierungen kann der Controller 120 einplanen, dass sequentielle Schreiboperationen auf den mehreren Speicherchips 103 ausgeführt werden. Beispielsweise kann der Controller 120 detektieren, dass sequentielle Schreiboperationen, als veranschaulichende, nicht einschränkende Beispiele, basierend auf einer oder mehreren Schreibadressen, die den in den Speicher 104 zu schreibenden Daten entsprechen, basierend auf einer Größe von Daten, die in den Speicher 104 geschrieben werden sollen, oder einer Kombination davon durchgeführt werden sollen. Wenn sequentielle Schreiboperationen von dem Controller 120 eingeplant und auf den mehreren Speicherchips 103 durchgeführt werden, kann unter Verwendung eines einzigen Ablaufplanungsmodus (z. B. eines einzelnen Ablaufplanungsschemas) zum Einplanen der sequentiellen Schreibvorgänge und Verwaltungsoperationen, die mit dem Durchführen der sequentiellen Schreiboperationen verknüpft sind, zu Nichtbeschäftigungs-Zeitspannen für einen oder mehrere Chips der mehreren Speicherchips 103 führen, die die Speicherausnutzung des Speichers 104 verringern können.
  • Wenn zum Beispiel der erste Ablaufplanungsmodus (der dem opportunistischen Schema entspricht) verwendet wird, um sequentielle Schreiboperationen einzuplanen, kann eine Löschoperation auf einem bestimmten Chip der mehreren Speicherchips 103 durchgeführt werden, während Schreiboperationen auf den anderen Chips der mehreren Speicherchips 103 durchgeführt werden. Wenn das opportunistische Ablaufplanungsschema dazu ausgelegt ist, dass Operationen auf den mehreren Speicherchips zyklisch eingeplant werden (z. B. über einen Round-Robin-Ansatz), können die anderen Chips Nichtbeschäftigungs-Zeitspannen erfahren, während sie darauf warten, dass der Löschoperation abgeschlossen wird, da die Löschoperation ist länger dauert als die auf den anderen Chips ausgeführten Schreiboperationen. Als weiteres Beispiel kann dann, wenn der erste Ablaufplanungsmodus (der dem opportunistischen Schema entspricht) verwendet wird, um sequentielle Schreiboperationen einzuplanen, eine Validierungsoperation auf einem bestimmten Chip der mehreren Speicherchips 103 durchgeführt werden, während Schreiboperationen nach einer Anzahl von an dem bestimmten Chip durchgeführten Schreiboperationen durchgeführt werden. Die Validierungsoperation kann ein Lesen von Daten von dem bestimmten Chip umfassen, was ein Senden von Lesebefehlen an den bestimmten Chip und ein Speichern von Lesedaten an einem Speicherort (z. B. einem Puffer) des Controllers 120 erfordert. Das Durchführen der Leseoperation auf dem bestimmten Chip und das Übermitteln der Lesedaten über einen Bus zwischen dem Controller 120 und dem Speicher 104 kann Nichtbeschäftigungs-Zeitspannen für andere Chips, die vielleicht Schreiboperationen (als Teil der sequentiellen Schreiboperationen) ausführen, verursachen.
  • Als weiteres Beispiel kann der Controller 120 dann, wenn der zweite Ablaufplanungsmodus (der dem Pipeline-Ablaufplanungsschema entspricht) verwendet wird, um sequentielle Schreiboperationen einzuplanen, eine Verwaltungsoperation durchführen, die bewirkt, dass der Controller 120 eine Leseoperation zum Lesen von Daten von dem bestimmten Chip der mehreren Speicherchips 103 ausführt. Zum Beispiel kann der Controller 120 Daten, die einer Tabelle und/oder einer Zuordnung oder Code, der von dem Controller 120 ausgeführt werden soll, lesen (z. B. abrufen), um die sequentiellen Schreiboperationen auszuführen. Das Durchführen der Leseoperation auf dem bestimmten Chip und das Übermitteln der gelesenen Daten über einen Bus zwischen dem Controller 120 und dem Speicher 104 kann Nichtbeschäftigungs-Zeitspannen für andere Chips verursachen, die vielleicht Schreiboperationen (als Teil der sequentiellen Schreiboperationen) ausführen.
  • Der Controller 120 kann dazu ausgelegt sein, einen Ablaufplanungsmodus (z. B. ein gewähltes Ablaufplanungsschema) zwischen einem ersten Ablaufplanungsmodus, der einem ersten Ablaufplanungsschema entspricht, und einem zweiten Ablaufplanungsmodus, der einem zweiten Ablaufplanungsschema entspricht, ändern. In einigen Implementierungen kann der Controller 120 den Ablaufplanungsmodus basierend auf einem oder mehreren Auslöserereignissen ändern. Beispielsweise können das eine oder die mehreren Auslöserereignisse als beispielhafte, nicht einschränkende Beispiele auf einer Anzahl von Schreiboperationen, einer Löschoperation und/oder einer Validierungsoperation basieren. Als weiteres Beispiel können das eine oder die mehreren Auslöserereignisse dem Schreiben von Daten auf eine letzte Seite eines Blocks eines Chips (der mehreren Speicherchips 103) zugeordnet sein. In einigen Implementierungen kann ein Auslöserereignis einer Bedingung (z. B. einer Auslöserbedingung), die erfüllt wird, entsprechen, beispielsweise einer Anzahl von Schreiboperationen, die eine Schwelle erreicht.
  • Der ausgewählte Ablaufplanungsmodus (der einem ausgewählten Ablaufplanungsschema entspricht) kann verwendet werden, um eine oder mehrere Operationen, die in dem Speicher 104 auszuführen sind, einzuplanen. Zum Beispiel kann ein Einplanen und/oder Ausführen bestimmter Operationen wie etwa Löschoperationen und/oder Validierungsoperationen in dem ersten Ablaufplanungsmodus dazu führen, dass ein oder mehrere Chips unbeschäftigt sind, was die Speicherausnutzung der Datenspeichervorrichtung 102 verringern kann. Unter Verwendung des zweiten Ablaufplanungsmodus zum Einplanen solcher Operationen kann eine Häufigkeit und/oder Dauer von Nichtbeschäftigungs-Zeitspannen reduziert werden, was die Speicherausnutzung der Datenspeichervorrichtung 102 verbessern kann. Beispielsweise kann der Controller 120 basierend auf einem Bestimmen, dass eine Löschoperation eingeplant werden soll, von dem ersten Ablaufplanungsmodus in den zweiten Ablaufplanungsmodus wechseln, und kann den Löschoperation gemäß dem zweiten Ablaufplanungsschema wie unter Bezugnahme auf 2A2B beschrieben einplanen. Als weiteres Beispiel kann der Controller 120 basierend auf einem Bestimmen, dass eine Validierungsoperation (z. B. eine Verifizierungsoperation) eingeplant werden soll, von dem ersten Ablaufplanungsmodus in den zweiten Ablaufplanungsmodus wechseln und die Validierungsoperation gemäß dem zweiten Ablaufplanungsschema wie unter Bezugnahme auf 3 beschrieben einplanen. Zusätzlich oder alternativ kann der Controller 120 basierend auf ein Detektieren eines oder mehrerer Auslöserereignisse von dem zweiten Ablaufplanungsmodus in den ersten Ablaufplanungsmodus wechseln, wie es hier beschrieben ist.
  • Als Antwort auf das Detektieren eines Auslöserereignisses kann ein bestimmtes Ablaufplanungschema von mehreren Ablaufplanungsschemata ausgewählt (und angewendet) werden. Wenn beispielsweise ein Auslöserereignis einer bestimmten Operation zugeordnet ist, wie z. B. einer bestimmten Verwaltungsoperation, die einzuplanen ist, kann das spezielle Ablaufplanungsschema basierend auf der speziellen einzuplanenden Operation ausgewählt werden. Nachdem die spezielle einzuplanende Operation eingeplant worden ist, kann ein anderes Ablaufplanungsschema wie z. B. ein Ablaufplanungsschema, das vor dem speziellen Ablaufplanungsschema angewendet wird, oder ein Standard-Ablaufplanungsschema ausgewählt werden. Das Umschalten zwischen den mehreren Ablaufplanungsschemata kann ein Einplanen einer Ausführung von Lese-/Schreiboperationen, die von der Zugriffsvorrichtung 150 empfangen werden, mit Verwaltungsoperationen (und/oder anderen Operationen zum Ermöglichen der von der Zugriffsvorrichtung empfangenen Lese-/Schreiboperation) ermöglichen, um verglichen mit einer Datenspeichervorrichtung, die ein einziges Ablaufplanungsschema verwendet, zu einer hohen Speicherausnutzung zu gelangen.
  • Die Datenspeichervorrichtung 102 und die Zugriffsvorrichtung 150 können betriebstechnisch über eine Verbindung (z. B. einen Kommunikationsweg 110) wie beispielsweise einen Bus oder eine drahtlose Verbindung gekoppelt sein. Beispielsweise kann die Datenspeichervorrichtung 102 eine Zugriffsschnittstelle 108 umfassen, die eine Kommunikation über den Kommunikationsweg 110 zwischen der Datenspeichervorrichtung 102 und der Zugriffsvorrichtung 150 ermöglicht, beispielsweise dann, wenn die Zugriffsschnittstelle 108 kommunikationstechnisch mit der Zugriffsvorrichtung 150 gekoppelt ist. In einigen Implementierungen kann die Datenspeichervorrichtung 102 in der Zugriffsvorrichtung 150 eingebettet sein, wie z. B. gemäß einer Konfiguration nach der universalen Flash-Speicherung (UFS) der Joint Electron Devices Engineering Council (JEDEC) Solid State Technology Association. Alternativ kann die Datenspeichervorrichtung 102 aus der Zugriffsvorrichtung 150 entfernbar sein (d. h. "entfernbar" mit der Zugriffsvorrichtung 150 gekoppelt sein). Als Beispiel kann die Datenspeichervorrichtung 102 gemäß einer entfernbaren universellen seriellen Bus-Konfiguration (USB-Konfiguration) entfernbar mit der Zugriffsvorrichtung 150 gekoppelt sein. In einigen Implementierungen kann die Datenspeichervorrichtung 102 ein Festkörperlaufwerk (SSD), das in der Zugriffsvorrichtung 150 enthalten sein kann oder von dieser (und für diese zugänglich) getrennt ist, enthalten oder diesem entsprechen. Beispielsweise kann die Datenspeichervorrichtung ein SSD, das als veranschaulichende, nicht einschränkende Beispiele als eingebettetes Speicherlaufwerk (z. B. ein mobiles eingebettetes Speicherlaufwerk), ein Unternehmensspeicherlaufwerk (ESD), eine Client-Speichervorrichtung oder ein Cloud-Speicherlaufwerk verwendet werden kann, enthalten oder diesem entsprechen. In einigen Implementierungen kann die Datenspeichervorrichtung 102 mit der Zugriffsvorrichtung 150 indirekt, z. B. über ein Netz, gekoppelt sein. Beispielsweise kann die Datenspeichervorrichtung 102 ein netzgebundener Speicher (NAS) oder eine Komponente (z. B. eine Festkörperlaufwerksvorrichtung (SSD-Vorrichtung)) eines Rechenzentrums-Speichersystems, eines Unternehmensspeichersystems oder eines Speicher-Bereichsnetzes sein.
  • In einigen Implementierungen kann die Datenspeichervorrichtung 102 dazu ausgelegt sein, mit der Zugriffsvorrichtung 150 als eingebetteter Speicher wie z. B. eMMC® (Warenzeichen der JEDEC Solid State Technology Association, Arlington, Virginia) und eSD, als veranschaulichende Beispiele, gekoppelt zu werden. Beispielsweise kann die Datenspeichervorrichtung 102 einer eMMC-Vorrichtung (Vorrichtung mit eingebetteter Multimedienkarte) entsprechen. Als weiteres Beispiel kann die Datenspeichervorrichtung 102 einer Speicherkarte wie einer sicheren digitalen Karte (SD®-Karte), einer microSD®-Karte, einer miniSDTM-Karte (Warenzeichen von SD-3C LLC, Wilmington, Delaware), a MultiMediaCardTM (MMCTM-Karte, Warenzeichen der JEDEC Solid State Technology Association, Arlington, Virginia) oder eine CompactFlash®-Karte (CF-Karte) (Warenzeichen der SanDisk Corporation, Milpitas, Kalifornien) sein. Die Datenspeichervorrichtung 102 kann gemäß einer JEDEC-Industriespezifikation arbeiten. Beispielsweise kann die Datenspeichervorrichtung 102 gemäß einer JEDEC-eMMC-Spezifikation, einer JEDEC-UFS-Spezifikation, einer oder mehreren anderen Spezifikationen oder einer Kombination davon arbeiten.
  • In einigen Implementierungen können die Datenspeichervorrichtung 102 und die Zugriffsvorrichtung 150 dazu ausgelegt sein, als veranschaulichende, nicht einschränkende Beispiele unter Verwendung eines oder mehrerer Protokolle wie etwa eines eMMC-Protokolls, eines UFS-Protokolls, eines USB-Protokolls, eines Protokolls für eine serielle Anbindung mit fortgeschrittener Technologie (SATA-Protokolls) und/oder eines anderen Protokolls zu kommunizieren. Das eine oder die mehreren Protokolle können ein standardisiertes Protokoll und/oder ein nicht standardisiertes Protokoll wie beispielsweise ein proprietäres Protokoll umfassen. In einigen Implementierungen können die Datenspeichervorrichtung 102 und die Zugriffsvorrichtung 150 dazu ausgelegt sein, unter Verwendung einer Zweikanalkommunikation zu kommunizieren (z. B. können beide Vorrichtungen Befehle ausgeben und von der anderen Vorrichtung empfangen).
  • Die Zugriffsvorrichtung 150 kann eine Speicherschnittstelle (nicht gezeigt) enthalten und kann dazu ausgelegt sein, mit der Datenspeichervorrichtung 102 über die Speicherschnittstelle zu kommunizieren, um Daten aus dem Speicher 104 der Datenspeichervorrichtung zu lesen und in diesen zu schreiben. Beispielsweise kann die Zugriffsvorrichtung 150 gemäß einer Spezifikation des Joint Electron Devices Engineering Council (JEDEC) wie etwa einer UFS-Zugriffscontrollerschnittstellen-Spezifikation arbeiten. Als weitere Beispiele kann die Zugriffsvorrichtung 150 gemäß einer oder mehreren anderen Spezifikationen, wie etwa als beispielhaftes, nicht einschränkendes Beispiel einer SD-Zugriffscontroller-Spezifikation, arbeiten. Die Zugriffsvorrichtung 150 kann mit dem Speicher 104 gemäß irgendeinem anderen geeigneten Kommunikationsprotokoll kommunizieren.
  • Die Zugriffsvorrichtung 150 kann einen Prozessor und einen Speicher enthalten. Der Speicher kann dazu ausgelegt sein, Daten und/oder Befehle, die von dem Prozessor ausführbar sein können, zu speichern. Der Speicher kann ein einzelner Speicher sein oder kann mehrere Speicher wie beispielsweise einen oder mehrere nichtflüchtige Speicher, einen oder mehrere flüchtige Speicher oder eine Kombination davon umfassen. Die Zugriffsvorrichtung 150 kann einen oder mehrere Befehle, wie beispielsweise eine oder mehrere Anforderungen, Daten zu löschen, Daten aus dem Speicher 104 der Datenspeichervorrichtung 102 zu lesen oder in diesen zu schreiben, an die Datenspeichervorrichtung 102 ausgeben. Beispielsweise kann die Zugriffsvorrichtung 150 dazu ausgelegt sein, Daten wie beispielsweise Anwenderdaten 132, die in dem Speicher 104 gespeichert werden sollen, zu liefern oder Daten, die aus dem Speicher 104 gelesen werden sollen, anzufordern. Die Zugriffsvorrichtung 150 kann ein Mobiltelefon, einen Musikabspieler, einen Videoabspieler, eine Spielkonsole, einen elektronischen Buchleser, einen persönlichen digitalen Assistenten (PDA), einen Computer wie etwa einen Laptop-Computer oder einen Notebook-Computer, einen Netz-Computer, einen Server, eine andere elektronische Vorrichtung oder eine beliebige Kombination davon als veranschaulichende, nicht einschränkende Beispiele umfassen.
  • Der Speicher 104 der Datenspeichervorrichtung 102 kann einen nichtflüchtigen Speicher umfassen. Der Speicher 104 kann eine zweidimensionale Speicherkonfiguration (2D-Speicherkonfiguration) aufweisen. Alternativ kann der Speicher 104 eine andere Konfiguration wie beispielsweise eine dreidimensionale Speicherkonfiguration (3D-Speicherkonfiguration) aufweisen. Beispielsweise kann der Speicher 104 eine dreidimensionale Speicherkonfiguration (3D-Speicherkonfiguration) aufweisen, die monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen mit einem aktiven Bereich, der über einem Siliciumsubstrat angeordnet ist, ausgebildet ist. In einigen Implementierungen kann der Speicher 104 Schaltungen enthalten, die dem Betrieb der Speicherzellen zugeordnet sind, (z. B. Speicherelemente).
  • Der Speicher 104 enthält mehrere Speicherchips 103. Beispielsweise können die mehreren Speicherchips 103 einen ersten Chip 141, einen zweiten Chip 142, einen dritten Chip 143 und einen vierten Chip 144 enthalten. Obwohl die mehreren Speicherchips 103 als vier Chips enthaltend dargestellt sind, können die mehreren Speicherchips 103 bei anderen Implementierungen mehr als oder weniger als vier Chips enthalten. In einigen Implementierungen kann jeder der Chips 141144 eine oder mehrere Gruppen von Speicherelementen umfassen. Jede Gruppe von Speicherelementen kann mehrere Speicherelemente (z. B. Speicherzellen) enthalten und kann als eine Seite oder eine Wortleitung konfiguriert sein.
  • Ein Satz von Chips der mehreren Speicherchips 103 kann logisch als Metaebene 130 gruppiert sein. Beispielsweise kann der Satz von Chips die Chips 141144 enthalten. Ein Metablock kann eine Gruppe von mehreren Blöcken enthalten, die sich in Speicherchips der gleichen Metaebene befinden, die zusammen verarbeitet werden, als wären sie ein einzelner großer Block. Obwohl die Metaebene 130 mit vier Chips dargestellt ist, kann eine Metaebene in anderen Ausführungsformen mehr als vier Chips oder weniger als vier Chips enthalten. Zusätzlich oder alternativ können die mehreren Speicherchips, obwohl die mehreren Speicherchips 103 als eine Metaebene 130 enthaltend dargestellt sind, in anderen Implementierungen mehrere Metaebenen enthalten, die jeweils einem entsprechenden Satz von Chips zugeordnet sind.
  • Der Speicher 104 kann eine Unterstützungsschaltungsanordnung wie beispielsweise eine Lese-/Schreib-Schaltungsanordnung 140 enthalten, um den Betrieb der mehreren Speicherchips 103 zu unterstützen. Obwohl sie als Einzelkomponente dargestellt ist, kann die Lese-/Schreib-Schaltungsanordnung 140 in separate Komponenten des Speichers 104 unterteilt sein, wie z. B. eine Lese-Schaltungsanordnung und eine Schreib-Schaltungsanordnung. Die Lese-/Schreib-Schaltungsanordnung 140 kann für einen oder mehrere Chips der mehreren Speicherchips 103 des Speichers 104 extern sein. Alternativ können einer oder mehrere einzelne Speicherchips der mehreren Speicherchips 103 eine entsprechende Lese-/Schreib-Schaltungsanordnung enthalten, die betreibbar ist, um Daten aus/in Speicherelemente(n) innerhalb des einzelnen Speicherchips unabhängig von irgendwelchen anderen Lese- und/oder Schreiboperationen auf irgendwelchen anderen Speicherchips zu lesen und/oder zu schreiben.
  • Der Controller 120 ist über einen Bus 106, eine Schnittstelle (z. B. eine Schnittstellenschaltungsanordnung wie etwa eine Speicherschnittstelle 109), eine andere Struktur oder eine Kombination davon mit dem Speicher 104 verbunden. Beispielsweise kann der Bus 106 mehrere getrennte Kanäle aufweisen, um es dem Controller 120 zu ermöglichen, mit jedem der mehreren Speicherchips 103 parallel zu und unabhängig von der Kommunikation mit den anderen Speicherchips der mehreren Speicherchips 103 zu kommunizieren. In einigen Implementierungen kann der Speicher 104 als ein veranschaulichendes, nicht einschränkendes Beispiel ein Flash-Speicher sein.
  • Der Controller 120 ist dazu ausgelegt, Daten und Befehle aus der Zugriffsvorrichtung 150 zu empfangen und Daten an die Zugriffsvorrichtung 150 zu senden. Zum Beispiel kann der Controller 120 Daten über die Zugriffsschnittstelle 108 an die Zugriffsvorrichtung 150 senden und der Controller 120 Daten von der Zugriffsvorrichtung 150 über die Zugriffsschnittstelle 108 empfangen. Der Controller 120 ist dazu ausgelegt, Daten und Befehle an den Speicher 104 zu senden und Daten aus dem Speicher 104 zu empfangen. Zum Beispiel ist der Controller 120 dazu ausgelegt, Daten und einen Schreibbefehl zu senden, um zu bewirken, dass der Speicher 104 Daten an einer spezifizierten Adresse des Speichers 104 speichert. Der Schreibbefehl kann eine physische Adresse eines Abschnitts des Speichers 104 (z. B. eine physische Adresse einer Wortleitung eines der Chips 141144 des Speichers 104), der die Daten speichern soll, spezifizieren. Der Controller 120 kann auch dazu ausgelegt sein, Daten und Befehle an den Speicher 44 zu senden, die als veranschaulichende, nicht einschränkende Beispiele Hintergrundabtastoperationen, Müllsammeloperationen und/oder Verschleißnivellierungsoperationen usw. zugeordnet sind. Der Controller 120 ist dazu ausgelegt, einen Lesebefehl an den Speicher 104 zu senden, um auf Daten von einer spezifizierten Adresse des Speichers 104 zuzugreifen. Der Lesebefehl kann die physische Adresse eines Abschnitts des Speichers 104 (z. B. eine physische Adresse einer Wortleitung eines der Chips 141144 des Speichers 104) spezifizieren.
  • Der Controller 120 kann einen zweiten Speicher 160, eine Fehlerkorrekturcode-Engine (ECC-Engine) 179, einen Auslöserdetektor 180, einen Puffer-Direktzugriffsspeicher (BRAM) 188 und einen Scheduler 190 enthalten. Der zweite Speicher 160 kann eine Firmware 162, eine oder mehrere Schwellen 170, Ablaufplanungsschemata 164 und einen oder mehrere Zähler 172 enthalten. Die eine oder die mehreren Schwellen 170 können eine oder mehrere Schwellen umfassen, die von dem Auslöserdetektor 180 und/oder dem Scheduler 190 verwendet werden, wie es hierin weiter beschrieben ist. Die Firmware 162 kann ausführbare Befehle, die von dem Controller 120, beispielsweise durch einen Prozessor, der in dem Controller 120 enthalten ist, ausgeführt werden können, enthalten oder diesen entsprechen. Als Antwort darauf, dass die Datenspeichervorrichtung 102 hochgefahren wird, kann auf die Firmware 162 in dem zweiten Speicher 160 zugegriffen werden und/oder diese kann in dem zweiten Speicher 160 gespeichert werden (z. B. aus einem anderen Speicher empfangen wie beispielsweise dem Speicher 104 empfangen werden und in dem zweiten Speicher 160 gespeichert werden). Beispielsweise kann die Firmware 162 in dem anderen Speicher (z. B. dem Speicher 104, einem Nur-Lese-Speicher (ROM) des Controllers 120, einem Speicher der Zugriffsvorrichtung 150 oder einem weiteren Speicher) gespeichert sein und kann als Antwort auf ein Hochfahren der Datenspeichervorrichtung 102 in den zweiten Speicher 160 geladen werden.
  • Die mehreren Ablaufplanungsschemata 164 können ein erstes Ablaufplanungsschema 166 und ein zweites Ablaufplanungsschema 168 enthalten. Das erste Ablaufplanungsschema 166 kann ein opportunistisches Ablaufplanungsschema enthalten oder diesem entsprechen. Das opportunistische Ablaufplanungsschema kann dazu ausgelegt sein, verwendet zu werden, um verschiedene Typen von Operationen und/oder Operationen mit unterschiedlichen Dauern auf der Basis eines Schiedsprozesses bezüglich des "nächsten verfügbaren Chips" (z. B. ein Schema, bei dem Operationen auf mehreren Chips basierend auf einer Reihenfolge, in der Chips verfügbar werden, um eine Operation zu empfangen und/oder auszuführen, eingeplant werden) und/oder basierend auf Prioritäten von mehreren Operationen, die eingeplant werden sollen, einzuplanen. Das opportunistische Ablaufplanungsschema kann dazu ausgelegt sein, jeden Chip der mehreren Speicherchips 103 in einer unabhängigen Weise zu behandeln, und kann eine Operation an einem Chip unabhängig von Operationen, die auf anderen Chips der mehreren Speicherchips 103 eingeplant sind (oder ausgeführt werden), einplanen. Ein erstes Beispiel eines opportunistischen Ablaufplanungsschemas ist ein Round-Robin-Ansatz, bei dem Operationen auf den mehreren Speicherchips 103 in einer zirkulären Weise eingeplant werden. Beispielsweise kann eine erste Operation auf dem ersten Chip 141 eingeplant werden, eine zweite Operation auf dem zweiten Chip 142 eingeplant werden, eine dritte Operation auf dem dritten Chip 143 eingeplant werden, eine vierte Operation auf dem vierten Chip 144 eingeplant werden, eine fünfte Operation auf dem ersten Chip 141 eingeplant werden usw. Ein zweites Beispiel eines opportunistischen Ablaufplanungsschemas kann einen Zeitschätzungsansatz verwenden, bei dem Operationen auf dem nächsten Chip, von dem vorhergesagt wird, dass er unbeschäftigt ist, eingeplant werden. Beispielsweise kann der Controller 120 für jeden Chip eine Dauer, um eine Operation zu vollenden, die durch den Chip ausgeführt wird, schätzen. Der Controller 120 kann eine Operation auf einem bestimmten Chip einplanen, von dem auf der Basis der für den jeweiligen Chip bestimmten geschätzten Dauer (im Vergleich zu den geschätzten Dauern der Operationen, die auf den anderen Chips durchgeführt werden) vorausgesagt wird, dass er vor den anderen Chips der mehreren Speicherchips 103 unbeschäftigt ist.
  • Das zweite Ablaufplanungsschema 168 kann ein Pipeline-Ablaufplanungsschema (z. B. ein festes Ablaufplanungsschema) enthalten oder diesem entsprechen. Das Pipeline-Ablaufplanungsschema kann dazu ausgelegt sein, verwendet zu werden, um Operationen gemäß einer vordefinierten Reihenfolge einzuplanen. Beispielsweise kann die vordefinierte Reihenfolge eine Reihenfolge der Ablaufplanung verschiedener Operationstypen angeben. Beispielsweise kann ein Satz von Löschoperationen gefolgt von einem Satz von Verifizierungsoperationen eingeplant werden. Zusätzlich oder alternativ kann das Pipeline-Ablaufplanungsmodus dazu ausgelegt sein, verwendet zu werden, um den gleichen Typ von Operation auf jedem der mehreren Speicherchips 103 gleichzeitig einzuplanen. Zum Beispiel kann sich eine Ausführung jeder der Operationen auf den mehreren Speicherchips 103 zumindest teilweise zeitlich überlappen. In einigen Implementierungen kann das Pipeline-Ablaufplanungsschema den Round-Robin-Ansatz verwenden, um den gleichen Typ von Operation auf jedem der mehreren Speicherchips 103 einzuplanen.
  • Zusätzlich zum Speichern der mehreren Ablaufplanungsschemata 164 (z. B. des ersten Ablaufplanungsschemas 166 und des zweiten Ablaufplanungsschemas 168) enthält der zweite Speicher 160 den einen oder die mehreren Zähler 172. Der eine oder die mehreren Zähler 172 können dazu ausgelegt sein, eine Zählung von Schreiboperationen, die einem Chip wie beispielsweise dem ersten Chip 141 des Speichers 104 zugeordnet sind, zu pflegen. In einigen Implementierungen kann jede Schreiboperation, die von dem einen oder den mehreren Zählern 172 gezählt wird, einer Seitenschreiboperation zugeordnet sein. Der eine oder die mehreren Zähler 172 können einen ersten Zähler 174 und einen zweiten Zähler 176 umfassen. Der erste Zähler 174 und der zweite Zähler 176 können jeweils dazu ausgelegt sein, eine Anzahl von Schreiboperationen, die dem ersten Chip 141 zugeordnet sind, zu zählen. Schreiboperationen, die dem ersten Chip 141 zugeordnet sind, können Schreiboperationen, die auf dem ersten Chip 141 eingeplant, initiiert oder ausgeführt werden, enthalten oder diesen entsprechen. Beispielsweise kann der erste Zähler 174 dazu ausgelegt sein, Schreiboperationen zu zählen, die auf dem ersten Chip 141 eingeplant (oder durchgeführt oder ausgeführt) werden, nachdem eine erste spezielle Speicheroperation wie beispielsweise eine Löschoperation auf dem ersten Chip 141 eingeplant, initiiert oder ausgeführt wird.
  • Der zweite Zähler 176 kann dazu ausgelegt sein, dass er Schreiboperationen, die auf dem ersten Chip eingeplant (oder durchgeführt oder ausgeführt) werden, zu zählen, nachdem eine zweite spezielle Speicheroperation wie beispielsweise eine Validierungsoperation auf dem ersten Chip 141 eingeplant, initiiert oder ausgeführt wird. In einigen Implementierungen können der eine oder die mehreren Zähler 172 mindestens einen Zähler für jeden Chip der mehreren Speicherchips 103 umfassen. Beispielsweise können der eine oder die mehreren Zähler 172 einen Zähler für jeden Chip (der mehreren Speicherchips 103) umfassen, der dazu ausgelegt ist, so zu arbeiten, wie es unter Bezugnahme auf den ersten Zähler 174 beschrieben ist. Zusätzlich oder alternativ können der eine oder die mehreren Zähler einen zweiten Zähler für jeden Chip (der mehreren Speicherchips) zu enthalten, der dazu ausgelegt ist, so zu arbeiten, wie es unter Bezugnahme auf den zweiten Zähler 176 beschrieben ist.
  • Der Scheduler 190 kann dazu ausgelegt sein, ein Ablaufplanungsschema der mehreren Ablaufplanungsschemata 164 auszuwählen und das ausgewählte Ablaufplanungsschema zu verwenden, um eine oder mehrere Operationen einzuplanen, die auf dem Speicher 104 auszuführen sind. Der Scheduler 190 kann einen Schemaselektor 191, ein Modusregister 192 und eine Speicheroperations-Warteschlange 195 enthalten. Das Modusregister 192 kann einen Moduswert 194 enthalten (z. B. speichern), der ein Ablaufplanungsschema angibt, das von dem Scheduler 190 verwendet werden soll, um die eine oder die mehreren Operationen, die in dem Speicher ausgeführt werden sollen, einzuplanen, als veranschaulichendes, nicht einschränkendes Beispiel kann ein erster Moduswert (z. B. ein Wert von null) dem ersten Ablaufplanungsschema 166 entsprechen und ein zweiter Moduswert (z. B. ein Wert von eins) dem zweiten Ablaufplanungsschema 168 entsprechen. Der Schemaselektor 191 kann dazu ausgelegt sein, eines der mehreren Ablaufplanungsschemata 164 basierend auf dem Moduswert 194 auszuwählen. Die Speicheroperations-Warteschlange 195 kann Daten enthalten, die eine oder mehrere Operationen angeben, die zur Durchführung eingeplant werden sollen. Die eine oder die mehreren Operationen können eine oder mehrere Lese-/Schreiboperationen, die von der Zugriffsvorrichtung 150 empfangen werden, eine oder mehrere Verwaltungsoperationen oder eine Kombination davon enthalten.
  • Operationen, die von dem Scheduler 190 eingeplant werden können, können einen Löschoperation, eine Kompaktierungsoperation (z. B. eine Müllsammeloperationen), eine Validierungsoperation (z. B. eine Verifizierungsoperation, wie z. B. eine Leseoperation nach einem Schreibvorgang (RBAX) oder eine verbesserte Lese-Fehlerprüfungsoperation nach einem Schreibvorgang (EPWR-Fehlerprüfungsoperation)), eine Einniveau-Zellen-Schreiboperation (SLC-Schreiboperation), eine Mehrniveau-Zellen-Schreiboperation (MLC-Schreiboperation, die dazu ausgelegt ist, mehr als 2 Bits pro Zelle (BPC), 3 BPC oder mehr als 3 BPC zu schreiben), eine Faltoperation, eine SLC-Leseoperation, eine MLC-Leseoperation, eine Hintergrundoperation, eine Verschleißnivellierungsoperation, eine Bereinigungsoperation, eine Auffrischoperation, eine Logisch-zu-physisch-Seiten-Lese-/Schreiboperation oder eine andere Operation als veranschaulichende, nicht einschränkende Beispiele umfassen. Hintergrundoperationen können Datenverwürfelungsoperationen, Spaltenersetzungsoperationen, Operationen zum Handhaben von Schreibabbrüchen und/oder Programmierungsfehlern, Operation zu Verwaltung von fehlerhaften Blocken und/oder Ersatzblöcken, Fehlererkennungscode-Operationen (EDC-Operationen), Verschlüsselungsoperationen, Fehlerbehebungsoperationen und/oder Adresszuordnungsoperationen (z. B. Zuordnung von logischen zu physischen Blöcken) als veranschaulichende, nicht einschränkende Beispiele enthalten oder diesen entsprechen. In einigen Implementierungen können Operationen, die keine von der Zugriffsvorrichtung 150 empfangenen Lese-/Schreiboperationen sind, als Verwaltungsoperationen klassifiziert (z. B. bezeichnet) werden.
  • Während einer Schreiboperation können Daten in den Speicher 104 geschrieben werden. Während einer Leseoperation können Daten aus dem Speicher 104 gelesen werden. Während einer Faltoperation kann eine interne Übertragung in dem Speicher 104 auftreten, bei der Daten, die auf SLC-Seiten gespeichert sind, gelesen werden und auf einer oder mehreren MLC-Seiten gespeichert werden. Während einer Verschleißnivellierungsoperation und/oder einer Müllsammeloperation können Daten zum Zwecke des Nivellierens des Verschleißes verschiedener Bereiche des Speichers 104 und/oder zum Sammeln defragmentierter Daten in einem oder mehreren konsolidierten Bereichen des Speichers 104 innerhalb des Speichers 104 übertragen werden. Während einer Löschoperation können Daten aus dem Speicher 104 gelöscht werden. Während einer Validierungsoperation (z. B. einer Verifizierungsoperation) können Daten, die in den Speicher 104 geschrieben sind, auf Korrektheit überprüft werden. Zum Beispiel können Daten, die in den Speicher 104 geschrieben worden sind, gelesen werden, und eine Decodieroperation und/oder eine Fehlerkorrekturoperation kann an den decodierten Daten durchgeführt werden. Während einer BRAX-Operation oder einer EPWR-Fehlerprüfungsoperation können in den Speicher 104 geschriebene Daten, wie beispielsweise SLC-Daten und/oder MLC-Daten auf Korrektheit geprüft werden.
  • Während einer Bereinigungsoperation können Daten aus dem Speicher 104 gelesen werden und es kann eine Korrekturaktion durchgeführt werden, um Störungen von Speicherpegeln wie z. B. Programmierstörungen, Lesestörungen und/oder Löschstörungen zu kompensieren. Während einer Auffrischungsoperation können Datenspeicherpegel in einem Abschnitt des Speichers gepflegt werden, um Spannungsverschiebungen zu kompensieren und inkorrekte Datenwerte zu korrigieren. Während einer Logisch-zu-physisch-Seiten-Lese-/Schreiboperation können Daten aus einer Datenstruktur, die Logisch-zu-physisch-Seiten-Informationen speichert, wie beispielsweise einer Logisch-zu-physisch-Tabelle gelesen oder in diese geschrieben werden.
  • Der Controller 120 enthält zudem den Auslöserdetektor 180. Der Auslöserdetektor 180 kann dazu ausgelegt sein, ein oder mehrere Auslöserereignisse zu detektieren. Beispielsweise können das eine oder die mehreren Auslöserereignisse ein erstes Auslöserereignis 181, ein zweites Auslöserereignis 182, ein drittes Auslöserereignis 183 und ein viertes Auslöserereignis 184 umfassen. Obwohl das eine oder die mehreren Auslöserereignisse so beschrieben sind, dass sie vier Auslöserereignisse umfassen, können das eine oder die mehreren Auslöserereignisse in anderen Implementierungen mehr als oder weniger als vier Auslöserereignisse umfassen. Obwohl der Auslöserdetektor 180 als getrennt von dem Scheduler 190 dargestellt ist, kann der Auslöserdetektor 180 in anderen Implementierungen in dem Scheduler 190 enthalten sein.
  • Jedes der einen oder mehreren Auslöserereignisse kann dem Ändern eines ausgewählten Ablaufplanungsschemas zugeordnet sein. Als Antwort darauf, dass der Auslöserdetektor 180 ein Auslöserereignis detektiert, kann der Auslöserdetektor 180 Modusänderungsdaten 186 (z. B. ein Modusänderungssignal) an den Scheduler 190 senden. Die Modusänderungsdaten 186 können einen Moduswert 194 angeben, der in dem Modusregister 192 gespeichert werden soll.
  • Das erste Auslöserereignis 181 kann einem Einplanen einer Löschoperation unter Verwendung des zweiten Ablaufplanungsschemas 168 zugeordnet sein. Zum Beispiel kann eine Löschoperation so eingeplant werden, dass sie auf einem bestimmten Chip nach einer ersten Anzahl von Schreiboperationen (z. B. Seitenschreiboperationen), die dem jeweiligen Chip zugeordnet sind, ausgeführt wird. Zum Beispiel kann eine Löschoperation als ein veranschaulichendes, nicht einschränkendes Beispiel so eingeplant werden, dass sie auf dem bestimmten Chip ausgeführt wird, nachdem 128 Schreiboperationen auf dem bestimmten Chip durchgeführt worden sind, nachdem die zuletzt durchgeführte Löschoperation auf dem bestimmten Chip durchgeführt worden war. In einigen Implementierungen kann das erste Auslöserereignis 181 einer ersten Zählung des ersten Zählers 174 zugeordnet sein. Der Auslöserdetektor 180 kann das erste Auslöserereignis 181 basierend auf der ersten Zählung des ersten Zählers 174, die eine erste Schwelle der einen oder der mehreren Schwellen 170 erreicht, detektieren. Wenn beispielsweise der erste Zähler 174 als Antwort auf eine Schreiboperation, die auf dem ersten Chip 141 durchgeführt (z. B. eingeplant, initiiert, ausgeführt) wird, inkrementiert wird, kann die erste Schwelle erfüllt sein, wenn die erste Zählung größer oder gleich der ersten Schwelle ist. Wenn der erste Zähler 174 als Antwort auf eine Schreiboperation, die auf dem ersten Chip 141 durchgeführt (z. B. eingeplant, initiiert, ausgeführt) wird, dekrementiert wird, kann die erste Schwelle erfüllt sein, wenn die erste Zählung kleiner oder gleich der ersten Schwelle ist. Als Antwort darauf, dass das erste Auslöserereignis 181 detektiert wird, kann der Auslöserdetektor 180 die Modusänderungsdaten 186 so erzeugen, dass sie das zweite Ablaufplanungsmodus 168 anzugeben, was dazu führen kann, dass der Schemaselektor 191 das zweite Ablaufplanungsmodus 168 auswählt (oder beibehält). Durch Auswählen des zweiten Ablaufplanungsschemas 168 kann der zweite Ablaufplanungsmodus 168 verwendet werden, um die Löschoperation (z. B. einen Satz von Löschoperationen) einzuplanen, die auf den Chips 141144 durchgeführt werden soll.
  • Das zweite Auslöserereignis 182 kann dem Auswählen des ersten Ablaufplanungsschemas (z. B. dem Zurückwechseln darauf), nachdem eine Löschoperation (z. B. ein Satz von Löschoperationen) unter Verwendung des zweiten Ablaufplanungsschemas 168 eingeplant worden ist, zugeordnet sein. Zum Beispiel kann, nachdem die Löschoperation eingeplant, für die Ausführung initiiert oder ausgeführt worden ist, das erste Ablaufplanungsschema 166 verwendet werden, um eine oder mehrere Operationen einzuplanen. Der Auslöserdetektor 180 kann das zweite Auslöserereignis 182 als Antwort darauf, dass eine Löschoperation gemäß dem zweiten Ablaufplanungsschema 168 eingeplant, initiiert oder ausgeführt wird, detektieren. Als Antwort darauf, dass das zweite Auslöserereignis 182 detektiert wird, kann der Auslöserdetektor 180 die Modusänderungsdaten 186 so erzeugen, dass sie das erste Ablaufplanungsschema 166 angeben. Zusätzlich oder alternativ kann der Auslöserdetektor 180 dazu ausgelegt sein, als Antwort auf ein Detektieren des zweiten Auslöserereignisses 182 zu veranlassen, dass der erste Zähler 174 auf einen Anfangswert (z. B. einen Standardwert), wie z. B. null als veranschaulichendes, nicht einschränkendes Beispiel, gesetzt wird. Durch Auswählen des ersten Ablaufplanungsschemas 166 kann das erste Ablaufplanungsschema 166 verwendet werden, um eine oder mehrere Operationen in einer opportunistischen Weise einzuplanen. Dementsprechend kann ein Detektieren des ersten Auslösers 181 gefolgt von einem Detektieren des zweiten Auslösers 182 es dem Scheduler 190 ermöglichen, von dem ersten Ablaufplanungsschema 166 zu dem zweiten Ablaufplanungsschema 168 zu wechseln, um einen Satz von Löschoperationen einzuplanen, und zu dem ersten Ablaufplanungsschema 166 zurückzukehren, nachdem der Satz von Löschoperationen eingeplant worden ist. Eine Verwendung des zweiten Ablaufplanungsschemas 168, um den Satz von Löschoperationen einzuplanen, kann im Gegensatz zu einer Verwendung des ersten Ablaufplanungsschemas 166 die Speicherausnutzung der Datenspeichervorrichtung 102 durch Verringern von Nichtbeschäftigungs-Zeitspannen, die auftreten können, wenn das erste Ablaufplanungsschema 166 verwendet wird, um den Satz von Löschoperationen einzuplanen, verbessern.
  • Das dritte Auslöserereignis 183 kann einem Einplanen einer Validierungsoperation unter Verwendung des zweiten Ablaufplanungsschemas 168 zugeordnet sein. Zum Beispiel kann eine Validierungsoperation so eingeplant werden, dass sie auf einem bestimmten Chip nach einer zweiten Anzahl von Schreiboperationen (z. B. Seitenschreiboperationen), die dem jeweiligen Chip zugeordnet sind, ausgeführt wird. Zum Beispiel kann eine Validierungsoperation als ein veranschaulichendes, nicht einschränkendes Beispiel so eingeplant werden, dass sie auf dem bestimmten Chip ausgeführt wird, nachdem 20 Schreiboperationen auf dem bestimmten Chip worden sind, nachdem eine zuletzt durchgeführte Validierungsoperation auf dem bestimmten Chip durchgeführt worden war. In einigen Implementierungen kann das dritte Auslöserereignis 183 einer zweiten Zählung des zweiten Zählers 176 zugeordnet sein. Der Auslöserdetektor 180 kann das dritte Auslöserereignis 183 basierend darauf detektieren, dass die zweite Zählung des zweiten Zählers 176 die zweite Schwelle der einen oder der mehreren Schwellen 170 erfüllt. Wenn der zweite Zähler 176 beispielsweise als Antwort darauf, dass eine Schreiboperation auf dem ersten Chip 141 durchgeführt (z. B. eingeplant, initiiert, ausgeführt) wird, inkrementiert wird, kann die zweite Schwelle erfüllt sein, wenn die zweite Zählung 176 größer oder gleich der zweiten Schwelle ist. Wenn der zweite Zähler als Antwort darauf, dass eine Schreiboperation auf dem ersten Chip 141 durchgeführt (z. B. eingeplant, initiiert, ausgeführt) wird, dekrementiert wird, kann die zweite Schwelle erfüllt sein, wenn die zweite Zählung kleiner oder gleich der zweiten Schwelle ist. Als Antwort darauf, dass das dritte Auslöserereignis 183 detektiert wird, kann der Auslöserdetektor 180 die Modusänderungsdaten 186 so erzeugen, dass sie das zweite Ablaufplanungsschema 168 angeben, was dazu führen kann, dass der Schemaselektor 191 das zweite Ablaufplanungsschema 168 auswählt (oder beibehält). Durch Auswählen des zweiten Ablaufplanungsmodus 168 kann der zweite Ablaufplanungsmodus 168 verwendet werden, um die Löschoperation (z. B. einen Satz von Löschoperationen), die auf den Chips 141144 durchgeführt werden soll, einzuplanen.
  • Das vierte Auslöserereignis 184 kann einem Auswählen des ersten Ablaufplanungsschemas (z. B. einem Zurückschalten darauf) zugeordnet sein, nachdem eine Validierungsoperation (z. B. ein Satz von Validierungsoperationen) unter Verwendung des zweiten Ablaufplanungsschemas 168 eingeplant worden ist. Beispielsweise kann, nachdem die Validierungsoperation (z. B. eine Verifizierungsoperation) eingeplant, zur Ausführung initiiert oder ausgeführt worden ist, das erste Ablaufplanungsschema 166 verwendet werden, um eine oder mehrere Operationen einzuplanen. Der Auslöserdetektor 180 kann das vierte Auslöserereignis 184 als Antwort auf eine Validierungsoperation, die gemäß dem zweiten Ablaufplanungsschema 168 eingeplant, initiiert oder ausgeführt wird, detektieren. Als Antwort darauf, dass das vierte Auslöserereignis 184 detektiert wird, kann der Auslöserdetektor 180 die Modusänderungsdaten 186 so erzeugen, dass sie das erste Ablaufplanungsschema 166 angeben. Zusätzlich oder alternativ kann der Auslöserdetektor 180 dazu ausgelegt sein, als Antwort auf das Detektieren des vierten Auslöserereignisses 184 zu veranlassen, dass der zweite Zähler 176 auf einen Anfangswert (z. B. Standardwert), wie z. B. null als veranschaulichendes, nicht einschränkendes Beispiel, gesetzt wird. Durch Auswählen des ersten Ablaufplanungsschemas 166 kann das erste Ablaufplanungsschema 166 verwendet werden, um eine oder mehrere Operationen in einer opportunistischen Weise einzuplanen. Dementsprechend kann ein Detektieren des dritten Auslösers 183 gefolgt von einem Detektieren des vierten Auslösers 184 es dem Scheduler 190 ermöglichen, von dem ersten Ablaufplanungsschema 166 zu dem zweiten Ablaufplanungsschema 168 zu wechseln, um einen Satz von Validierungsoperationen einzuplanen, und zu dem ersten Ablaufplanungsschema 166 zurückzuwechseln, nachdem der Satz von Löschoperationen eingeplant worden ist. Eine Verwendung des zweiten Ablaufplanungsschemas 168, um den Satz von Validierungsoperationen einzuplanen, kann im Gegensatz zu der Verwendung des ersten Ablaufplanungsschemas 166 die Speicherausnutzung der Datenspeichervorrichtung 102 durch Verringern von Nichtbeschäftigungs-Zeitspannen, die auftreten können, wenn das erste Ablaufplanungsschema 166 verwendet wird, um den Satz von Validierungsoperationen einzuplanen, verbessern.
  • Die ECC-Engine 179 kann dazu ausgelegt sein, Daten wie beispielsweise die Anwenderdaten 132 zu empfangen und basierend auf den Daten ein oder mehrere Fehlerkorrekturcode-Codewörter (ECC-Codewörter, die z. B. einen Datenabschnitt und einen Paritätsabschnitt enthalten) zu erzeugen. Beispielsweise kann die ECC-Engine 179 die Benutzerdaten 132 empfangen und kann ein Codewort erzeugen. Um zu veranschaulichen, kann die ECC-Engine 179 einen Codierer enthalten, der dazu ausgelegt ist, die Daten unter Verwendung einer ECC-Codierungstechnik zu codieren. Die ECC-Engine 179 kann einen Reed-Solomon-Codierer, einen Bose-Chaudhuri-Hocquenghem-Codierer (BCH-Codierer), einen Codierer für Paritätsprüfungen mit niedriger Besetzung (LDPC-Codierer), einen Turbo-Codierer, einen Codierer, der dazu ausgelegt ist, die Daten gemäß einer oder mehrerer anderer ECC-Techniken zu codieren, oder eine Kombination davon als veranschaulichende, nicht einschränkende Beispiele enthalten.
  • Die ECC-Engine 179 kann einen Decodierer enthalten, der dazu ausgelegt ist, aus dem Speicher 104 ausgelesene Daten zu decodieren, um Bitfehler zu detektieren und zu korrigieren, die in den Daten vorhanden sein können. Beispielsweise kann die ECC-Engine 179 eine Anzahl von Bitfehlern bis zu einer Fehlerkorrekturfähigkeit einer ECC-Technik, die von der ECC-Engine 179 verwendet wird, korrigieren. Eine Anzahl von Fehlern, die durch die ECC-Engine 179 identifiziert werden, kann durch den Controller 120, beispielsweise durch die ECC-Engine 179, verfolgt werden.
  • Der Puffer-Direktzugriffsspeicher (BRAM) 188 kann dazu ausgelegt sein, dass er zwischen der Zugriffsvorrichtung 150 und dem Speicher 104 übergebene Daten puffert. Zum Beispiel können Daten, die von der Zugriffsvorrichtung 150 empfangen werden, in dem BRAM 188 gespeichert werden, bevor sie in den Speicher 104 geschrieben werden. In einigen Implementierungen können die von der Zugriffsvorrichtung 150 empfangenen Daten vor dem Speichern in dem BRAM 188 codiert werden. Zum Beispiel können die Daten durch die ECC-Engine 179 codiert werden. Als weiteres Beispiel können Daten, die aus dem Speicher 104 gelesen werden, in dem BRAM 188 gespeichert werden, bevor sie an die Zugriffsvorrichtung 150 geliefert werden. In einigen Implementierungen können die aus dem Speicher 104 gelesenen Daten vor dem Speichern in dem BRAM 188 decodiert werden. Zum Beispiel können die Daten durch die ECC-Engine 179 decodiert werden.
  • Während des Betriebs kann die Datenspeichervorrichtung 102 hochgefahren werden (z. B. kann ein Hochfahrereignis initiiert werden). Als Antwort auf das Hochfahrereignis kann die Firmware 162 in den zweiten Speicher 160 geladen und/oder von dort darauf zugegriffen werden. Als Teil des Hochfahrereignisses oder nach Beendigung des Hochfahrereignisses kann der Controller 120 dazu ausgelegt sein, jeden des einen oder der mehreren Zähler 172 auf einen entsprechenden Anfangswert zu setzen. Zusätzlich oder alternativ kann der Controller 120 dazu ausgelegt sein, als Teil des Hochfahrereignisses oder nach Beendigung des Hochfahrereignisses ein Standard-Ablaufplanungsschema aus den mehreren Ablaufplanungsschemata 164 auszuwählen. Wie hierin beschrieben kann das erste Ablaufplanungsschema 166 das Standard-Ablaufplanungsschema sein. In anderen Implementierungen kann jedoch das zweite Ablaufplanungsschema 168 das Standard-Ablaufplanungsschema sein.
  • Der Controller 120 kann eine oder mehrere erste Speicheroperationen 134 gemäß dem ersten Ablaufplanungsschema 166 einplanen und kann die eine oder die mehreren ersten Speicheroperationen 134 zum Ausführen an den Speicher 104 senden. Wenn die eine oder die mehreren ersten Speicheroperationen 134 eine oder mehrere Schreiboperationen, die dem ersten Chip 141 entsprechen, enthalten, können der eine oder die mehreren Zähler 172 aktualisiert werden. Zum Beispiel kann das Aktualisieren eines bestimmten Zählers ein Inkrementieren des bestimmten Zählers umfassen oder alternativ kann das Aktualisieren des bestimmten Zählers ein Dekrementieren des bestimmten Zählers umfassen.
  • Der Controller 120 kann das erste Auslöserereignis 181 detektieren und kann das zweite Ablaufplanungsschema 168 als Antwort auf das Detektieren des ersten Auslöserereignisses 181 auswählen. Zum Beispiel kann der Scheduler 190 basierend auf dem Detektieren des ersten Auslöserereignisses 181 von der Verwendung des ersten Ablaufplanungsschemas 166 zu der Verwendung des zweiten Ablaufplanungsschemas 168 wechseln (z. B. umschalten).
  • Nach dem Auswählen des zweiten Ablaufplanungsschemas 168 kann der Controller 120 eine oder mehrere zweite Speicheroperationen 136 gemäß dem zweiten Ablaufplanungsschema 168 einplanen und die eine oder die mehreren zweiten Speicheroperationen 136 zur Ausführung an den Speicher 104 senden. Wenn die eine oder die mehreren zweiten Speicheroperationen 136 eine oder mehrere Schreiboperationen, die dem ersten Chip 141 entsprechend, enthalten, können der eine oder die mehreren Zähler 172 aktualisiert werden, um eine Anzahl von Schreiboperationen, die auf dem ersten Chip 141 durchgeführt werden, zu verfolgen.
  • Der Controller 120 kann das zweite Auslöserereignis 182 (oder das vierte Auslöserereignis 184) detektieren und kann als Antwort auf das Detektieren des zweiten Auslöserereignisses 182 (oder des vierten Auslöserereignisses 184) das erste Ablaufplanungsschema 166 auswählen. Beispielsweise kann der Scheduler 190 basierend auf dem Detektieren des zweiten Auslöserereignisses 182 (oder des vierten Auslöserereignisses 184) von der Verwendung des zweiten Ablaufplanungsschemas 168 zu der Verwendung des ersten Ablaufplanungsschemas 166 wechseln (z. B. umschalten).
  • Nach dem Umschalten von dem zweiten Ablaufplanungsschema 168 zu dem ersten Ablaufplanungsschema 166 kann der Controller 120 eine oder mehrere dritte Speicheroperationen 138 gemäß dem ersten Ablaufplanungsschema 166 einplanen und die eine oder die mehreren dritten Speicheroperationen 138 zur Ausführung an den Speicher 104 senden. Wenn die eine oder die mehreren dritten Speicheroperationen 138 eine oder mehrere Schreiboperationen, die dem ersten Chip 141 entsprechen, enthalten, können der eine oder die mehreren Zähler 172 aktualisiert (z. B. inkrementiert oder dekrementiert) werden.
  • In einigen Implementierungen kann der Scheduler 190 vor dem Umschalten zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 bestimmen, ob eine oder mehrere Operationen unter Verwendung eines ausgewählten Ablaufplanungsschemas eingeplant werden sollen, wie es unter Bezugnahme auf 5 beschrieben ist. Wenn beispielsweise das ausgewählte Ablaufplanungsschema das erste Ablaufplanungsschema 166 ist, kann der Scheduler 190 bestimmen, dass er auf das zweite Ablaufplanungsschema 168 umschaltet. Vor dem Umschalten auf das zweite Ablaufplanungsschema 168 kann der Scheduler 190 identifizieren, ob die Speicheroperations-Warteschlange 195 eine oder mehrere erste Operationen angibt, die gemäß dem ersten Ablaufplanungsschema 166 eingeplant werden können. Wenn die Speicheroperations-Warteschlange 195 eine oder mehrere erste Operationen angibt, kann der Scheduler 190 die eine oder die mehreren ersten Operationen vor dem Umschalten auf das zweite Ablaufplanungsschema 168 gemäß dem ersten Ablaufplanungsschema 166 einplanen. Durch Einplanen der verfügbaren Operationen, die gemäß dem ersten Ablaufplanungsschema 166 eingeplant werden sollen, vor dem Umschalten von dem ersten Ablaufplanungsmodus 166 auf das zweite Ablaufplanungsmodus 168 können die verfügbaren Operationen gemäß dem erstem Ablaufplanungsmodus 166 eingeplant werden, ohne auf andere Operationen warten zu müssen, die mit dem zweiten Ablaufplanungsschema 168 eingeplant werden sollen.
  • In einigen Implementierungen kann der Controller 120 das dritte Auslöserereignis 183 detektieren und als Antwort auf das Detektieren des dritten Auslöserereignisses 183 das zweite Ablaufplanungsschema 168 auswählen. Nach dem Auswählen des zweiten Ablaufplanungsschemas 168 kann der Controller 120 eine oder mehrere zweite Speicheroperationen 136 gemäß dem zweiten Ablaufplanungsschema 168 einplanen und kann die eine oder die mehreren zweiten Speicheroperationen 136 zum Ausführen an den Speicher 104 senden. Der Controller 120 kann das vierte Auslöserereignis 184 detektieren und kann als Antwort auf das Detektieren des vierten Auslöserereignisses 184 das erste Ablaufplanungsschema 166 auswählen.
  • Als weiteres Beispiel kann der Scheduler 190 dann, wenn das ausgewählte Ablaufplanungsschema das zweite Ablaufplanungsschema 168 ist, bestimmen, dass er auf das erste Ablaufplanungsschema 166 umschaltet. Vor dem Umschalten auf das erste Ablaufplanungsschema 166 kann der Scheduler 190 identifizieren, ob die Speicheroperations-Warteschlange 195 eine oder mehrere zweite Operationen angibt, die unter Verwendung des zweiten Ablaufplanungsschemas 168 eingeplant werden können. Wenn die Speicheroperations-Warteschlange 195 diese eine oder mehreren zweiten Operationen angibt, kann der Scheduler 190 die eine oder die mehreren zweiten Operationen vor dem Umschalten auf das erste Ablaufplanungsschema 166 gemäß dem zweiten Ablaufplanungsschema 168 einplanen. Durch Einplanen verfügbarer Operationen, die gemäß dem zweiten Ablaufplanungsschema 168 eingeplant werden sollen, vor dem Umschalten von dem zweiten Ablaufplanungsschema 168 auf das erste Ablaufplanungsschema 166 können die verfügbaren Operationen gemäß dem zweiten Ablaufplanungsschema 168 eingeplant werden, ohne auf andere Operationen warten zu müssen, die gemäß dem ersten Ablaufplanungsschema 166 eingeplant werden sollen.
  • In einigen Implementierungen kann der Scheduler 190 das zweite Ablaufplanungsschema 168 auswählen und das zweite Ablaufplanungsschema 168 auf eine oder mehrere Operationen anwenden, um eine oder mehrere Operationen einzuplanen. Beispielsweise kann der Scheduler 190 das zweite Ablaufplanungsschema 168 verwenden, um eine Schreiboperation (z. B. einen langen Schreibbefehl), die von der Zugriffsvorrichtung 150 empfangen wird, einzuplanen. In einigen Implementierungen kann der Scheduler 190 mehrere Schreiboperationen (z. B. mehrere Seitenschreiboperationen) einplanen, um den von der Zugriffsvorrichtung 150 empfangenen langen Schreibbefehl zu erfüllen. Während der Einplanung und/oder Ausführung der langen Schreiboperation (z. B. der mehreren Seitenschreiboperationen) kann der Auslöserdetektor 180 ein Auslöserereignis detektieren. Beispielsweise kann das Auslöserereignis umfassen, dass eine Leseoperation (z. B. eine kurze Leseoperation) eingeplant werden soll, oder dem entsprechen. Die Leseoperation kann einem Auffüllen eines Cache-Speichers (nicht gezeigt) durch einen in dem Speicher 104 gespeicherten Abrufcode zugeordnet sein. Als Antwort auf das Detektieren des Auslöserereignisses kann der Auslöserdetektor 180 die Modusänderungsdaten 186 so erzeugen, dass sie bewirken, dass der Schemaselektor 191 das erste Ablaufplanungsschema 166 auswählt. Der Schemaselektor 191 kann das zweite Ablaufplanungsschema 168 zu dem ersten Ablaufplanungsschema 166 ändern und der Scheduler 190 kann die Leseoperation gemäß dem ersten Ablaufplanungsschema 166 einplanen. Der Auslöserdetektor 180 kann ein weiteres Auslöserereignis detektieren, das einem Einplanen, Initiieren zur Ausführung oder Ausführen der Leseoperation entspricht. Als Antwort auf das andere Auslöserereignis kann der Schemaselektor 191 von dem ersten Ablaufplanungsschema 166 zu dem zweiten Ablaufplanungsschema 168 wechseln. In einigen Implementierungen kann das zweite Ablaufplanungsschema 168 ein Standard-Ablaufplanungsschema der Datenspeichervorrichtung 102 sein.
  • In einigen Implementierungen kann der Scheduler 190 (z. B. der Schemaselektor 191) dazu ausgelegt (z. B. befähigt) sein, als Antwort auf ein Detektieren sequentieller Schreiboperationen, die durchgeführt werden sollen und/oder die in dem Speicher 104 durchgeführt werden, zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 zu wechseln. Beispielsweise kann der Scheduler 190 die sequentiellen Schreiboperationen als veranschaulichende, nicht einschränkende Beispiele auf der Basis einer oder mehrerer Schreibadressen, die Daten entsprechen, die in den Speicher 104 geschrieben werden sollen, einer Größe von Daten, die in den Speicher 104 geschrieben werden sollen, oder einer Kombination davon detektieren. In einigen Implementierungen kann der Schemaselektor 191 als Antwort auf das Detektieren der sequentiellen Schreiboperationen dazu befähigt werden, basierend auf dem Moduswert 194 (z. B. basierend auf den Modusänderungsdaten 186) zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 umzuschalten. In einigen Implementierungen kann der Schemaselektor 191 dann, wenn die sequentiellen Schreiboperationen nicht detektiert werden, unabhängig von dem Moduswert 194 (z. B. den Modusänderungsdaten 186) nicht in der Lage sein, zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 zu wechseln. In solchen Situationen kann der Scheduler 190 ein ausgewähltes Ablaufplanungsschema wie beispielsweise ein Standard-Ablaufplanungsschema verwenden (z. B. weiter verwenden).
  • In einigen Implementierungen können der eine oder die mehreren Zähler 172 einen bestimmten Zähler, der dem ersten Chip 141 entspricht, enthalten. Der bestimmte Zähler kann dazu ausgelegt sein, Schreiboperationen (z. B. Seitenschreiboperationen), die auf dem ersten Chip 141 durchgeführt werden, zu zählen. Als Antwort darauf, dass eine Löschoperation auf dem ersten Chip 141 durchgeführt wird, kann ein erster Wert des bestimmten Zählers in dem zweiten Speicher 160 gespeichert werden. Eine Zählung von Schreiboperationen, die nach der Löschoperation eingeplant, zur Ausführung initiiert oder ausgeführt werden, kann auf der Basis der Zählung (z. B. einer aktuellen Zählung), die durch den bestimmten Zähler angegeben wird, und des ersten Werts bestimmt werden. Der Auslöserdetektor 180 kann die Zählung von Schreiboperationen, die nach der Löschoperation eingeplant, zur Ausführung initiiert oder ausgeführt werden, mit der ersten Schwelle vergleichen. Zusätzlich oder alternativ kann als Antwort auf eine Validierungsoperation, die auf dem ersten Chip 141 durchgeführt wird, ein zweiter Wert des bestimmten Zählers in dem zweiten Speicher 160 gespeichert werden. Eine Zählung von Schreiboperationen, die nach der Validierungsoperation eingeplant, zur Ausführung initiiert oder ausgeführt werden, kann auf der Basis der Zählung (z. B. einer aktuellen Zählung), die durch den bestimmten Zähler angegeben wird, und des zweiten Werts bestimmt werden. Der Auslöserdetektor 180 kann die Zählung von Schreiboperationen, die nach der Validierungsoperation eingeplant, zur Ausführung initiiert oder ausgeführt werden, mit der zweiten Schwelle vergleichen.
  • In einigen Implementierungen können die Ablaufplanungsschemata 164 mehr als zwei Ablaufplanungsschemata umfassen, wie beispielsweise das erste Ablaufplanungsschema 166, ein zweites Ablaufplanungsschema 168 und ein drittes Ablaufplanungsschema. Das dritte Ablaufplanungsschema kann einem opportunistischen Ablaufplanungsschema oder einem Pipeline-Ablaufplanungsschema entsprechen. Wenn beispielsweise das dritte Ablaufplanungsschema und das erste Ablaufplanungsschema 166 opportunistische Ablaufplanungsschemata sind, kann das dritte Ablaufplanungsschema einen Round-Robin-Ansatz verwenden und das erste Ablaufplanungsschema 166 kann einen Zeitschätzungsansatz verwenden. Als weiteres Beispiel kann dann, wenn das dritte Ablaufplanungsschema und das zweite Ablaufplanungsschema 168 opportunistische Ablaufplanungsschemata sind, das dritte Ablaufplanungsschema einer ersten Reihenfolge zum Einplanen von verschiedenen Typen von Operationen zugordnet sein (z. B. einem Einplanen von Schreibtyp-Operationen, gefolgt von Löschtyp-Operationen, gefolgt von Validierungstyp-Operationen) und das zweite Ablaufplanungsschema 166 einer zweiten Reihenfolge eines Einplanens verschiedener Operationstypen zugeordnet sein (z. B. einem Einplanen von Schreibtyp-Operationen, gefolgt von Validierungstyp-Operationen, gefolgt von Löschtyp-Operationen). Wenn die Ablaufplanungsschemata 164 mehr als zwei Ablaufplanungsschemata umfassen, kann der Auslöserdetektor 180 Auslöserereignisse für jedes der mehreren Ablaufplanungsschemata 164 aufweisen. Beispielsweise kann ein erstes spezielles Auslöserereignis einem Auswählen des ersten Ablaufplanungsschemas 166 zugeordnet sein, ein zweites spezielles Auslöserereignis einem Auswählen des zweiten Ablaufplanungsschemas 168 zugeordnet sein, und ein drittes spezielles Auslöserereignis einem Auswählen des dritten Ablaufplanungsschemas zugeordnet sein. Obwohl das erste Ablaufplanungsmodus 166 als das opportunistische Ablaufplanungsschema beschrieben worden ist und das zweite Ablaufplanungsschema 168 als das Pipeline-Ablaufplanungsschema beschrieben worden ist, kann das erste Ablaufplanungsschema 166 in anderen Implementierungen das Pipeline-Ablaufplanungsschema sein und das zweite Ablaufplanungsschema 168 das opportunistische Ablaufplanungsschema sein.
  • In einigen Implementierungen kann die Datenspeichervorrichtung 102 Zuordnungsdaten von logisch zu physisch enthalten, wie beispielsweise eine Logisch-zu-physisch-Zuordnungstabelle. Zum Beispiel können die Zuordnungsdaten von logisch zu physisch in dem Speicher 104 und/oder dem zweiten Speicher 160 der Datenspeichervorrichtung 102 gespeichert sein. Zusätzlich oder alternativ können die Zuordnungsdaten von logisch zu physisch in einem Speicher der Zugriffsvorrichtung 150 gespeichert sein.
  • Obwohl die Speicheroperations-Warteschlange 195 als in dem Scheduler 190 enthalten dargestellt ist, kann die Speicheroperations-Warteschlange 195 als veranschaulichende, nicht einschränkende Beispiele in anderen Implementierungen in der Zugriffsschnittstelle 108, dem Speicher 104, dem zweiten Speicher 160 oder der Zugriffsvorrichtung 150 enthalten sein. Beispielsweise können die Datenspeichervorrichtung 102 und die Zugriffsvorrichtung 150 jeweils eine entsprechende Speicheroperations-Warteschlange enthalten. Die von der Zugriffsvorrichtung 150 verwaltete Speicheroperations-Warteschlange kann es der Zugriffsvorrichtung 150 ermöglichen, die von der Zugriffsvorrichtung 150 an die Datenspeichervorrichtung gesendeten Speicheroperationen zu verfolgen.
  • In einigen Implementierungen können die Firmware 162, die eine oder die mehreren Schwellen 170, die mehreren Ablaufplanungsschemata 164, der eine oder die mehreren Zähler 172 oder eine Kombination davon in dem Speicher 104 gespeichert sein. In anderen Implementierungen kann der Controller 120 einen bestimmten Speicher (z. B. den zweiten Speicher 160) wie beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM), der dazu ausgelegt ist, die Firmware 162, die eine oder die mehreren Schwellen 170, die mehreren Ablaufplanungsschemata 164, den einen oder die mehreren Zähler 172 oder eine Kombination davon zu speichern, umfassen oder mit diesem gekoppelt sein. Alternativ oder zusätzlich kann der Controller 120 einen weiteren Speicher (nicht gezeigt) wie etwa einen nichtflüchtigen Speicher, einen RAM oder einen Nur-Lese-Speicher (ROM), enthalten oder mit diesem gekoppelt sein. Der weitere Speicher kann eine einzelne Speicherkomponente, mehrere unterschiedliche Speicherkomponenten und/oder mehrere verschiedene Typen (z. B. flüchtigen und/oder nichtflüchtigen Speicher) von Speicherkomponenten sein. In einigen Ausführungsformen kann der weitere Speicher in der Zugriffsvorrichtung 150 enthalten sein.
  • Obwohl eine oder mehrere Komponenten der Datenspeichervorrichtung 102 in Bezug auf den Controller 120 beschrieben worden sind, können in anderen Implementierungen bestimmte Komponenten in dem Speicher 104 enthalten sein. Beispielsweise können der zweite Speicher 160, die ECC-Engine 179, der Auslöserdetektor 180, der BRAM 188 und/oder der Scheduler 190 in dem Speicher 104 enthalten sein. Alternativ oder zusätzlich können eine oder mehrere Funktionen, die oben mit Bezug auf den Controller 120 beschrieben sind, bei oder durch den Speicher 104 durchgeführt werden. Zum Beispiel können eine oder mehrere Funktionen des zweiten Speichers 160, der ECC-Engine 179, des Auslöserdetektors 180, des BRAM 188 und/oder des Schedulers 190 durch Komponenten und/oder Schaltungen durchgeführt werden, die in dem Speicher 104 enthalten sind. Alternativ oder zusätzlich können eine oder mehrere Komponenten der Datenspeichervorrichtung 102 in der Zugriffsvorrichtung 150 enthalten sein. Beispielsweise können der zweiten Speicher 160, die ECC-Engine 179, der Auslöserdetektor 180, der BRAM 188 und/oder der Scheduler 190 in der Zugriffsvorrichtung 150 enthalten sein. Alternativ oder zusätzlich können eine oder mehrere Funktionen, die oben mit Bezug auf den Controller 120 beschrieben sind, bei oder durch die Zugriffsvorrichtung 150 ausgeführt werden. Als veranschaulichendes, nicht einschränkendes Beispiel kann die Zugriffsvorrichtung 150 dazu ausgelegt sein, ein oder mehrere Auslöserereignisse zu detektieren und die Modusänderungsdaten 186 als Antwort auf das Detektieren des einen oder der mehreren Auslöserereignisse an den Scheduler 190 der Datenspeichervorrichtung 102 zu senden.
  • Durch Detektieren eines oder mehrerer Auslöserereignisse (z. B. einer oder mehrerer Auslöserbedingungen) kann die Datenspeichervorrichtung 102 dynamisch zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 umschalten. Beispielsweise kann die Datenspeichervorrichtung 102 während der Durchführung (z. B. Einplanung, Initiierung und/oder Ausführung) sequentieller Schreiboperationen dynamisch zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 umschalten. Durch dynamisches Umschalten des ausgewählten Ablaufplanungsmodus kann das zweite Ablaufplanungsschema 168 (und/oder das erste Ablaufplanungsschema 166) selektiv verwendet (z. B. angewendet) werden, um die Speicherausnutzung (des Speichers 104) im Vergleich zu einer Speichervorrichtung, die ein einziges Auswahlschema verwendet, zu verbessern.
  • Unter Bezugnahme auf 2A ist eine spezielle beispielhafte Ausführungsform eines ersten Zeitdiagramms von Operationen, die in dem System 100 durchgeführt werden, dargestellt und allgemein mit 200 bezeichnet. Beispielsweise stellt das erste Zeitdiagramm 200 Daten, die von dem Controller 120 über die Speicherschnittstelle (MI) 109 an den Speicher 104 übertragen werden und Operationen, die auf den Speicherchips 141144 durchgeführt wurden, dar. Das Zeitdiagramm 200 enthält einen ersten Abschnitt, der einer ersten Zeitspanne (T1) entspricht, und einen zweiten Abschnitt, der einer zweiten Zeitspanne (T2) entspricht. Die erste Zeitspanne (T1) kann vor der zweiten Zeitspanne (T2) auftreten.
  • Während der ersten Zeitspanne (T1) kann der Scheduler 190 eine oder mehrere erste Operationen gemäß dem ersten Ablaufplanungsmodus 166 wie beispielsweise einem opportunistischen Ablaufplanungsmodus einplanen. Die eine oder die mehreren ersten Operationen können der einen oder den mehreren ersten Speicheroperationen 134 von 1 entsprechen. Wie in dem ersten Zeitdiagramm 200 dargestellt können die Chips 141144 die eine oder die mehreren ersten Operationen ausführen, die gemäß dem ersten Ablaufplanungsmodus 166 eingeplant sind.
  • Während der zweiten Zeitspanne (T2) kann der Scheduler 190 eine oder mehrere zweite Operationen einplanen. Die eine oder die mehreren zweiten Operationen können der einen oder den mehreren ersten Speicheroperationen 134 von 1 entsprechen. Wie in dem ersten Zeitdiagramm 200 dargestellt können die Chips 141144 die eine oder die mehreren zweiten Operationen ausführen, die gemäß dem ersten Ablaufplanungsschema 166 eingeplant sind. Der Auslöserdetektor 180 kann das erste Auslöserereignis 181 während der zweiten Zeitspanne (T2) detektieren. Beispielsweise kann ein Zähler, der dem dritten Chip (D2) 143 entspricht, als Antwort auf eine Schreiboperation inkrementiert werden, die eingeplant ist, um auf dem dritten Chip (D2) 143 ausgeführt zu werden.
  • Als Antwort auf das Detektieren des ersten Auslöserereignisses 181 kann der Schemaselektor 191 das zweite Ablaufplanungsschema 168, wie z. B. ein Pipeline-Ablaufplanungsschema, auswählen. Der Scheduler 190 kann einen Satz von Löschoperationen einplanen, die auf den Chips 141144 durchgeführt werden sollen. Zum Beispiel kann eine erste Löschoperation 290 zum Ausführen auf dem vierten Chip (D3) 144 eingeplant werden, eine zweite Löschoperation 292 zum Ausführen auf dem ersten Chip (D0) 141 eingeplant werden, eine dritte Löschoperation 294 zum Ausführen auf dem zweiten Chip (D1) 142 eingeplant werden und eine vierte Löschoperation 296 zum Ausführen auf dem dritten Chip (D2) 143 eingeplant werden. Der Satz von Löschoperationen kann die eine oder die mehreren zweiten Speicheroperationen 136 von 1 enthalten oder diesen entsprechen. Wie in dem ersten Zeitdiagramm 200 dargestellt kann, vor dem Einplanen des Satzes von Löschoperationen gemäß dem zweiten Ablaufplanungsschema 168, gemäß dem ersten Ablaufplanungsschema 166 eine erste Leseoperation auf dem vierten Chip (D3) 144 und eine zweite Leseoperation auf dem zweiten Chip (D1) 142 eingeplant werden.
  • Der Auslöserdetektor 180 kann das zweite Auslöserereignis 182, das dem Satz von Löschoperationen zugeordnet ist, detektieren. Beispielsweise kann das zweite Auslöserereignis 182 dem Satz von Löschoperationen entsprechen, die eingeplant, zur Ausführung initiiert oder abgeschlossen werden. Beispielsweise kann das zweite Auslöserereignis 182 als veranschaulichendes, nicht einschränkendes Beispiel Folgendem entsprechen: Die vierte Löschoperation 296 wird eingeplant, die erste Löschoperation 290 wird initiiert, die vierte Löschoperation 296 wird initiiert, die Ausführung der ersten Löschoperation 290 wird abgeschlossen oder die Ausführung der vierten Löschoperation 296 wird abgeschlossen.
  • Als Antwort auf die Detektion des zweiten Auslöserereignisses 182 kann der Schemaselektor 193 das erste Ablaufplanungsmodus 166 auswählen und der Scheduler 190 kann eine oder mehrere dritte Operationen einplanen. Die eine oder die mehreren dritten Operationen können der einen oder den mehreren dritten Speicheroperationen 138 von 1 entsprechen. Wie in dem ersten Zeitdiagramm 200 dargestellt können die Chips 141144 die eine oder die mehreren dritten Operationen gemäß dem ersten Ablaufplanungsmodus 166 nach dem Satz von Löschoperationen (eingeplant gemäß dem zweiten Ablaufplanungsmodus 168) ausführen.
  • Unter Bezugnahme auf 2B ist eine spezielle beispielhafte Ausführungsform eines zweiten Zeitdiagramms von Operationen, die in dem System 100 durchgeführt werden, dargestellt und allgemein mit 297 bezeichnet. Beispielsweise stellt das zweite Zeitdiagramm 297 Daten, die von dem Controller 120 über die Speicherschnittstelle (MI) 109 an den Speicher 104 übertragen werden, und Operationen, die in den Speicherchips 141144 durchgeführt werden, dar.
  • Das zweite Zeitdiagramm 297 zeigt eine alternative Implementierung im Vergleich zu dem ersten Zeitdiagramm 200 von 2A. In dem ersten Zeitdiagramm 200 von 2A führen beim Umschalten zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 einer oder mehrere der Chips 141144 Operationen gemäß dem ersten Ablaufplanungsschema 166 aus, während andere Chips gleichzeitig Operationen gemäß dem zweiten Ablaufplanungsschema 168 ausführen. Dementsprechend veranschaulicht das erste Zeitdiagramm 200, dass ermöglicht wird, dass mindestens ein Chip eine Operation gemäß dem ersten Ablaufplanungsschema 166 ausführt, während ein weiterer Chip eine Operation gemäß dem zweiten Ablaufplanungsschema 168 ausführt.
  • In dem zweiten Zeitdiagramm 297 von 2B ist dargestellt, dass die Chips 141144 jeweils gleichzeitig zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 umschalten. Zum Beispiel haben die Chips 141144 zu einem ersten Zeitpunkt T(A) 298 Operationen gemäß dem ersten Ablaufplanungsschema 166 abgeschlossen. Nach dem ersten Zeitpunkt T(A) 298 führt jeder der Chips 141144 eine oder mehrere Operationen gemäß dem zweiten Ablaufplanungsschema 168 durch. Zu einem zweiten Zeitpunkt T(B) 299 haben die Chips 141144 Operationen gemäß dem zweiten Ablaufplanungsschema 168 abgeschlossen. Nach dem zweiten Zeitpunkt T(B) 299 führt jeder der Chips 141144 Operationen gemäß dem ersten Ablaufplanungsmodus 166 durch. Dementsprechend stellt das zweite Zeitdiagramm 297 ein gleichzeitiges Umschalten aller der Chips 141144 zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 dar.
  • Unter Bezugnahme auf 3 ist eine spezielle beispielhafte Ausführungsform eines dritten Zeitdiagramms von Operationen, die in dem System 100 durchgeführt werden, dargestellt und allgemein mit 300 bezeichnet. Beispielsweise stellt das dritte Zeitdiagramm 300 Daten, die von dem Controller 120 über die Speicherschnittstelle (MI) 109 an den Speicher 104 übertragen werden, und Operationen, die in den Speicherchips 141144 durchgeführt werden, dar.
  • Der Scheduler 190 kann eine oder mehrere erste Operationen gemäß dem ersten Ablaufplanungsmodus 166, wie beispielsweise einem opportunistischen Ablaufplanungsschema, einplanen. Die eine oder die mehreren ersten Operationen können der einen oder den mehreren ersten Speicheroperationen 134 von 1 entsprechen. Wie in dem dritten Zeitdiagramm 300 dargestellt können die Chips 141144 die eine oder die mehreren ersten Operationen ausführen, die gemäß dem ersten Ablaufplanungsschema 166 eingeplant sind.
  • Der Auslöserdetektor 180 kann das dritte Auslöserereignis 183 basierend auf einer Ausführung der einen oder der mehreren ersten Operationen detektieren. Zum Beispiel kann der zweite Zähler 176 als Antwort auf eine Beendigung einer Schreiboperation, die auf dem ersten Chip 141 ausgeführt wird, inkrementiert werden. Der Auslöserdetektor 180 kann die Zählung des zweiten Zählers 176 mit der zweiten Schwelle vergleichen und kann das dritte Auslöserereignis 183 als Antwort darauf detektieren, dass die Zählung den zweiten Schwellenwert erfüllt.
  • Als Antwort auf die Detektion des dritten Auslöserereignisses 183 kann der Schemaselektor 191 das zweite Ablaufplanungsschema 168, wie z. B. ein Pipeline-Ablaufplanungsschema, auswählen. Der Scheduler 190 kann einen Satz von Validierungsoperationen einplanen, die auf den Chips 141144 durchgeführt werden sollen. Der Satz von Validierungsoperationen kann mehrere Validierungsoperationen umfassen, die auf jedem der Chips 141144 durchgeführt werden sollen. Zum Beispiel kann eine erste Gruppe von mehreren Validierungsoperationen, die eine erste Validierungsoperation 321 enthält, zum Durchführen auf dem ersten Chip (D0) 141 eingeplant werden, eine zweite Gruppe von mehreren Validierungsoperationen, die eine zweite Validierungsoperation 322 enthalten, zum Durchführen auf dem zweiten Chip (D1) 142 eingeplant werden, eine dritte Gruppe von mehreren Validierungsoperationen, die eine dritte Validierungsoperation 323 enthält, zum Durchführen auf dem dritten Chip (D2) 143 eingeplant werden und eine vierte Gruppe von mehreren Validierungsoperationen, die eine vierte Validierungsoperation 324 enthalten, zum Durchführen auf dem vierten Chip (D3) 144 eingeplant werden. Obwohl jede Gruppe von mehreren Validierungsoperationen als zehn Validierungsoperationen enthaltend dargestellt ist, kann in anderen Implementierungen jede Gruppe von mehreren Validierungsoperationen mehr als oder weniger als zehn Validierungsoperationen enthalten. Der Satz von Validierungsoperationen kann die eine oder die mehreren zweiten Speicheroperationen 136 von 1 umfassen oder diesen entsprechen.
  • Der Auslöserdetektor 180 kann das vierte Auslöserereignis 184, das dem Satz von Validierungsoperationen zugeordnet ist, detektieren. Beispielsweise kann das vierte Auslöserereignis 184 dem Ereignis entsprechen, dass der Satz von Validierungsoperationen eingeplant, zur Ausführung initiiert oder abgeschlossen wird. Beispielsweise kann das vierte Auslöserereignis 184 dem Ereignis entsprechen, dass als veranschaulichende, nicht einschränkende Beispiele die vierte Validierungsoperation 324 ein geplant wird, die erste Validierungsoperation 321 initiiert wird, die vierte Validierungsoperation 324 initiiert wird, die Ausführung der ersten Validierungsoperation 321 abgeschlossen wird oder die Ausführung der vierten Operation 324 abgeschlossen wird.
  • Als Antwort auf eine Detektion des vierten Auslöserereignisses 184 kann der Schemaselektor 193 das erste Ablaufplanungsschema 166 auswählen und der Scheduler 190 kann eine oder mehrere dritte Operationen einplanen. Die eine oder die mehreren dritten Operationen können der einen oder den mehreren dritten Speicheroperationen 138 von 1 entsprechen. Wie in dem dritten Zeitdiagramm 300 dargestellt können die Chips 141144 die eine oder die mehreren dritten Operationen, die gemäß dem ersten Ablaufplanungsschema 166 eingeplant sind, nach dem Satz von Validierungsoperationen (eingeplant gemäß dem zweiten Ablaufplanungsschema 168) ausführen.
  • Somit stellen die Zeitdiagramme 200, 297 und 300 jeweils ein Umschalten zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 dar. Durch Umschalten zwischen dem ersten Ablaufplanungsschema 166 und dem zweiten Ablaufplanungsschema 168 kann die Speicherausnutzung (des Speichers 104) verbessert werden.
  • Unter Bezugnahme auf 4 ist eine spezielle veranschaulichende Ausführungsform eines Verfahrens dargestellt und allgemein mit 400 bezeichnet. Das Verfahren 400 kann in der Datenspeichervorrichtung 102 durchgeführt werden, beispielsweise durch den Scheduler 190, den Controller 120, einen Prozessor oder eine Schaltungsanordnung, die dazu ausgelegt ist, die Firmware 162 von 1 auszuführen, die Zugriffsvorrichtung 150 oder eine Kombination davon als veranschaulichende, nicht einschränkende Beispiele.
  • Das Verfahren 400 kann bei 402 ein Auswählen eines ersten Ablaufplanungsmodus umfassen. Das erste Ablaufplanungsschema kann das erste Ablaufplanungsschema 166 oder das zweite Ablaufplanungsschema 168 von 1 umfassen. In einigen Implementierungen kann das erste Ablaufplanungsschema ein Standard-Ablaufplanungsschema der Datenspeichervorrichtung sein. Beispielsweise kann das erste Ablaufplanungsschema als Antwort auf ein Hochfahren der Datenspeichervorrichtung als Standard-Ablaufplanungsschema ausgewählt werden.
  • Das Verfahren 400 kann bei 404 ein Einplanen einer oder mehrerer Operationen gemäß dem (z. B. unter Verwendung des) ersten Ablaufplanungsschema(s) umfassen. Beispielsweise können die eine oder die mehreren Operationen die eine oder die mehreren ersten Speicheroperationen 134 von 1 enthalten oder diesen entsprechen.
  • Das Verfahren 400 kann bei 406 ein Bestimmen, ob ein erster Typ von Operation auf einem Chip eingeplant werden soll, umfassen. Beispielsweise kann der Chip irgendwelche von mehreren Chips der Datenspeichervorrichtung wie etwa die Chips 141144 von 1 enthalten. In einigen Implementierungen kann der erste Typ von Operation eine Löschoperation enthalten oder dieser entsprechen. Wenn der erste Typ von Operation nicht auf einem Chip eingeplant werden soll, kann das Verfahren 400 zu 414 fortschreiten. Alternativ kann, wenn der erste Typ von Operation auf einem Chip eingeplant werden soll, das Verfahren 400 zu 408 fortschreiten.
  • Das Verfahren 400 kann bei 408 ein Auswählen eines zweiten Ablaufplanungsschemas umfassen. Das zweite Ablaufplanungsschema kann sich von dem ersten Ablaufplanungsschema unterscheiden. Wenn beispielsweise das erste Ablaufplanungsmodus ein opportunistisches Ablaufplanungsmodus ist, kann das zweite Ablaufplanungsmodus ein festes Ablaufplanungsmodus (z. B. ein Pipeline-Ablaufplanungsschema) sein. Als weiteres Beispiel kann dann, wenn das erste Ablaufplanungsschema das feste Ablaufplanungsschema (z.B. das Pipeline-Ablaufplanungsschema) ist, das zweite Ablaufplanungsschema das opportunistische Ablaufplanungsschema sein. In einigen Implementierungen kann dann, wenn der erste Typ von Operation die Löschoperation ist, das zweite Ablaufplanungsschema dem zweiten Ablaufplanungsschema 168 (z. B. dem Pipeline-Ablaufplanungsschema) von 1 entsprechen.
  • Das Verfahren 400 kann bei 410 ein Planen eines ersten Satzes des ersten Typs von Operation umfassen. Der erste Satz des ersten Typs von Operation kann eine Operation für jeden Chip der mehreren Chips der Datenspeichervorrichtung umfassen. Alternativ kann der erste Satz des ersten Typs von Operation eine Anzahl von Operationen umfassen, die kleiner als eine Anzahl der in der Datenspeichervorrichtung enthaltenen Chips ist. Beispielsweise kann der erste Satz des ersten Typs von Operation eine Operation für jeden Chip einer ersten Metaebene von mehreren Metaebenen der Datenspeichervorrichtung umfassen. In einigen Implementierungen kann der erste Satz des ersten Typs von Operation die eine oder die mehreren zweiten Speicheroperationen 136 von 1 umfassen oder diesen entsprechen.
  • Das Verfahren 400 kann bei 412 ein Bestimmen, ob ein erstes Auslöserereignis (z. B. eine erste Auslöserbedingung) detektiert wird, umfassen. Beispielsweise kann das erste Auslöserereignis eines der Auslöserereignisse 181184 von 1 wie etwa das zweite Auslöserereignis 182 von 1 umfassen. Wenn das erste Auslöserereignis nicht detektiert wird, kann das Verfahren 400 bei 413 ein Einplanen einer oder mehrerer zusätzlicher Operationen unter Verwendung des zweiten Ablaufplanungsschemas umfassen und dann zu 412 fortfahren. Wenn das erste Auslöserereignis detektiert wird, kann das Verfahren 400 zu 414 fortfahren.
  • Das Verfahren 400 kann bei 414 ein Bestimmen, ob ein zweiter Typ von Operation auf einem Chip eingeplant werden soll, umfassen. In einigen Implementierungen kann der zweite Typ von Operation eine Validierungsoperation enthalten oder dieser entsprechen. Wenn der zweite Typ von Operation nicht auf einem Chip eingeplant werden soll, kann das Verfahren 400 zu 402 fortschreiten und das erste Ablaufplanungsschema kann ausgewählt werden. Alternativ kann dann, wenn der zweite Typ von Operation eingeplant werden soll, das Verfahren 400 zu 416 fortfahren.
  • Das Verfahren 400 kann ein Auswählen des zweiten Ablaufplanungsschemas bei 416 umfassen. Wenn das zweite Ablaufplanungsschema ein vorheriges (z. B. zuletzt ausgewähltes) Ablaufplanungsschema ist, kann das Auswählen des zweiten Ablaufplanungsschemas ein Beibehalten des zweiten Ablaufplanungsschemas als ausgewähltes Ablaufplanungsschema umfassen.
  • Das Verfahren 400 kann bei 418 ein Einplanen eines zweiten Satzes der Operation des zweiten Typs umfassen. Der zweite Satz des zweiten Typs von Operation kann eine Operation für jeden Chip der mehreren Chips der Datenspeichervorrichtung enthalten. Alternativ kann der zweite Satz des zweiten Typs von Operation eine Anzahl von Operationen umfassen, die kleiner als eine Anzahl von in der Datenspeichervorrichtung enthaltenen Chips ist. Beispielsweise kann der zweite Satz des zweiten Typs von Operation eine Operation für jeden Chip einer ersten Metaebene von mehreren Metaebenen der Datenspeichervorrichtung enthalten. In einigen Implementierungen kann der zweite Satz des zweiten Typs von Operation die eine oder die mehreren zweiten Speicheroperationen 136 von 1 enthalten oder diesen entsprechen.
  • Das Verfahren 400 kann bei 420 ein Bestimmen, ob ein zweites Auslöserereignis (z. B. eine zweite Auslöserbedingung) detektiert wird, umfassen. Beispielsweise kann das zweite Auslöserereignis eines der Auslöserereignisse 181184 von 1, beispielsweise das vierte Auslöserereignis 184 von 1, sein. In einigen Implementierungen kann das zweite Auslöserereignis anders sein als das erste Auslöserereignis. Wenn das zweite Auslöserereignis nicht detektiert wird, kann das Verfahren 400 bei 421 ein Einplanen einer oder mehrerer zusätzlicher Operationen unter Verwendung des zweiten Ablaufplanungsschemas umfassen und dann zu 420 fortfahren. Wenn das zweite Auslöserereignis detektiert wird, kann das Verfahren 400 zu 402 fortschreiten.
  • Durch selektives Verwenden des zweiten Ablaufplanungsschemas, um eine oder mehrere Operationen (z. B. Operationen mit dem ersten Typ und/oder dem zweiten Typ) einzuplanen, kann die Speicherausnutzung der Datenspeichervorrichtung verbessert werden. Beispielsweise kann die Datenspeichervorrichtung zum Einplanen dynamisch zwischen einem ersten Ablaufplanungsschema und einem zweiten Ablaufplanungsschema umschalten, um Operationen effizient einzuplanen.
  • Unter Bezugnahme auf 5 ist eine spezielle beispielhafte Ausführungsform eines Verfahrens dargestellt und allgemein mit 500 bezeichnet. Das Verfahren 500 kann in der Datenspeichervorrichtung 102 durchgeführt werden, beispielsweise durch den Scheduler 190, den Controller 120, einen Prozessor oder eine Schaltungsanordnung, die dazu ausgelegt ist, die Firmware 162 von 1 auszuführen, oder eine Kombination davon, als veranschaulichende, nicht einschränkende Beispiele.
  • Das Verfahren 500 kann bei 502 ein Durchführen einer opportunistischen Ablaufplanung umfassen. Das Durchführen der opportunistischen Ablaufplanung kann die Verwendung des ersten Ablaufplanungsschemas 166 von 1, um mindestens eine Operation einzuplanen, umfassen.
  • Das Verfahren kann bei 504 ein Bestimmen, ob eine Löschoperation auf einem Chip eingeplant werden soll, umfassen. Der Chip kann in einem Speicher einer Datenspeichervorrichtung wie beispielsweise dem Speicher 104 der Datenspeichervorrichtung 102 von 1 enthalten sein. Zum Beispiel kann der Speicher mehrere Chips enthalten, die den Chip enthalten. Der Chip kann in einer Gruppe von Chips enthalten sein, die einer Metaebene (z. B. der Metaebene 130) der mehreren Chips zugeordnet sind. In einigen Implementierungen kann der Speicher mehrere Metaeebenen wie beispielsweise eine erste Metaebene, die den Chip enthält, und eine zweite Metaebene enthalten. Wenn keine Löschoperation eingeplant werden soll, kann das Verfahren 500 zu 520 fortschreiten. Alternativ kann dann, wenn eine Löschoperation eingeplant ist, das Verfahren 500 zu 506 vorrücken.
  • Das Verfahren 500 kann bei 506 ein Bestimmen, ob Zugriffsvorrichtungsbefehle zur Ausführung verfügbar sind, enthalten. Zum Beispiel können ein oder mehrere Zugriffsvorrichtungsbefehle verfügbar sein und in der Speicheroperations-Warteschlange 195 von 1 gespeichert sein. Der eine oder die mehreren Zugriffsvorrichtungsbefehle können an der Datenspeichervorrichtung von einer Zugriffsvorrichtung wie beispielsweise der Zugriffsvorrichtung 150 von 1 empfangen werden. Wenn keine Zugriffsvorrichtungsbefehle verfügbar sind, kann das Verfahren 500 bei 508 ein Auswählen der Pipeline-Ablaufplanung umfassen. Die Pipeline-Ablaufplanung kann das zweite Ablaufplanungsschema 168 von 1 enthalten oder diesem entsprechen. Wenn alternativ ein oder mehrere Zugriffsvorrichtungsbefehle, die ausgeführt werden sollen, vorliegen, kann das Verfahren 500 (gemäß der opportunistischen Ablaufplanung) bei 510 die einen oder mehrere Zugriffsvorrichtungsbefehle vor dem Fortschreiten zu 508 einplanen.
  • Nachdem die Pipeline-Ablaufplanung ausgewählt worden ist, kann das Verfahren 500 bei 508 ein Planen eines Satzes von Löschoperationen bei 512 umfassen. Der Satz von Löschoperationen kann die eine oder die mehreren zweiten Speicheroperationen 136 von 1 umfassen oder diesen entsprechen.
  • Das Verfahren 500 kann ein Bestimmen, ob bei 514 ein Lösch-Auslöserereignis aufgetreten ist, umfassen. Das Lösch-Auslöserereignis kann durch den Auslöserdetektor 180 von 1 detektiert werden und kann eines der Auslöserereignisse 181184 von 1 wie etwa das zweite Auslöserereignis 182 von 1 enthalten oder diesen entsprechen. Wenn das Lösch-Auslöserereignis nicht aufgetreten ist, kann das Verfahren 500 weiterhin überwachen, um zu detektieren und zu bestimmen, ob das Lösch-Auslöserereignis bei 514 aufgetreten ist. Wenn das Lösch-Auslöserereignis aufgetreten ist, kann das Verfahren 500 zu 516 fortschreiten.
  • Das Verfahren 500 kann bei 520 ein Bestimmen, ob eine Validierungsoperation (z. B. eine Verifizierungsoperation) auf einem Chip eingeplant werden soll, umfassen. Wenn keine Validierungsoperation eingeplant werden soll, kann das Verfahren 500 zu 502 fortschreiten. Wenn alternativ eine Validierungsoperation, die eingeplant werden soll, kann das Verfahren 500 zu 522 vorrücken.
  • Das Verfahren 500 kann bei 522 ein Bestimmen, ob Zugriffsvorrichtungsbefehle verfügbar sind, um ausgeführt werden können, umfassen. Wenn keine Zugriffsvorrichtungsbefehle verfügbar sind, kann das Verfahren 500 bei 524 ein Auswählen der Pipeline-Ablaufplanung umfassen. Alternativ kann das Verfahren 500 dann, wenn es einen oder mehrere Zugriffsvorrichtungsbefehle gibt, die ausgeführt werden sollen, (gemäß der opportunistischen Ablaufplanung) bei 526 einen oder mehrere Zugriffsvorrichtungsbefehle vor dem Fortschreiten zu 524 einplanen.
  • Nachdem die Pipeline-Ablaufplanung bei 524 ausgewählt worden ist, kann das Verfahren 500 bei 528 ein Planen eines Satzes von Validierungsoperationen umfassen. Der Satz von Validierungsoperationen kann die eine oder die mehreren zweiten Speicheroperationen 136 von 1 umfassen oder diesen entsprechen.
  • Das Verfahren 500 kann ein Bestimmen, ob ein Validierungs-Auslöserereignis (z. B. ein Verifizierungs-Auslöserereignis) bei 530 aufgetreten ist, umfassen. Unter Bezugnahme auf 1 kann das Validierungs-Auslöserereignis durch den Auslöserdetektor 180 von 1 detektiert werden und kann eines der Auslöserereignisse 181184 von 1 enthalten oder diesem entsprechen, beispielsweise das vierte Auslöserereignis 184 von 1. Wenn das Validierungs-Auslöserereignis nicht aufgetreten ist, kann das Verfahren 500 weiterhin überwachen, um bei 530 zu detektieren und zu bestimmen, ob ein Validierungs-Auslöserereignis aufgetreten ist. Wenn das Validierungs-Auslöserereignis aufgetreten ist, kann das Verfahren 500 zu 516 fortschreiten.
  • Das Verfahren 500 kann bei 516 ein Bestimmen, ob zusätzliche Pipelineoperationen eingeplant werden sollen, umfassen. Wenn zusätzliche Pipelineoperationen eingeplant werden sollen, kann das Verfahren 500 damit fortfahren, die Operationen bei 512 oder 528 einzuplanen. Wenn beispielsweise die zusätzlichen Pipelineoperationen als Löschoperationen bestimmt sind, kann das Verfahren 500 zu 512 fortschreiten. Als weiteres Beispiel kann das Verfahren 500 dann, wenn die zusätzlichen Pipelineoperationen als Validierungsoperationen bestimmt sind, zu 528 fortschreiten. Alternativ kann das Verfahren 500 dann, wenn keine Pipelineoperationen auf dem Chip eingeplant werden sollen, vor dem Fortschreiten zu 502 bei 518 ein Auswählen der opportunistischen Ablaufplanung umfassen.
  • Durch dynamisches Umschalten zwischen dem opportunistischen Ablaufplanungsschema und dem Pipeline-Ablaufplanungsschema kann die Speicherausnutzung der Datenspeichervorrichtung verbessert werden. Zusätzlich können Operationen effizient eingeplant (und nicht verzögert) werden, indem vor dem dynamischen Umschalten zu einem anderen Ablaufplanungsschema geprüft wird, um zu bestimmen, ob Operationen verfügbar sind, um unter Verwendung eines aktuellen Ablaufplanungsschemas eingeplant zu werden. Durch Einplanen der verfügbaren Operationen vor dem Umschalten können Instanzen des wiederholten Umschaltens zwischen dem opportunistischen Ablaufplanungsschema und dem Pipeline-Ablaufplanungsschema während einer kurzen Zeitspanne reduziert werden.
  • Unter Bezugnahme auf 6 ist eine spezielle beispielhafte Ausführungsform eines Verfahrens dargestellt und allgemein mit 600 bezeichnet. Das Verfahren 600 kann in der Datenspeichervorrichtung 102 durchgeführt werden, beispielsweise durch den Scheduler 190, den Controller 120, einen Prozessor oder eine Schaltungsanordnung, die dazu ausgelegt ist, Firmware 162 auszuführen von 1 oder eine Kombination davon, als veranschaulichende, nicht einschränkende Beispiele.
  • Das Verfahren 600 umfasst bei 602 ein Konfigurieren der Datenspeichervorrichtung, um ein erstes Ablaufplanungsschema zu verwenden. In einigen Implementierungen kann der erste Modus durch Aktualisieren eines Modusregisters wie beispielsweise des Modusregisters 192 von 1 zu einen ersten Wert, der dem ersten Ablaufplanungsschema 166 entspricht, eingestellt (z. B. ausgewählt) werden. In einigen Implementierungen kann ein zweiter Modus durch Aktualisieren des Modusregisters wie beispielsweise des Modusregisters 192 von 1 auf einen zweiten Wert, der dem ersten Ablaufplanungsschema 166 entspricht, eingestellt (z. B. ausgewählt) werden. Wie in 1 gezeigt, kann der Scheduler 190 (z. B. der Schemaselektor 191) dazu ausgelegt sein, ein Ablaufplanungsschema als Antwort auf die Modusänderungsdaten 186 umzuschalten (z. B. zu ändern). In einigen Implementierungen kann der erste Modus ein Standardmodus der Datenspeichervorrichtung sein.
  • Das Verfahren 600 umfasst als Antwort auf das Detektieren des Auslöserereignisses bei 604 ein Konfigurieren der Datenspeichervorrichtung, um ein zweites Ablaufplanungsschema zu verwenden. Eines des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas wird verwendet, um eine Durchführung von Speicheroperationen mit dem gleichen Operationstyp auf den mehreren Chips einzuplanen, und das andere des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas wird verwendet, um Speicheroperationen opportunistisch einzuplanen. Unter Bezugnahme auf 1 kann das Auslöserereignis eines der Auslöserereignisse 181184, die durch den Auslöserdetektor 180 von 1 detektiert werden, enthalten oder diesem entsprechen. Beispielsweise kann das Auslöserereignis einer Löschoperation oder einer Validierungsoperation zugeordnet sein. In einigen Implementierungen kann das Auslöserereignis einer oder mehreren Operationen zugeordnet sein, die die eine oder die mehreren ersten Speicheroperationen 134, die eine oder die mehreren zweiten Speicheroperationen 136 oder die eine oder die mehreren dritten Speicheroperationen 138 von 1 enthalten oder diesen entsprechen. In einigen Implementierungen kann das Auslöserereignis basierend auf einer Anzahl von Schreiboperationen detektiert werden. In anderen Implementierungen kann das Auslöserereignis basierend auf dem Schreiben einer letzten Seite in einem Block eines Chips (eines Speichers der Datenspeichervorrichtung) detektiert werden. Als Antwort auf das Detektieren des Auslöserereignisses kann der Auslöserdetektor 180 dazu ausgelegt sein, die Modusänderungsdaten 186 an den Scheduler 190 von 1 zu senden.
  • Das Verfahren 600 umfasst ein Einplanen einer Speicheroperation gemäß dem zweiten Ablaufplanungsschema bei 606. Das Verfahren 600 kann bei 608 auch ein Ausführen der Speicheroperation umfassen. Unter Bezugnahme auf 1 kann der Scheduler 190 eine Operation gemäß dem zweiten Ablaufplanungsschema 168 einplanen. Der Operation kann eine Löschoperation, eine Validierungsoperation oder eine Leseoperation als veranschaulichende, nicht einschränkende Beispiele enthalten oder diesen entsprechen. Die Speicheroperation kann auf einem der Chips 141144 von 1 ausgeführt werden.
  • In einigen Implementierungen kann das erste Ablaufplanungsschema ein opportunistisches Ablaufplanungsschema wie das erste Ablaufplanungsschema 166 von 1 umfassen und das zweite Ablaufplanungsschema kann ein Pipeline-Ablaufplanungsschema (z. B. ein festes Ablaufplanungsschema) wie das zweite Ablaufplanungsschema 168 von 1 umfassen. Das Pipeline-Ablaufplanungsschema kann einen Round-Robin-Ansatz verwenden, um Operationen auf mehreren Chips eines Speichers der Datenspeichervorrichtung, wie beispielsweise den Chips 141144 des Speichers 104 der Datenspeichervorrichtung 102 von 1, einzuplanen. In einem bestimmten veranschaulichenden, nicht einschränkenden Beispiel kann das opportunistische Ablaufplanungsschema ein Standard-Betriebsschema der Datenspeichervorrichtung sein. In anderen Implementierungen kann das erste Ablaufplanungsschema das Pipeline-Ablaufplanungsschema umfassen und das zweite Ablaufplanungsschema kann das opportunistische Schema umfassen. In einem veranschaulichenden, nicht einschränkenden Beispiel kann das Pipeline-Ablaufplanungsschema ein Standard-Betriebsschema der Datenspeichervorrichtung sein.
  • In einigen Implementierungen kann das Verfahren 600 ein Detektieren eines zweiten Auslöserereignisses, während die Datenspeichervorrichtung dazu konfiguriert ist, in dem zweiten Modus zu arbeiten, und als Antwort auf das Detektieren des zweiten Auslöserereignisses ein Konfigurieren der Datenspeichervorrichtung, um in dem ersten Modus zu arbeiten, umfassen. Das zweite Auslöserereignis kann der Speicheroperation zugeordnet sein. Beispielsweise kann das zweite Auslöserereignis einem Einplanen der Speicheroperation, einem Initiieren der Ausführung der Speicheroperation oder einem Abschließen der Ausführung der Speicheroperation als veranschaulichende, nicht einschränkende Beispiele entsprechen. In einigen Implementierungen kann das Verfahren 600 ein Einplanen einer zweiten Speicheroperation gemäß dem ersten Ablaufplanungsschema und ein Ausführen der zweiten Speicheroperation umfassen.
  • Durch Detektieren der Auslöserbedingung (z. B. eines Auslöserereignisses) kann die Datenspeichervorrichtung dynamisch von dem ersten Ablaufplanungsschema auf das zweiten Ablaufplanungsschema umschalten. Dementsprechend kann die Datenspeichervorrichtung in der Lage sein, basierend auf einer oder mehreren Betriebsbedingungen der Datenspeichervorrichtung ein bestimmtes Ablaufplanungsschema von mehreren Ablaufplanungsschemata auszuwählen. Das dynamische Umschalten zwischen den mehreren Ablaufplanungsschemata kann eine Ausführung von verschiedenen Typen von Operationen ausgleichen und kann im Vergleich zu einer Datenspeichereinrichtung, die ein einziges Ablaufplanungsschema verwendet, zu einer hohen Speicherausnutzung führen.
  • Unter Bezugnahme auf 7 ist eine spezielle veranschaulichende Ausführungsform eines Verfahrens dargestellt und allgemein mit 700 bezeichnet. Das Verfahren 700 kann in der Datenspeichervorrichtung 102 durchgeführt werden, beispielsweise durch den Scheduler 190, den Controller 120, einen Prozessor oder eine Schaltungsanordnung, die dazu ausgelegt ist, die Firmware 162 von 1 auszuführen, oder eine Kombination davon als veranschaulichende, nicht einschränkende Beispiele.
  • Das Verfahren 700 umfasst bei 702 ein Einplanen einer ersten Schreiboperation, die auf einem ersten Chip von mehreren Chips durchgeführt werden soll, wobei die erste Schreiboperation gemäß einem ersten Ablaufplanungsschema eingeplant wird. Beispielsweise kann die erste Schreiboperation die eine oder die mehreren ersten Speicheroperationen 134 von 1 enthalten oder diesen entsprechen. In einigen Implementierungen kann die erste Schreiboperation eine erste Seitenschreiboperation sein. Die mehreren Chips können die mehreren Speicherchips 103 der Datenspeichervorrichtung 102 von 1 enthalten oder diesen entsprechen. Das erste Ablaufplanungsschema kann das erste Ablaufplanungsschema 166 von 1 umfassen oder diesem entsprechen. In einigen Implementierungen kann das erste Ablaufplanungsschema ein opportunistisches Ablaufplanungsschema sein.
  • Das Verfahren 700 umfasst bei 704 zudem nach dem Einplanen der ersten Schreiboperation auf dem ersten Chip ein Bestimmen, dass eine Zählung von Schreiboperationen, die auf dem ersten Chip durchgeführt werden, eine Schwelle erfüllt, wobei die Zählung einer oder mehreren Schreiboperationen entspricht. Beispielsweise kann die Schwelle der einen oder den mehreren Schwellen 170 von 1 entsprechen oder diese enthalten. In einigen Implementierungen kann die Zählung einer oder mehreren Schreiboperationen entsprechen, die auf dem ersten Chip nach dem Durchführen einer bestimmten Speicheroperation (durchgeführt auf dem ersten Chip) durchgeführt werden. Die spezielle Speicheroperation kann als veranschaulichend, nicht einschränkende Beispiele eine Löschoperation oder eine Validierungsoperation enthalten oder diesen entsprechen. In einigen Implementierungen kann jede der Schreiboperationen eine Seitenschreiboperation sein.
  • Das Verfahren 700 umfasst zudem bei 706 ein Auswählen eines zweiten Ablaufplanungsschemas auf der Basis davon, dass die Zählung die Schwelle erfüllt. Zum Beispiel kann das zweite Ablaufplanungsschema das zweite Ablaufplanungsschema 168 von 1 umfassen oder diesem entsprechen. In einigen Implementierungen kann das zweite Ablaufplanungsschema ein Pipeline-Ablaufplanungsschema sein.
  • Das Verfahren 700 umfasst ferner bei 708 ein Einplanen eines Satzes von Operationen, die auf den mehreren Chips durchgeführt werden sollen, gemäß dem zweiten Ablaufplanungsschema. Beispielsweise kann der zweite Satz von Operationen die eine oder die mehreren zweiten Speicheroperationen 136 von 1 enthalten oder diesen entsprechen.
  • In einigen Implementierungen kann das Verfahren 700 vor dem Einplanen der ersten Schreiboperation ein Detektieren sequentieller Schreiboperationen auf der Basis von Adressen von mehreren nicht eingeplanten Operationen, die in dem Speicher ausgeführt werden sollen, umfassen. Als Antwort auf das Detektieren der sequentiellen Schreiboperationen kann das erste Ablaufplanungsschema (z. B. das opportunistische Ablaufplanungsschema) ausgewählt werden, um verwendet zu werden, um Operationen einzuplanen, die in einem Speicher, der die mehreren Chips aufweist, durchgeführt werden sollen. Beispielsweise kann der Speicher den Speicher 104 von 1 enthalten oder diesem entsprechen.
  • In einigen Implementierungen kann als Antwort auf das Durchführen der ersten Schreiboperation auf dem ersten Chip eine Zählung eines Zählers, der dem ersten Chip entspricht, aktualisiert werden. Beispielsweise kann die Zählung einer Anzahl von Schreiboperationen entsprechen und/oder diese angeben. Beispielsweise kann das Aktualisieren des Zählers ein Inkrementieren des Zählers umfassen. Wenn der Zähler als Antwort auf die Durchführung der ersten Schreiboperation inkrementiert wird, kann die Schwelle erfüllt sein, wenn die Zählung größer oder gleich der Schwelle ist. Als weiteres Beispiel kann das Aktualisieren der Zählung ein Dekrementieren des Zählers umfassen. Wenn der Zähler als Antwort auf die Durchführung der ersten Schreiboperation dekrementiert wird, kann der Schwellenwert erfüllt sein, wenn die Zählung kleiner oder gleich dem Schwellenwert ist.
  • In einigen Implementierungen kann die Datenspeichervorrichtung mehrere Zähler enthalten. Die mehreren Zähler können einen oder mehrere Zähler 172 von 1 enthalten oder diesen entsprechen. In einigen Implementierungen kann jeder Zähler der mehreren Zähler einem anderen Chip der mehreren Chips entsprechen und kann dazu ausgelegt sein, Schreiboperationen zu zählen, die auf einem entsprechenden Chip durchgeführt werden. Das Verfahren 700 kann ein Setzen jedes der mehreren Zähler auf einen Anfangswert umfassen, und zwar als Antwort darauf, dass eine bestimmte Anzahl von Schreiboperationen, die durch einen bestimmten Zähler der mehreren Zähler angegeben wird, eine Schwelle erfüllt.
  • In einigen Implementierungen kann der Satz von Operationen dann, wenn die spezielle Speicheroperation eine Löschoperation enthält, einen Satz von Löschoperationen enthalten. Nach dem Einplanen des Satzes von Löschoperationen kann das Verfahren 700 ein Detektieren eines Auslöserereignisses umfassen, das einer Durchführung des Satzes von Löschoperationen auf den mehreren Chips entspricht. Beispielsweise kann das Auslöserereignis einem Abschließen einer speziellen Löschoperation des Satzes von Löschoperationen entsprechen, der eine längste geplante Ausführungszeitspanne aufweist. Als weiteres Beispiel kann das Auslöserereignis dem Abschließen einer anfänglich eingeplanten Löschoperation des Satzes von Löschoperationen entsprechen. Das Verfahren 700 kann auch ein Wechseln von dem zweiten Ablaufplanungsschema zu dem ersten Ablaufplanungsschema basierend auf dem Detektieren des Auslöserereignisses (das einer Durchführung des Satzes von Löschoperationen entspricht) umfassen.
  • In anderen Implementierungen umfasst der Satz von Operationen dann, wenn die spezielle Speicheroperation eine Validierungsoperation (z. B. eine Verifizierungsoperation) umfasst, einen Satz von Validierungsoperationen (z. B. einen Satz von Verifizierungsoperationen). Nach dem Einplanen des Satzes von Validierungsoperationen kann das Verfahren 700 ein Detektieren eines Auslöserereignisses umfassen, das einer Durchführung des Satzes von Validierungsoperationen auf den mehreren Chips entspricht. Beispielsweise kann das Auslöserereignis einer Initiierung der Ausführung einer letzten Validierungsoperation aus dem Satz von Validierungsoperationen entsprechen. Als weiteres Beispiel kann das Auslöserereignis dem Abschließen der Ausführung einer letzten Validierungsoperation aus dem Satz von Validierungsoperationen entsprechen. Das Verfahren 700 kann zudem ein Wechseln von dem zweiten Ablaufplanungsschema zu dem ersten Ablaufplanungsschema basierend auf dem Detektieren des Auslöserereignisses (das einer Durchführung des Satzes von Validierungsoperationen entspricht) umfassen.
  • In einigen Implementierungen kann das Verfahren 700 nach dem Bestimmen, dass die Schwelle erfüllt ist, und vor dem Anwenden des zweiten Ablaufplanungsschemas ein Identifizieren einer oder mehrerer nicht eingeplanter Operationen und ein Einplanen mindestens einer Operation der einen oder der mehreren nicht eingeplanten Operationen zur Ausführung vor dem Einplanen des Satzes der Operationen (gemäß dem zweiten Ablaufplanungsschema) umfassen. Die eine oder die mehreren nicht eingeplanten Operationen können in einer in der Datenspeichervorrichtung gepflegten Warteschlange enthalten sein (z. B. gespeichert sein). Beispielsweise kann die Warteschlange die Speicheroperations-Warteschlange 195 von 1 enthalten oder dieser entsprechen. Alternativ können die eine oder die mehreren nicht eingeplanten Operationen in einer Warteschlange, die an einer Zugriffsvorrichtung gepflegt wird, die mit einer Datenspeichervorrichtung gekoppelt ist, wie z. B. einer Warteschlange, die von der Zugriffsvorrichtung 150 gepflegt wird, die mit der Datenspeichervorrichtung 102 von 1 gekoppelt ist, enthalten (z. B. gespeichert) sein.
  • In einigen Implementierungen kann das Verfahren 700 nach dem Einplanen des Satzes von Operationen ein Detektieren eines Auslöserereignisses, das einer Durchführung des Satzes von Operationen auf den mehreren Chips entspricht, umfassen. Vor dem Wechseln von dem zweiten Ablaufplanungsschema zu dem ersten Ablaufplanungsschema als Antwort auf das Detektieren des Auslöserereignisses kann das Verfahren 700 ein Bestimmen, ob ein zweiter Satz von Operationen, die in dem Speicher ausgeführt werden sollen, nicht eingeplant ist, umfassen. Der zweite Satz von Operationen kann gemäß dem zweiten Ablaufplanungsschema (vor dem Wechseln von dem zweiten Ablaufplanungsschema zu dem ersten Ablaufplanungsschema als Antwort auf das Detektieren des Auslöserereignisses) als Antwort auf das Bestimmen, dass der zweite Satz von Operationen nicht eingeplant ist, eingeplant werden. Beispielsweise kann ein Warteschlangenstatus, der Daten enthält, die angeben, ob die Zugriffsvorrichtung Operationen enthält, die in dem Speicher der Datenspeichervorrichtung (102) ausgeführt werden sollen, von einer Zugriffsvorrichtung (z. B. der Zugriffsvorrichtung 150) empfangen werden, die mit der Datenspeichervorrichtung gekoppelt ist. Der zweite Satz von Operationen kann basierend auf dem Warteschlangenstatus als nicht eingeplant bestimmt werden und kann nach dem zweiten Ablaufplanungsschema eingeplant werden.
  • Durch selektives Anwenden unterschiedlicher Ablaufplanungsschemata basierend darauf, ob die Schwelle erfüllt ist, kann eine Speicherausnutzung der Datenspeichervorrichtung verbessert werden. Zum Beispiel kann das selektive Anwenden unterschiedlicher Ablaufplanungsschemata eine Ausführung von Lese-/Schreiboperationen, die von der Zugriffsvorrichtung empfangen werden, zusammen mit Verwaltungsoperationen ausgleichen, um im Vergleich mit einer Datenspeichervorrichtung, die ein einziges Ablaufplanungsschema verwendet, zu einer hohen Speicherausnutzung zu gelangen.
  • Unter Bezugnahme auf 8 ist eine spezielle beispielhafte Ausführungsform eines Verfahrens dargestellt und allgemein mit 800 bezeichnet. Das Verfahren 800 kann in der Datenspeichervorrichtung 102 durchgeführt werden, beispielsweise durch den Scheduler 190, den Controller 120, einen Prozessor oder eine Schaltungsanordnung, die dazu ausgelegt ist, die Firmware 162 auszuführen, von 1 oder eine Kombination davon als veranschaulichende, nicht einschränkende Beispiele.
  • Das Verfahren 800 umfasst bei 802, als Antwort darauf, dass eine Zählung von Schreiboperationen, die einem ersten Chip der mehreren Chips zugeordnet sind, eine erste Schwelle erfüllt, ein Wechseln von einem ersten Ablaufplanungsschema zu einem zweiten Ablaufplanungsschema. Die mehreren Chips können die mehreren Speicherchips 103 der Datenspeichervorrichtung 102 von 1 enthalten oder diesen entsprechen. In einigen Implementierungen kann die Zählung Schreiboperationen entsprechen, die nach einer Durchführung einer bestimmten Speicheroperation(durchgeführt auf dem ersten Chip) auf dem ersten Chip durchgeführt werden. In einigen Implementierungen kann jede der Schreiboperationen eine Seitenschreiboperation sein. Das erste Ablaufplanungsschema und das zweite Ablaufplanungsschema können das erste Ablaufplanungsschema 166 bzw. das zweite Ablaufplanungsschema 168 von 1 enthalten bzw. diesen entsprechen. In einigen Implementierungen kann das erste Ablaufplanungsschema ein opportunistisches Ablaufplanungsschema sein und das zweite Ablaufplanungsschema ein Pipeline-Ablaufplanungsschema sein. In anderen Implementierungen kann das erste Ablaufplanungsschema das Pipeline-Ablaufplanungsschema sein, und das zweite Ablaufplanungsschema kann das opportunistische Ablaufplanungsschema sein.
  • Das Verfahren 800 umfasst bei 804 zudem ein Einplanen eines Satzes von Operationen, die auf den mehreren Chips durchgeführt werden sollen, gemäß dem zweiten Ablaufplanungsschema. Beispielsweise kann der zweite Satz von Operationen dem einen oder den mehreren zweiten Speicheroperationen 136 von 1 entsprechen oder diese enthalten. Wenn die spezielle Speicheroperation die Löschoperation ist, kann jede Operation des Satzes von Operationen eine Löschoperation sein. Alternativ kann dann, wenn die spezielle Speicheroperation die Validierungsoperation ist, jede Operation des Satzes von Operationen eine Validierungsoperation sein.
  • In einigen Implementierungen kann das Verfahren 800 vor dem Bestimmen, dass die Zählung die erste Schwelle erfüllt, ein Aktualisieren eines Zählers auf der Basis einer ersten Schreiboperation, die eingeplant ist, um auf dem ersten Chip ausgeführt zu werden, umfassen, um die Zählung anzugeben. Beispielsweise kann die erste Schreiboperation die eine oder die mehreren ersten Speicheroperationen 134 von 1 enthalten oder diesen entsprechen. In einigen Implementierungen kann die erste Schreiboperation eine erste Seitenschreiboperation sein. Der Zähler kann als Antwort auf ein Einplanen der ersten Schreiboperation, ein Initiieren der Ausführung der ersten Schreiboperation oder ein Abschließen der Ausführung der ersten Schreiboperation aktualisiert werden. Die spezielle Speicheroperation kann als veranschaulichende, nicht einschränkende Beispiele eine Löschoperation oder eine Validierungsoperation enthalten oder dieser entsprechen.
  • In einigen Implementierungen kann das Verfahren 800 ein Aktualisieren einer zweiten Zählung basierend auf der ersten Schreiboperation umfassen. Die zweite Zählung kann Schreiboperationen zugeordnet sein, die so eingeplant sind, dass sie auf dem ersten Chip nach einer Durchführung einer zweiten speziellen Speicheroperation ausgeführt werden. Zur Veranschaulichung kann die Zählung unter Bezugnahme auf 1 dem ersten Zähler 174 (der eine Zählung von Schreiboperationen nach einer bestimmten Löschoperation angibt) von 1 entsprechen und die zweite Zählung kann dem zweiten Zähler 176 (der eine Zählung von Schreiboperationen nach einer bestimmten Validierungsoperation angibt) von 1 entsprechen. Alternativ kann die Zählung dem zweiten Zähler 176 entsprechen und die zweite Zählung kann dem ersten Zähler 174 entsprechen. Als Antwort darauf, dass die zweite Zählung eine zweite Schwelle erfüllt, kann das Verfahren 800 umfassen: Wechseln von dem ersten Ablaufplanungsschema zu dem zweiten Ablaufplanungsschema; und Anwenden des zweiten Ablaufplanungsschemas, um einen zweiten Satz von Operationen einzuplanen, die auf den mehreren Chips durchgeführt werden sollen. Wenn beispielsweise die zweite Zählung einer Zählung von Schreiboperationen nach einer bestimmten Löschoperation entspricht (und/oder diese angibt), kann der zweite Satz von Operationen einen Satz von Löschoperationen umfassen. Als weiteres Beispiel kann der zweite Satz von Operationen dann, wenn die zweite Zählung einer Anzahl von Schreiboperationen nach einer bestimmten Validierungsoperation entspricht (und/oder diese angibt), einen Satz von Validierungsoperationen enthalten.
  • Als veranschaulichendes, nicht einschränkendes Beispiel kann die spezielle Speicheroperation eine Löschoperation umfassen und die zweite spezielle Speicheroperation kann eine Validierungsoperation umfassen. Als Antwort darauf, dass die zweite Zählung eine zweite Schwelle erfüllt, kann das Verfahren 800 ein Wechseln von dem ersten Ablaufplanungsschema zu dem zweiten Ablaufplanungsschema und ein Anwenden des zweiten Ablaufplanungsschemas, um einen zweiten Satz von Operationen einzuplanen, die auf den mehreren Chips durchgeführt werden sollen, umfassen. Bei einigen Implementierungen kann die erste Schwelle einem ersten Schwellenwert entsprechen und die zweite Schwelle einem zweiten Schwellenwert entsprechen. Der erste Schwellenwert kann größer oder gleich dem zweiten Schwellenwert sein. Alternativ kann der erste Schwellenwert kleiner als der zweite Schwellenwert sein.
  • In einigen Implementierungen kann der Satz von Speicheroperationen in einem Speicher durchgeführt werden, der die mehreren Chips enthält. Beispielsweise kann der Speicher den Speicher 104 von 1 enthalten oder diesem entsprechen. Als Antwort auf das Ausführen des Satzes von Operationen kann das Verfahren 800 ein Setzen des Zählers auf einen Anfangswert umfassen. Zur Veranschaulichung kann der Anfangswert als ein beispielhaftes, nicht einschränkendes Beispiel null (0) sein.
  • In einigen Implementierungen kann ein Auslöserereignis detektiert werden, das einer Ausführung mindestens einer Operation des Satzes von Operationen auf den mehreren Chips entspricht. Das Verfahren 800 kann ein Wechseln von dem zweiten Ablaufplanungsschema zu dem ersten Ablaufplanungsschema auf der Basis des Detektierens des Auslöserereignisses umfassen.
  • Durch Verfolgen einer Anzahl von Schreiboperationen, die auf einem bestimmten Chip durchgeführt werden, kann die Datenspeichervorrichtung eine oder mehrere Auslöserbedingungen (z. B. ein oder mehrere Auslöserereignisse) identifizieren. Als Antwort auf ein bestimmtes Auslöserereignis kann die Datenspeichervorrichtung dynamisch auf ein bestimmtes Ablaufplanungsschema von mehreren Ablaufplanungsschemata umschalten (und dieses selektiv anwenden). Das dynamische Umschalten (z. B. dynamische Auswählen) auf das bestimmte Ablaufplanungsschema kann im Vergleich zu einer Datenspeichervorrichtung, die ein einziges Ablaufplanungsschema verwendet, zu einer hohen Speicherausnutzung führen.
  • Das Verfahren 400 von 4, das Verfahren 500 von 5, das Verfahren 600 von 6, das Verfahren 700 von 7 und/oder das Verfahren 800 von 8 können durch eine anwendungsspezifische integrierte Schaltung (ASIC), eine Verarbeitungseinheit wie etwa eine zentrale Verarbeitungseinheit (CPU), einen Controller, eine andere Hardwarevorrichtung, eine Firmwarevorrichtung, eine feldprogrammierbare Gatteranordnung (FPGA) oder eine beliebige Kombination davon initiiert oder gesteuert werden. Als Beispiel können das Verfahren 400 von 4, das Verfahren 500 von 5, das Verfahren 600 von 6, das Verfahren 700 von 7 und/oder das Verfahren 800 von 8 von einem oder mehreren Prozessoren wie beispielsweise einem oder mehreren Prozessoren, die in einem Controller oder einem Speicher der Datenspeichervorrichtung 102 und/oder der Zugriffsvorrichtung 150 von 1 enthalten oder mit diesen gekoppelt sind, initiiert oder gesteuert werden. Ein Controller, der dazu ausgelegt ist, das Verfahren 400 von 4, das Verfahren 500 von 5, das Verfahren 600 von 6, das Verfahren 700 von 7 und/oder das Verfahren 800 von 8 durchzuführen, kann in der Lage sein, zwischen einem ersten Ablaufplanungsschema und einem zweiten Ablaufplanungsschema auszuwählen, um Operationen für eine Speichervorrichtung einzuplanen. Als Beispiel können eines oder mehrere der Verfahren von 48 einzeln oder in Kombination von dem Controller 120 von 1 ausgeführt werden. Beispielsweise kann ein Abschnitt eines der Verfahren von 48 mit einem zweiten Abschnitt eines der Verfahren von 48 kombiniert werden. Zusätzlich können eine oder mehrere Operationen, die unter Bezugnahme auf 48 beschrieben sind, optional sein, zumindest teilweise gleichzeitig durchgeführt werden und/oder in einer anderen Reihenfolge als gezeigt oder beschrieben durchgeführt werden.
  • In einem veranschaulichenden Beispiel kann ein Prozessor programmiert sein, um ein erstes Ablaufplanungsschema und ein zweites Ablaufplanungsschema zu verwenden, um Operationen für eine Speichervorrichtung einzuplanen. Beispielsweise kann der Prozessor Befehle ausführen, um gemäß einem ersten Ablaufplanungsschema eine erste Schreiboperation, die auf einem ersten Chip von mehreren Chips durchgeführt werden soll, einzuplanen. Der Prozessor kann ferner Befehle ausführen, um nach dem Durchführen der ersten Schreiboperation auf dem ersten Chip zu bestimmen, dass eine Zählung von Schreiboperationen, die auf dem ersten Chip durchgeführt werden, eine Schwelle erfüllt. Die Schreiboperationen können auf dem ersten Chip nach der Durchführung einer bestimmten Speicheroperation, wie beispielsweise einer Löschoperation oder einer Validierungsoperation als veranschaulichende, nicht einschränkende Beispiele, durchgeführt werden. Der Prozessor kann ferner Befehle ausführen, um basierend darauf, dass die Schwelle erfüllt ist, ein zweites Ablaufplanungsschema auszuwählen, und um einen Satz von Operationen gemäß dem zweiten Ablaufplanungsschema einzuplanen, die auf den mehreren Chips durchgeführt werden sollen.
  • In einem weiteren veranschaulichenden Beispiel kann ein Prozessor programmiert sein, um zwischen verschiedenen Ablaufplanungsschemata zu wechseln, um Operationen für eine Datenspeichervorrichtung einzuplanen. Beispielsweise kann der Prozessor Befehle ausführen, um die Zählung als Antwort auf eine erste Schreiboperation, die auf einem ersten Chip von mehreren Chips durchgeführt wird, zu aktualisieren. Die Zählung kann einer Zählung von Schreiboperationen zugeordnet sein, die auf dem ersten Chip nach der Durchführung einer bestimmten Speicheroperation, wie beispielsweise einer Löschoperation oder einer Validierungsoperation als veranschaulichende, nicht einschränkende Beispiele, durchgeführt werden. Der Prozessor kann ferner Befehle ausführen, um als Antwort darauf, dass die Zählung eine Schwelle erfüllt, von einem ersten Ablaufplanungsschema zu einem zweiten Ablaufplanungsschema zu wechseln. Der Prozessor kann ferner Befehle ausführen, um das zweite Ablaufplanungsschema anzuwenden, um einen Satz von Operationen einzuplanen, die auf den mehreren Chips durchgeführt werden sollen.
  • Obwohl verschiedene Komponenten der Datenspeichervorrichtung 102 und/oder der Zugriffsvorrichtung 150 von 1 hier als Blockkomponenten dargestellt und allgemein beschrieben sind, können diese Komponenten einen oder mehrere Mikroprozessoren, Zustandsmaschinen oder andere Schaltungen umfassen, die dazu ausgelegt sind, zu ermöglichen, dass die verschiedenen Komponenten hier beschriebene Operationen durchführen. Ein oder mehrere Aspekte der verschiedenen Komponenten können unter Verwendung eines Mikroprozessors oder eines Mikrocontrollers implementiert werden, der dazu programmiert ist, die hier beschriebenen Operationen wie beispielsweise eine oder mehrere Operationen des Verfahrens 400 von 4, des Verfahrens 500 von 5, des Verfahrens 600 von 6, des Verfahrens 700 von 7 und/oder des Verfahrens 800 von 8 auszuführen. In einer bestimmten Implementierung können der Controller 120, der Speicher 104, der zweite Speicher 160 und/oder die Zugriffsvorrichtung 150 von 1 jeweils einen Prozessor enthalten, der Befehle ausführt, die in einem Speicher wie beispielsweise einem nichtflüchtigen Speicher der Datenspeichervorrichtung 102 oder der Zugriffsvorrichtung 150 von 1 gespeichert sind. Alternativ oder zusätzlich können ausführbare Befehle, die durch den Prozessor ausgeführt werden, an einer separaten Speicherstelle gespeichert sein, die nicht Teil des nichtflüchtigen Speichers ist, wie beispielsweise in einem Nur-Lese-Speicher (ROM) der Datenspeichervorrichtung 102 oder der Zugangsvorrichtung 150 von 1.
  • In Verbindung mit einem oder mehreren der beschriebenen Aspekte von 1 bis 8 enthält eine Vorrichtung Mittel zum Speichern von Daten in einem Speicher. Zum Beispiel können die Mittel zum Speichern von Daten den Speicher 104 oder die Speicherchips 103 von 1, eine oder mehrere andere Strukturen, Vorrichtungen, Schaltungen oder irgendeine Kombination davon enthalten oder diesen entsprechen. Die Vorrichtung kann ferner Mittel zum Steuern der Mittel zum Speichern von Daten enthalten. Zum Beispiel können die Mittel zum Steuern den Controller 120, den Auslöserdetektor 180, den Scheduler 190, den Schemaselektor 191, das Modusregister 192 von 1, eine oder mehrere andere Strukturen, Vorrichtungen, Schaltungen, Module oder Befehle zum Steuern der Mittel zum Speichern von Daten oder irgendeine Kombination davon enthalten oder diesen entsprechen.
  • Unter Bezugnahme auf 1 kann die Datenspeichervorrichtung 102 an einer oder mehreren Zugangsvorrichtungen, wie etwa innerhalb eines Gehäuses einer Kommunikationsvorrichtung (z. B. der Zugangsvorrichtung 150), angebracht oder darin eingebettet sein. Beispielsweise kann die Datenspeichervorrichtung 102 in einer Einrichtung wie etwa einem Mobiltelefon, einem Computer (z. B. einem Laptop, einem Tablet oder einem Notebook-Computer), einem Musikabspieler, einem Videoabspieler, einer Spielvorrichtung oder Konsole, einem elektronischen Buchleser, einem persönlichen digitalen Assistenten (PDA), einer tragbaren Navigationsvorrichtung oder einer anderen Vorrichtung, die einen nichtflüchtigen Speicher verwendet, integriert sein. In anderen Ausführungsformen kann die Datenspeichervorrichtung 102 jedoch in einer tragbaren Vorrichtung implementiert sein, die dazu ausgelegt ist, selektiv mit einer oder mehreren externen Zugriffsvorrichtungen gekoppelt zu werden. In nochmals anderen Ausführungsformen kann die Datenspeichervorrichtung 102 eine Komponente (z. B. ein Festkörperlaufwerk (SSD)) eines netzzugänglichen Datenspeichersystems wie beispielsweise eines Unternehmensdatensystem, eines netzgebundenen Speichersystems, eines Cloud-Datenspeichersystems usw. sein.
  • Zur weiteren Veranschaulichung kann die Datenspeichervorrichtung 102 so ausgelegt sein, dass sie mit der Zugangsvorrichtung 150 als eingebetteter Speicher gekoppelt ist, beispielsweise in Verbindung mit einer eingebetteten MultiMedia-Karte (eMMC®-Konfiguration) (Warenzeichen der JEDEC Solid State Technology Association, Arlington, Virginia) als veranschaulichendes Beispiel. Die Datenspeichervorrichtung 102 kann einer eMMC-Vorrichtung entsprechen. Als ein weiteres Beispiel kann die Datenspeichervorrichtung 102 einer Speicherkarte entsprechen, wie etwa einer SD®-Karte, einer microSD®-Karte, einer miniSDTM-Karte (Warenzeichen von SD-3C LLC, Wilmington, Delaware), einer MultiMediaCardTM (MMCTM-Karte) (Markenzeichen der JEDEC Solid State Technology Association, Arlington, Virginia) oder einer CompactFlash®-Karte (CF-Karte) (Warenzeichen der SanDisk Corporation, Milpitas, Kalifornien). Die Datenspeichervorrichtung 102 kann gemäß einer JEDEC-Industriespezifikation arbeiten. Zum Beispiel kann die Datenspeichervorrichtung 102 gemäß einer JEDEC-eMMC-Spezifikation, einer JEDEC-UFS-Spezifikation, einer oder mehreren anderen Spezifikationen oder einer Kombination davon arbeiten. In noch einer anderen besonderen Ausführungsform ist die Datenspeichervorrichtung 102 indirekt mit der Zugangsvorrichtung 150 gekoppelt, z. B. über ein Netz. Zum Beispiel kann die Datenspeichervorrichtung 102 eine netzangebundene Speichervorrichtung (NAS-Vorrichtung) oder eine Komponente (z. B. eine Festkörperlaufwerk-Vorrichtung (SSD-Vorrichtung)) eines Datenzentrumspeichersystems, eines Unternehmensspeichersystems oder eines Speicherbereichsnetzes sein.
  • Der Speicher 104 und/oder der zweite Speicher 160 von 1 kann einen resistiven Direktzugriffsspeicher (ReRAM), einen dreidimensionalen Speicher (3D-Speicher), einen Flash-Speicher (z. B. einen NAND-Speicher, einen NOR-Speicher, einen Einniveau-Zellen-Flash-Speicher (SLC-Flash-Speicher), einen NOR-Speicher mit geteilter Bitleitung (DINOR-Speicher), einen AND-Speicher, eine Vorrichtung mit hoher kapazitiver Kopplungsrate (HiCR-Vorrichtung), eine Vorrichtung mit asymmetrischem kontaktlosen Transistor (ACT-Vorrichtung) oder ein anderer Flash-Speicher), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM), einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einen Nur-Lese-Speicher (ROM), einen einmalig programmierbaren Speicher (OTP) oder eine Kombination davon enthalten. Alternativ oder zusätzlich kann der Speicher 104 und/oder der zweite Speicher 160 eine andere Art von Speicher enthalten. Der Speicher 104 und/oder der zweite Speicher 160 von 1 kann eine Halbleiterspeichervorrichtung enthalten.
  • Halbleiterspeichervorrichtungen umfassen flüchtige Speichervorrichtungen wie dynamische Direktzugriffsspeichervorrichtungen ("DRAM"-Vorrichtungen) oder statische Direktzugriffsspeichervorrichtungen ("SRAM"-Vorrichtungen), nichtflüchtige Speichervorrichtungen wie magnetoresistiven Direktzugriffsspeicher ("MRAM"), resistivem Direktzugriffsspeicher ("ReRAM"), elektrisch löschbaren programmierbaren Nur-Lese-Speicher ("EEPROM"), Flash-Speicher (der auch als Untergruppe von EEPROM betrachtet werden kann), ferroelektrischen Direktzugriffsspeicher ("FRAM") und andere Halbleiterelemente, die fähig sind, Informationen zu speichern. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen haben. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder einer NOR-Konfiguration konfiguriert sein.
  • Die Speichervorrichtungen können in beliebigen Kombinationen aus passiven und/oder aktiven Elementen ausgebildet sein. Als nicht einschränkendes Beispiel enthalten passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente, die in einigen Ausführungsformen ein Widerstandsschaltspeicherelement wie z. B. ein Anti-Sicherung, ein Phasenänderungsmaterial usw. und optional ein Steuerelement, wie z. B. eine Diode usw. Als nicht einschränkendes Beispiel enthalten aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente, die in einigen Ausführungsformen Elemente enthalten, die einen Ladungsspeicherbereich wie beispielsweise ein Floating-Gate, leitfähige Nanopartikel oder eine dielektrisches Ladungsspeichermaterial enthalten.
  • Mehrere Speicherelemente können so, dass sie in Reihe geschaltet sind, oder so, dass jedes Element einzeln zugänglich ist, ausgelegt sein. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) typischerweise Speicherelemente, die in Reihe geschaltet sind. Ein NAND-Speicherarray kann so konfiguriert sein, dass das Array aus mehreren Speichersträngen besteht, in denen ein Strang aus mehreren Speicherelementen besteht, die sich eine einzige Bitleitung teilen und auf die als Gruppe zugegriffen wird. Alternativ können Speicherelemente so konfiguriert sein, dass jedes Element einzeln zugänglich ist, wie z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft und Speicherelemente können anders konfiguriert sein.
  • Die innerhalb und/oder über einem Substrat befindlichen Halbleiterspeicherelemente können in zwei oder drei Dimensionen angeordnet sein, beispielsweise in einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur. In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Typischerweise sind Speicherelemente in einer zweidimensionalen Speicherstruktur in einer Ebene (z. B. in einer x-z-Richtungsebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats, das die Speicherelemente trägt, erstreckt. Das Substrat kann ein Wafer sein, auf dem die Schicht der Speicherelemente ausgebildet ist, oder es kann ein Trägersubstrat sein, das an die Speicherelemente angebracht wird, nachdem sie ausgebildet sind. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie etwa Silicium enthalten.
  • Die Speicherelemente können in einer einzelnen Speichervorrichtungsebene in einer geordneten Anordnung angeordnet sein, beispielsweise in mehreren Zeilen und/oder Spalten. Die Speicherelemente können jedoch in nicht-regulären oder nicht-orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen wie beispielsweise Bitleitungen und Wortleitungen aufweisen.
  • Eine dreidimensionale Speicheranordnung ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen einnehmen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wobei die y-Richtung im Wesentlichen senkrecht ist und die x- und z-Richtung im Wesentlichen parallel zu der Hauptoberfläche des Substrats sind). Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann eine dreidimensionale Speicheranordnung als mehrere vertikale Spalten (z. B. Spalten, die sich im Wesentlichen senkrecht zu der Hauptoberfläche des Substrats, d. h. in der y-Richtung, erstrecken) angeordnet sein, wobei jede Spalte mehrere Speicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration, z. B. in einer x-z-Ebene, angeordnet sein, was zu einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen führt. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
  • Als nicht einschränkendes Beispiel können die Speicherelemente in einem dreidimensionalen NAND-Speicherarray miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-z-) Speichervorrichtungsebene zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die sich über mehrere horizontale Speichervorrichtungsebenen hinweg erstreckt. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch in einer NOR-Konfiguration und in einer ReRAM-Konfiguration ausgebildet sein.
  • Typischerweise sind in einem monolithischen dreidimensionalen Speicherarray ein oder mehrere Speichervorrichtungsebenen über einem einzigen Substrat ausgebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten zumindest teilweise innerhalb des einzelnen Substrats aufweisen. Als nicht einschränkendes Beispiel kann das Substrat ein Halbleitermaterial wie etwa Silicium enthalten. In einem monolithischen dreidimensionalen Array werden die Schichten, die jede Speichervorrichtungsebene des Arrays bilden, typischerweise auf den Schichten der darunterliegenden Speichervorrichtungsebenen des Arrays ausgebildet. Jedoch können Schichten benachbarter Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder zwischen Speichervorrichtungsebenen liegende Schichten aufweisen.
  • Alternativ können zweidimensionale Arrays separat ausgebildet und dann zusammengepackt werden, um eine nicht-monolithische Speichervorrichtung mit mehreren Schichten von Speicher zu bilden. Beispielsweise können nicht-monolithische gestapelte Speicher durch Bilden von Speicherebenen auf getrennten Substraten und anschließendes Stapeln der Speicherebenen übereinander aufgebaut werden. Die Substrate können vor dem Stapeln ausgedünnt oder aus den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über getrennten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Ferner können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf getrennten Chips ausgebildet und dann zusammengepackt werden, um eine Stapel-Chip-Speichervorrichtung zu bilden.
  • Zugehörige Schaltungen werden typischerweise zum Betreiben der Speicherelemente und zur Kommunikation mit den Speicherelementen verwendet. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen wie z. B. Programmieren und Lesen zu erreichen. Diese zugeordneten Schaltungen können auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat liegen. Zum Beispiel kann ein Controller für Speicher-Lese-Schreib-Operationen auf einem separaten Controller-Chip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • Fachleute werden erkennen, dass diese Offenbarung nicht auf die beschriebenen zweidimensionalen und dreidimensionalen veranschaulichenden Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen innerhalb des Schutzumfangs der Offenbarung abdeckt, wie es hierin beschrieben und von Fachleuten auf dem Gebiet verstanden wird. Die Darstellungen der hierin beschriebenen Ausführungsformen sollen ein allgemeines Verständnis der verschiedenen Ausführungsformen bereitstellen. Andere Ausführungsformen können verwendet und von der Offenbarung abgeleitet werden, so dass strukturelle und logische Ersetzungen und Änderungen vorgenommen werden können, ohne vom Umfang der Offenbarung abzuweichen. Diese Offenbarung soll alle nachfolgenden Anpassungen oder Variationen verschiedener Ausführungsformen abdecken. Fachleute auf dem Gebiet werden erkennen, dass solche Abwandlungen innerhalb des Umfangs der vorliegenden Offenbarung liegen.
  • Der oben offenbarte Gegenstand ist als veranschaulichend und nicht als einschränkend anzusehen und die beigefügten Ansprüche sollen alle Abwandlungen, Erweiterungen und anderen Ausführungsformen abdecken, die in den Umfang der vorliegenden Offenbarung fallen. Der Umfang der vorliegenden Offenbarung wird daher im größtmöglichen gesetzlich zulässigen Umfang durch die breitest mögliche Interpretation der folgenden Ansprüche und ihrer Äquivalente bestimmt und nicht durch die vorstehende ausführliche Beschreibung eingeschränkt oder begrenzt.

Claims (20)

  1. Verfahren, das Folgendes umfasst: in einer Datenspeichervorrichtung, die einen Speicher enthält, wobei der Speicher mehrere Chips enthält, Durchführen des Folgenden: Konfigurieren der Datenspeichervorrichtung zur Verwendung eines ersten Ablaufplanungsschemas; als Antwort auf das Detektieren eines Auslöserereignisses, Konfigurieren der Datenspeichervorrichtung, um ein zweites Ablaufplanungsschema zu verwenden, wobei eines des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas verwendet wird, um eine Durchführung von Speicheroperationen mit dem gleichen Operationstyp auf den mehreren Chips einzuplanen, und wobei das andere des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas verwendet wird, um Speicheroperationen opportunistisch einzuplanen; Einplanen einer Speicheroperation gemäß dem zweiten Ablaufplanungsschema; und Ausführen der Speicheroperation.
  2. Verfahren nach Anspruch 1, wobei das erste Ablaufplanungsschema einem opportunistischen Ablaufplanungsschema entspricht und wobei das zweite Ablaufplanungsschema einem Pipeline-Ablaufplanungsschema entspricht.
  3. Verfahren nach Anspruch 1, wobei das erste Ablaufplanungsschema einem Pipeline-Ablaufplanungsschema entspricht und wobei das zweite Ablaufplanungsschema einem opportunistischen Ablaufplanungsschema entspricht.
  4. Verfahren nach Anspruch 1, wobei das Auslöserereignis einer Löschoperation zugeordnet ist.
  5. Verfahren nach Anspruch 1, wobei das Auslöserereignis einer Validierungsoperation zugeordnet ist.
  6. Verfahren nach Anspruch 1, das ferner ein Detektieren des Auslöseereignisses basierend auf einer Zählung von Schreiboperationen umfasst.
  7. Verfahren nach Anspruch 1, das ferner ein Detektieren des Auslöserereignisses basierend auf einem Schreiben einer letzten Seite in einem Block eines Chips von den mehreren Chips umfasst.
  8. Verfahren nach Anspruch 1, das ferner umfasst: Detektieren eines zweiten Auslöserereignisses, während die Datenspeichervorrichtung dazu konfiguriert ist, das zweite Ablaufplanungsschema zu verwenden; und als Antwort auf das Detektieren des zweiten Auslöserereignisses, Konfigurieren der Datenspeichervorrichtung, um das erste Ablaufplanungsschema zu verwenden.
  9. Verfahren nach Anspruch 8, wobei das zweite Auslöserereignis der Speicheroperation zugeordnet ist.
  10. Verfahren nach Anspruch 9, wobei das zweite Auslöserereignis einem Einplanen der Speicheroperation, einem Initiieren einer Ausführung der Speicheroperation oder einem Abschließen der Ausführung der Speicheroperation entspricht.
  11. Verfahren nach Anspruch 8, das als Antwort auf das Detektieren des zweiten Auslöserereignisses ferner umfasst: Einplanen einer zweiten Speicheroperation gemäß dem ersten Ablaufplanungsschema; und Ausführen der zweiten Speicheroperation.
  12. Datenspeichervorrichtung, die Folgendes enthält: einen Speicher, der mehrere Chips enthält; und einen Controller, der mit dem Speicher gekoppelt ist, wobei der Controller dazu ausgelegt ist, ein erstes Ablaufplanungsschema auszuwählen und als Antwort auf ein Detektieren eines Auslöserereignisses von dem ersten Ablaufplanungsschema zu einem zweiten Ablaufplanungsschema zu wechseln, wobei eines des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas verwendet wird, um eine Durchführung von Speicheroperationen mit dem gleichen Operationstyp auf den mehreren Chips einzuplanen, und wobei das andere des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas verwendet wird, um Speicheroperationen opportunistisch einzuplanen, wobei der Controller ferner dazu ausgelegt ist, eine Speicheroperation gemäß dem zweiten Ablaufplanungsschema einzuplanen und eine Ausführung der Speicheroperation zu initiieren.
  13. Datenspeichervorrichtung nach Anspruch 12, wobei das erste Ablaufplanungsschema einem opportunistischen Ablaufplanungsschema entspricht und wobei das zweite Ablaufplanungsschema einem Pipeline-Ablaufplanungsschema entspricht.
  14. Datenspeichervorrichtung nach Anspruch 13, wobei das erste Ablaufplanungsschema ein Standard-Ablaufplanungsschema der Datenspeichervorrichtung ist.
  15. Datenspeichervorrichtung nach Anspruch 13, wobei das zweite Ablaufplanungsschema ein Standard-Ablaufplanungsschema der Datenspeichervorrichtung ist.
  16. Datenspeichervorrichtung nach Anspruch 12, wobei das erste Ablaufplanungsschema einem Pipeline-Ablaufplanungsschema entspricht und wobei das zweite Ablaufplanungsschema einem opportunistischen Ablaufplanungsschema entspricht.
  17. Datenspeichervorrichtung nach Anspruch 16, wobei das erste Ablaufplanungsschema ein Standard-Ablaufplanungsschema der Datenspeichervorrichtung ist.
  18. Einrichtung, die Folgendes enthält: ein Mittel zum Speichern von Daten in einem Speicher, wobei der Speicher mehrere Chips enthält; und ein Mittel zum Steuern des Mittels zum Speichern, wobei das Mittel zum Steuern dazu ausgelegt ist, ein erstes Ablaufplanungsschema auszuwählen und als Antwort auf ein Detektieren eines Auslöserereignisses von dem ersten Ablaufplanungsschema zu einem zweiten Ablaufplanungsschema zu wechseln, wobei eines des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas verwendet wird, um eine Durchführung von Speicheroperationen mit dem gleichen Operationstyp auf den mehreren Chips einzuplanen, und wobei das andere des ersten Ablaufplanungsschemas und des zweiten Ablaufplanungsschemas verwendet wird, um Speicheroperationen opportunistisch einzuplanen, wobei das Mittel zum Steuern ferner dazu ausgelegt ist, eine Speicheroperation gemäß dem zweiten Ablaufplanungsschema einzuplanen und eine Ausführung der Speicheroperation zu initiieren.
  19. Einrichtung nach Anspruch 18, wobei das erste Ablaufplanungsschema ein opportunistisches Ablaufplanungsschema umfasst und wobei das zweite Planungsschema ein Pipeline-Ablaufplanungsschema umfasst.
  20. Einrichtung nach Anspruch 18, wobei das erste Ablaufplanungsschema ein Pipeline-Ablaufplanungsschema umfasst und wobei das zweite Ablaufplanungsschema ein opportunistisches Ablaufplanungsschema umfasst.
DE112016000696.9T 2015-06-05 2016-06-03 Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung Active DE112016000696B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562171857P 2015-06-05 2015-06-05
US62/171,857 2015-06-05
US14/749,498 US10289327B2 (en) 2015-06-05 2015-06-24 Scheduling scheme(s) for a multi-die storage device
US14/749,498 2015-06-24
PCT/US2016/035783 WO2016196971A1 (en) 2015-06-05 2016-06-03 Scheduling scheme / schemes for a multi-die storage device

Publications (2)

Publication Number Publication Date
DE112016000696T5 true DE112016000696T5 (de) 2017-12-07
DE112016000696B4 DE112016000696B4 (de) 2023-02-23

Family

ID=56148678

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016000696.9T Active DE112016000696B4 (de) 2015-06-05 2016-06-03 Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung

Country Status (4)

Country Link
US (1) US10289327B2 (de)
CN (1) CN107980126B (de)
DE (1) DE112016000696B4 (de)
WO (1) WO2016196971A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170007958A (ko) * 2015-07-13 2017-01-23 에스케이하이닉스 주식회사 메모리 시스템
US10740042B2 (en) * 2016-12-30 2020-08-11 Western Digital Technologies, Inc. Scheduling access commands for data storage devices
US10635352B2 (en) * 2018-05-10 2020-04-28 Western Digital Technologies, Inc. Distributed flash interface module processing
US11011215B1 (en) * 2019-12-19 2021-05-18 Micron Technology, Inc. Apparatus with an internal-operation management mechanism
US11907573B2 (en) * 2021-06-21 2024-02-20 Western Digital Technologies, Inc. Performing background operations during host read in solid state memory device
US11797228B2 (en) 2021-06-24 2023-10-24 Western Digital Technologies, Inc. Efficient handling of background operations for improving sustained performance of host reads and writes

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0971361B1 (de) 1998-06-23 2003-12-10 SanDisk Corporation Hochdatenrateschreibverfahren für nicht-flüchtige FLASH-Speicher
US7093094B2 (en) * 2001-08-09 2006-08-15 Mobilygen Corporation Random access memory controller with out of order execution
JP4129381B2 (ja) 2002-09-25 2008-08-06 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7395404B2 (en) 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7280398B1 (en) 2006-08-31 2007-10-09 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US8364918B1 (en) 2007-04-06 2013-01-29 Marvell International Ltd. Sensed opportunistic garbage collection in memory components
US20090006720A1 (en) * 2007-06-27 2009-01-01 Shai Traister Scheduling phased garbage collection and house keeping operations in a flash memory system
EP2286412A1 (de) * 2007-12-21 2011-02-23 Rambus Inc. Flash-speicher-timing-vorcharakterisierung zur verwendung beim ormal-betrieb
US8775717B2 (en) 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
CN101587461B (zh) * 2008-05-20 2012-03-07 上海奇码数字信息有限公司 存储器访问调度装置、调度方法与存储器访问控制***
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8634240B2 (en) 2009-10-28 2014-01-21 SanDisk Technologies, Inc. Non-volatile memory and method with accelerated post-write read to manage errors
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US8966208B2 (en) * 2010-02-25 2015-02-24 Conversant Ip Management Inc. Semiconductor memory device with plural memory die and controller die
EP2367385B1 (de) * 2010-03-19 2012-05-16 Telefonaktiebolaget L M Ericsson (publ) Technik zur automatischen Verstärkungskontrolle in einem Mehrträger-Kommunikationssystem
CN102279802A (zh) * 2010-06-13 2011-12-14 中兴通讯股份有限公司 提高同步动态随机存储控制器的读操作效率的方法和装置
US8555095B2 (en) 2010-07-26 2013-10-08 Apple Inc. Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption
US8589655B2 (en) * 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US8589625B2 (en) * 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US8819328B2 (en) 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
TWI446345B (zh) 2010-12-31 2014-07-21 Silicon Motion Inc 用來進行區塊管理之方法以及記憶裝置及控制器
US8918595B2 (en) * 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
KR101785007B1 (ko) * 2011-06-14 2017-11-07 삼성전자주식회사 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 온-칩 버퍼 프로그램 방법
TWI479491B (zh) * 2011-07-05 2015-04-01 Phison Electronics Corp 記憶體控制方法、記憶體控制器與記憶體儲存裝置
US8726104B2 (en) 2011-07-28 2014-05-13 Sandisk Technologies Inc. Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages
US8954816B2 (en) 2011-11-28 2015-02-10 Sandisk Technologies Inc. Error correction coding (ECC) decode operation scheduling
US9075712B2 (en) 2011-11-30 2015-07-07 International Business Machines Corporation Scheduling requests in a solid state memory device
US9355929B2 (en) 2012-04-25 2016-05-31 Sandisk Technologies Inc. Data storage based upon temperature considerations
US8566671B1 (en) 2012-06-29 2013-10-22 Sandisk Technologies Inc. Configurable accelerated post-write read to manage errors
US9431064B2 (en) * 2012-11-02 2016-08-30 Taiwan Semiconductor Manufacturing Company, Ltd. Memory circuit and cache circuit configuration
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9032165B1 (en) * 2013-04-30 2015-05-12 Amazon Technologies, Inc. Systems and methods for scheduling write requests for a solid state storage device
US9218283B2 (en) * 2013-12-02 2015-12-22 Sandisk Technologies Inc. Multi-die write management
US9772777B2 (en) * 2015-04-27 2017-09-26 Southwest Research Institute Systems and methods for improved access to flash memory devices

Also Published As

Publication number Publication date
DE112016000696B4 (de) 2023-02-23
CN107980126A (zh) 2018-05-01
WO2016196971A1 (en) 2016-12-08
US20160357471A1 (en) 2016-12-08
US10289327B2 (en) 2019-05-14
CN107980126B (zh) 2021-10-15

Similar Documents

Publication Publication Date Title
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE102017120960B4 (de) Mehrkanal-Speicheroperationen auf der Grundlage von Bitfehlerraten
US9875053B2 (en) Scheduling scheme(s) for a multi-die storage device
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102017112013B4 (de) Adaptive Temperatur- und Speicherparameterdrosselung
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112016004148T5 (de) Systeme und Verfahren zur Befehlsautorisierung
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE112018000233T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
US10534709B2 (en) Flush command consolidation
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE112016002631B4 (de) Speicherfunktionszustandsüberwachung
DE112016004629T5 (de) Datencodiertechniken für eine Vorrichtung
DE102019116213A1 (de) Qualität von für Enterprise-Halbleiterlaufwerke optimierten dienstbasierten Arbitrierungen
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
US20160147671A1 (en) Systems and methods of write cache flushing
US9812209B2 (en) System and method for memory integrated circuit chip write abort indication
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112015003147T5 (de) Selektive Leseverstärkeraktivierung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112018000839T5 (de) Datenspeichervorrichtung, die eingerichtet ist, um Vorgänge unter Verwendung einer drahtlosen Schnittstelle durchzuführen
DE112019000161T5 (de) Speicher-cache-verwaltung

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final