DE102020116362B3 - Dynamische zuweisung von unterblöcken - Google Patents

Dynamische zuweisung von unterblöcken Download PDF

Info

Publication number
DE102020116362B3
DE102020116362B3 DE102020116362.2A DE102020116362A DE102020116362B3 DE 102020116362 B3 DE102020116362 B3 DE 102020116362B3 DE 102020116362 A DE102020116362 A DE 102020116362A DE 102020116362 B3 DE102020116362 B3 DE 102020116362B3
Authority
DE
Germany
Prior art keywords
block
memory
sub
data
write commands
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102020116362.2A
Other languages
English (en)
Inventor
Shivam Mishra
Hitesh Golechchha
Shakti Bhatnagar
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Application granted granted Critical
Publication of DE102020116362B3 publication Critical patent/DE102020116362B3/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

Ein System, eine Einrichtung und ein Verfahren zur dynamischen Zuweisung von Unterblöcken. Zuerst empfängt ein nichtflüchtiges Speicherarray einen Satz von Schreibbefehlen. Das nichtflüchtige Speicherarray weist mehrere Speicher-Dies auf, die in Metablöcken organisiert sind. Die Metablöcke sind so eingerichtet, dass sie zwei oder mehr Speicher-Dies überspannen. Ein Stromverwalter bestimmt einen Workload-Typ für den Satz von Schreibbefehlen. Ein Blockzuweisungsverwalter wählt einen Zielspeicherblock aus, um den Satz von Schreibbefehlen basierend auf dem Workload-Typ zu empfangen. Der ausgewählte Zielspeicherblock ist eingerichtet, um Datenblöcke für den Workload-Typ zu empfangen, und der Blockzuweisungsverwalter leitet den Satz von Schreibbefehlen an den Zielspeicherblock.

Description

  • HINTERGRUND
  • Im Zuge der fortschreitenden Weiterentwicklung dreidimensionaler NAND-Speicherarrays nimmt die Anzahl der Wortleitungen innerhalb jeder NAND-Kette mit jeder Generation zu. Beispielsweise kann ein konventionelles Speicherarray Daten auf vierundsechzig Wortleitungen speichern, während zukünftige Speichertechnologien möglicherweise sechsundneunzig Wortleitungen zur Datenspeicherung aufweisen. Diese Zunahme der Anzahl an Wortleitungen führt zu einer größeren Speicherblockgröße. Bei Speicher-Dies, die die gleiche Kapazität aufweisen, kann die Anzahl der Speicherblöcke reduziert werden, was auf Systemebene eine Herausforderung darstellt. Das Konzept eines zweistufigen Speicherlochs kann so umgesetzt werden, dass die Anzahl der Wortleitungen etwa verdoppelt werden kann. In dieser Konfiguration kann eine Fertigungsfuge zwischen zwei Stufen von Speicherschichten innerhalb eines Speicher-Dies eingerichtet werden.
  • In einer Konfiguration mit mehreren Speicher-Dies kann ein Speicherblock (auch als Metablöcke bezeichnet) durch die Erweiterung der Anzahl der Speicherzellenschichten auf beiden Seiten der Fertigungsfuge im Vergleich zu herkömmlichen Konfigurationen sehr groß werden. Größere Metablöcke können zu einer Reihe von Problemen und Einschränkungen im Zusammenhang mit der Speicherausbeute, der Verwaltung fehlerhafter Blöcke und der Behandlung von Blockausfällen führen, da mit jedem Ausfall ein größerer Kapazitätsverlust auftritt. Daher ist eine Lösung für die Entwicklung und Handhabung größerer physischer und damit größerer logischer Speicherabteilungen/Metablöcke erforderlich.
  • US 8,316,177 B2 betrifft ein Speichersystem und Speicherverfahren, wobei in einem nichtflüchtigen Speicher in Abhängigkeit von der Menge zu schreibender Daten die Daten in einen teilweise beschriebenen Block oder in einen gelöschten Block geschrieben werden.
  • KURZDARSTELLUNG
  • Bereitgestellt werden ein Verfahren, eine Einrichtung und eine System mit den Merkmalen der unabhängigen Ansprüche; abhängige Ansprüche betreffen bevorzugte Ausführungsformen.
  • Diese Offenbarung bezieht sich auf ein Verfahren zur dynamischen Zuweisung von Unterblöcken. Zuerst wird ein Satz von Schreibbefehlen von einem nichtflüchtigen Speicherarray empfangen. Das nichtflüchtige Speicherarray weist mehrere Speicher-Dies auf, die in Metablöcken organisiert sind. Die Metablöcke sind so eingerichtet, dass sie zwei oder mehr Speicher-Dies überspannen. Ein Workload-Typ wird für den Satz von Schreibbefehlen bestimmt. Ein Zielspeicherblock wird ausgewählt, um den auf dem Workload-Typ basierenden Satz von Schreibbefehlen zu empfangen. Der ausgewählte Zielspeicherblock wird eingerichtet, um Datenblöcke für den Workload-Typ zu empfangen, und der Satz von Schreibbefehlen wird an den Zielspeicherblock geleitet.
  • Diese Offenbarung bezieht sich ferner auf eine Vorrichtung, die eine Stromverwaltungsschaltung, eine Metablock-Verwaltungsschaltung, eine Modusschaltung, eine Verfolgungsschaltung und eine Lese-/Schreibschaltung umfasst. Die Stromverwaltungsschaltung ist so eingerichtet, dass sie Schreibbefehle überwacht und bestimmt, dass ein Satz von Schreibbefehlen mit einem sequenziellen Workload-Typ korreliert. Die Metablock-Verwaltungsschaltung ist so eingerichtet, dass sie einen freien Metablock zum Empfang von Daten für den Satz von Schreibbefehlen bestimmt und den freien Metablock im Vollblockmodus löscht. Die Modusschaltung ist so eingerichtet, dass sie einen Vollblockmodus-Befehl an mehrere Speicher-Dies sendet, die einen Abschnitt des freien Metablocks einschließen. Die Speicher-Dies sind parallel an einen Schnittstellenbus gekoppelt. Die Verfolgungsschaltung ist eingerichtet, um den freien Metablock mit einem Paar von Schwester-Unterblöcken auf jedem der Speicher-Dies zu verknüpfen. Die Lese-/Schreibschaltung ist so eingerichtet, dass sie Daten im Vollblockmodus in den freien Metablock schreibt, wenn der Satz von Schreibbefehlen dem sequenziellen Workload-Typ entspricht.
  • Schließlich bezieht sich diese Offenbarung auf ein System, das ein nichtflüchtiges Speicherarray, einen Satz logischer Löschblöcke, eine Schreibdatenpipeline, einen Stromverwalter, einen Blockzuweisungsverwalter und einen Verwalter offener Blöcke umfasst. Das nichtflüchtige Speicherarray weist mehrere Speicher-Dies auf, die in mindestens einer Zeile und zwei oder mehr Spalten organisiert sind. Die logischen Löschblöcke weisen einen physischen Löschblock von jedem Speicher-Die einer Zeile des nichtflüchtigen Speicherarrays auf, und jeder physische Löschblock weist zwei Schwester-Unterblöcke auf.
  • „Physischer Löschblock“ nimmt Bezug auf einen Satz physischer Seiten, die eingerichtet sind, um in einem einzigen Löschvorgang gelöscht zu werden. In bestimmten Ausführungsformen kann ein physischer Löschblock ferner in zwei oder mehr Unterblöcke unterteilt sein. In einer solchen Ausführungsform kann jeder Unterblock unabhängig von anderen Unterblöcken löschbar sein, die Teil desselben physischen Löschblocks sind. Eine Sammlung von physischen Löschblöcken kann verwendet werden, um einen logischen Löschblock zu bilden.
  • Die Schreibdatenpipeline ist eingerichtet, um Schreibbefehle zu empfangen und Daten in einen der logischen Löschblöcke im Unterblockmodus zu schreiben. Jeder der Schreibbefehle weist eine logische Blockadresse auf. Der Stromverwalter ist so eingerichtet, dass er die Schreibbefehle, die in Sequenz empfangen werden, überwacht, um den Workload-Typ zu bestimmen. „Sequenz“ nimmt Bezug auf eine Reihenfolge, in der eine bestimmte Aktivität, ein bestimmtes Ereignis oder ein bestimmter Vorgang durchgeführt oder ausgeführt wird.
  • Der Stromverwalter vergleicht logische Blockadressen aus den Schreibbefehlen mit logischen Blockadressen früherer Schreibbefehle. Der Stromverwalter bestimmt dann auf der Grundlage des Vergleichs der logischen Blockadressen, dass der Workload-Typ sequenziell ist. Der Blockzuweisungsverwalter richtet einen der logischen Löschblöcke für Speichervorgänge im Vollblockmodus neu ein und leitet Schreibbefehle des sequenziellen Workload-Typs an den neu eingerichteten logischen Löschblock weiter. Der Blockzuweisungsverwalter weist die Schreibdatenpipeline an, Daten im Vollblockmodus in den neu eingerichteten logischen Löschblock zu schreiben. Schließlich verwaltet der Verwalter offener Blöcke den neu eingerichteten logischen Löschblock im Vollblockmodus.
  • Figurenliste
  • Um die Diskussion über ein bestimmtes Element oder eine bestimmte Handlung leicht zu identifizieren, nehmen die wichtigsten Ziffern in einem Bezugszeichen auf die Nummer der Figur Bezug, in der dieses Element zum ersten Mal eingeführt wird.
    • 1 veranschaulicht ein Speichersystem 100 gemäß einer Ausführungsform.
    • 2 ist ein Blockdiagramm einer exemplarischen Speichervorrichtung 102 in einer Ausführungsform.
    • 3 veranschaulicht ein Speicherarray 300 gemäß einer Ausführungsform.
    • 4 ist ein schematisches Blockdiagramm, das eine Ausführungsform einer NAND-Kette 400 veranschaulicht.
    • 5 veranschaulicht ein Speicherarray 500 gemäß einer Ausführungsform.
    • 6 veranschaulicht ein System 600 gemäß einer Ausführungsform.
    • 7 veranschaulicht eine Speichersteuerung 700 gemäß einer Ausführungsform.
    • 8 veranschaulicht eine Speichersteuerung 800 gemäß einer Ausführungsform.
    • 9 veranschaulicht eine Metablock-Verfolgungstabelle 900 gemäß einer Ausführungsform.
    • 10 veranschaulicht eine Routine 1000 gemäß einer Ausführungsform.
    • 11 ist ein beispielhaftes Blockdiagramm einer Rechenvorrichtung 1100, die bestimmte Ausführungsformen enthalten kann.
  • DETAILLIERTE BESCHREIBUNG
  • Zur Bewältigung der Herausforderungen, die durch immer größer werdende Speicherarrays entstehen, wird ein Unterblockmodus offenbart, wobei jeder physische Block in zwei oder mehr physische Schwester-Unterblöcke unterteilt werden kann. Schwester-Unterblöcke können unabhängig voneinander verwendet (programmiert, gelöscht und gelesen) werden. Die Fertigungsfuge zwischen den Ebenen einer zweistufigen Speicherlocharchitektur kann dazu verwendet werden, den physischen Block in isolierte Unterblöcke auf beiden Seiten der Fuge zu unterteilen. Diese Lösung bietet den Vorteil, dass bei Ausfall eines Unterblocks unter Umständen nicht der gesamte physische Block ausgemustert werden muss, wodurch die Auswirkungen eines solchen Ausfalls auf das Speicherblockbudget gemildert werden.
  • „Unterblock“ nimmt Bezug auf eine logische Struktur, die ein Abschnitt eines physischen Löschblocks ist. In bestimmten Ausführungsformen ist ein Unterblock jede der Wortleitungen oder physischen Seiten eines physischen Löschblocks zwischen einer Fuge und einer Drainseite oder zwischen der Fuge und einer Sourceseite von NAND-Ketten, die Spalten des physischen Löschblocks bilden.
  • In einer Ausführungsform schließt ein Speicherarray einen Satz von Speicherzellen ein, die in Zeilen von Wortleitungen und Spalten von NAND-Ketten organisiert sind. Jede NAND-Kette weist eine Sourceseite, eine Drainseite und eine Fuge zwischen ihnen auf. Bestimmte Zeilen von Wortleitungen des Speicherarrays bilden zusammen einen physischen Löschblock. Wortleitungen zwischen der Fuge und der Sourceseite des physischen Löschblocks bilden einen Unterblock, und Wortleitungen zwischen der Fuge und der Drainseite des physischen Löschblocks bilden einen weiteren Unterblock.
  • Ein Unterblock ist physisch Teil desselben physischen Löschblocks, kann aber verwendet werden, um einen Speichervorgang an einem Unterblock mit geringen, minimalen, handhabbaren oder keinen Auswirkungen auf Speicherzellen des physischen Löschblocks durchzuführen, die nicht Teil des einen Unterblocks sind. Speichervorgänge, die einen einzelnen Unterblock betreffen, werden hier als Speichervorgänge im Unterblockmodus oder unter Verwendung eines Unterblocks im Unterblockmodus bezeichnet.
  • In bestimmten Ausführungsformen kann eine Speichersteuerung oder Die-Steuerung Unterblöcke mittels Konfigurationseinstellungen verwalten, betreiben und steuern, die für Steuerleitungen verwendet werden, die während eines Speichervorgangs an die Speicherzellen eines Speicherarrays gekoppelt sind. Ein spezifischer Satz von Konfigurationseinstellungen mit einem oder mehreren bestimmten Werten kann verwendet werden, um Unterblöcke innerhalb eines physischen Löschblocks zu betreiben. In einer Ausführungsform werden diese Konfigurationseinstellungen als Unterblockmodus-Konfigurationseinstellungen oder Unterblock-Konfigurationseinstellungen bezeichnet, um sie von Vollblockmodus-Konfigurationseinstellungen zu unterscheiden.
  • In einer Ausführungsform kann ein einzelner physischer Löschblock zwei Unterblöcke einschließen, von denen jeder so bemessen ist, dass er die Hälfte der Speicherzellen des physischen Löschblocks enthält. In einer anderen Ausführungsform kann ein einzelner physischer Löschblock mehr als zwei Unterblöcke einschließen, von denen jeder so bemessen ist, dass er einen Teil der Speicherzellen des physischen Löschblocks enthält.
  • „Speicher“ nimmt Bezug auf jede Hardware, Schaltung, Komponente, jedes Modul, jede Logik, Vorrichtung oder jedes Gerät, die eingerichtet, programmiert, entworfen, angeordnet oder konstruiert wurde, um Daten zu speichern. Bestimmte Speichertypen erfordern die Verfügbarkeit einer konstanten Stromquelle, um die Daten zu speichern und zu erhalten. Andere Speichertypen halten und/oder speichern die Daten, wenn eine Stromquelle nicht verfügbar ist.
  • „Speicherarray“ nimmt Bezug auf einen Satz von Speicherzellen (auch als Speicherungszellen bezeichnet), die in einer Arraystruktur mit Zeilen und Spalten organisiert sind. Folglich ist ein nichtflüchtiges Speicherarray ein Speicherarray mit Speicherzellen, die so eingerichtet sind, dass eine Eigenschaft (z. B. Schwellenspannungspegel, Widerstandspegel, Leitfähigkeit usw.) der Speicherzelle, die zur Darstellung gespeicherter Daten verwendet wird, eine Eigenschaft der Speicherzelle bleibt, ohne dass die Verwendung einer Stromquelle zur Aufrechterhaltung der Eigenschaft erforderlich ist.
  • Ein Speicherarray ist unter Verwendung einer Zeilenkennung und einer Spaltenkennung adressierbar. Ein Fachmann erkennt, dass ein Speicherarray den Satz von Speicherzellen innerhalb einer Ebene, den Satz von Speicherzellen innerhalb eines Speicher-Dies, den Satz von Speicherzellen innerhalb eines Satzes von Ebenen, den Satz von Speicherzellen innerhalb eines Satzes von Speicher-Dies, den Satz von Speicherzellen innerhalb eines Speicherpakets, den Satz von Speicherzellen innerhalb eines Satzes von Speicherpaketen oder mit anderen bekannten Speicherzellensatz-Architekturen und -Konfigurationen aufweisen kann.
  • Ein Speicherarray kann einen Satz von Speicherzellen auf einer Reihe von Organisationsebenen innerhalb eines Speichers oder Speichersystems einschließen. In einer Ausführungsform können Speicherzellen innerhalb einer Ebene zu einem Speicherarray organisiert sein. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Ebenen eines Speicher-Dies zu einem Speicherarray organisiert werden. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Speicher-Dies einer Speichervorrichtung zu einem Speicherarray organisiert sein. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Speichervorrichtungen eines Speichersystems zu einem Speicherarray organisiert sein.
  • „Speicherzelle“ nimmt Bezug auf einen Typ von Speichermedien, die so eingerichtet sind, dass sie einen oder mehrere binäre Werte mittels einer bestimmbaren physikalischen Eigenschaft des Speichermediums darstellen, wenn das Speichermedium abgetastet, gelesen oder erkannt wird, um zu bestimmen, welcher/welche binäre Wert(e) zuletzt in der Speicherzelle gespeichert wurde. Speicherzelle und Speicherungszelle werden hierin austauschbar verwendet.
  • „Ebene“ nimmt Bezug auf eine Unterteilung des Speicherarrays, die es erlaubt, bestimmte Speichervorgänge an beiden Ebenen unter Verwendung bestimmter physischer Zeilenadressen und bestimmter physischer Spaltenadressen durchzuführen.
  • „Speichermedium“ nimmt Bezug auf beliebige physische Medien, die dazu organisiert und eingerichtet sind, um ein oder mehrere Datenbits zu speichern. In einer Ausführungsform beziehen sich Speichermedien auf physische Speicherzellen und/oder Speicherzellen, die in flüchtigen Speichermedien verwendet werden. In einer anderen Ausführungsform beziehen sich Speichermedien auf physische Speicherzellen und/oder Speicherzellen, die in nichtflüchtigen Speichermedien verwendet werden.
  • „Speichervorgang“ nimmt Bezug auf einen Vorgang, der an einer Speicherzelle durchgeführt wird, um den Wert von Daten zu ändern oder zu erhalten, die durch einen für die Speicherzelle charakteristischen Zustand dargestellt werden. Beispiele für Speichervorgänge schließen das Lesen von Daten aus (oder abtasten eines Zustands) einer Speicherzelle, das Schreiben (oder Programmieren) von Daten in eine Speicherzelle und/oder das Löschen von in einer Speicherzelle gespeicherten Daten ein, sind aber nicht darauf beschränkt.
  • Um eine Unterblockmodus-Lösung in einem Speichersystem zu implementieren, müssen möglicherweise bestimmte Parameter gesetzt und/oder modifiziert werden, um unabhängig auf jeden Schwester-Unterblock zugreifen zu können. Das Einstellen solcher Parameter für den Unterblockmodus jedes Mal, wenn dieser Modus implementiert werden soll, kann genügend Zeit in Anspruch nehmen, um eine erhebliche Auswirkung auf die Leistung aufzuweisen. Aus diesem Grund können die für den Unterblockmodus spezifischen Parameter als Standard verwendet werden.
  • In einigen Ausführungsformen kann die Löschzeit im Unterblockmodus doppelt so lang sein wie im Vollblockmodus, was auf Randbedingungen in Speicherarchitekturen zurückzuführen ist, die dem Fachmann geläufig sind. Anders ausgedrückt: Für die gleiche Menge an geschriebenen Daten kann die doppelte Anzahl von Löschvorgängen und damit die doppelte Löschzeit erforderlich sein, wenn im Unterblockmodus gearbeitet wird, im Vergleich zu Vorgängen im Vollblockmodus, was zu erheblichen Leistungseinbußen führt, wenn eine Schreib-Workload eine große Anzahl von sequentiellen oder pseudo-sequentiellen Schreibvorgängen enthält. Eine „Workload“ nimmt Bezug auf die Anzahl und Art der Speicherbefehle, die von der nichtflüchtigen Speichervorrichtung empfangen und/oder bedient werden, sowie das Resultat oder die Ergebnisse der Bedienung dieser Speicherbefehle. Die Workload kann auch jegliche Statistik über die Speicherbefehle einschließen.
  • Die Verwendung eines physischen Blocks im Unterblockmodus kann auch zu Problemen wie z. B. Ungelöschter-Unterblock-Störungen (Unerased Sub-block Disturb, USBD) führen, bei denen das Löschen eines Unterblocks über einen bestimmten Schwellenwert hinaus, ohne dabei den Schwester-Unterblock zu löschen, die auf dem Schwester-Unterblock gespeicherten Daten stören kann. „Schwelle“ bezieht sich auf einen Pegel, Punkt oder Wert, über dem eine Bedingung wahr ist oder eintreten wird und unter dem die Bedingung nicht wahr ist oder nicht eintreten wird. (Engl. „threshold‟ Merriam-Webster.com. Merriam-Webster, 2019. Web. 14 Nov. 2019. Edited)
  • „Störung“ nimmt Bezug auf eine Art von elektronischer und/oder magnetischer Interferenz, die während, nach oder als Ergebnis eines Speichervorgangs und/oder einer Phase eines Speichervorgangs erzeugt wird. Aus diesem Grund müssen Löschvorgänge zwischen Schwester-Unterblöcken unter Umständen innerhalb eines bestimmten Delta-Wertes durchgeführt werden, was zu zusätzlichen Speicherbereinigungsvorgängen führt, die sich auf die Leistung, die Schreibverstärkung und die für eine bestimmte Datenspeicherkapazität erforderliche Anzahl von Blöcken auswirken.
  • „Schreibverstärkung“ nimmt Bezug auf eine Messung von Schreib-/Programmiervorgängen, die auf einer nichtflüchtigen Speichervorrichtung durchgeführt werden und dazu führen, dass Daten, insbesondere Benutzerdaten, öfter geschrieben werden, als die Daten anfangs geschrieben wurden. In bestimmten Ausführungsformen kann die Schreibverstärkung die Anzahl der Schreibvorgänge zählen, die von einer nichtflüchtigen Speichervorrichtung durchgeführt werden, um die auf der nichtflüchtigen Speichervorrichtung gespeicherten Daten zu verwalten und zu erhalten. In anderen Ausführungsformen misst die Schreibverstärkung die Datenmenge, d. h. die Anzahl der geschriebenen Bits, die über eine anfängliche Speicherung von Daten auf der nichtflüchtigen Speichervorrichtung hinaus geschrieben werden.
  • „Speicherbereinigungsvorgang“ bezieht sich auf einen Vorgang zur Wiederherstellung der Speicherkapazität. In einem nichtflüchtigen Speichermedium, wie z. B. NAND, bei dem es sich um ein einmal beschreibbares Speichermedium handelt, führen Änderungen an gespeicherten Daten oder positive Anweisungen zum Löschen von Daten dazu, dass Datenblöcke eines Speicherblocks zu ungültigen Daten werden.
  • Ein Speicherbereinigungsvorgang kopiert gültige Daten aus einem Speicherblock an einen neuen Speicherort und veranlasst die Löschung des Speicherblocks. Der Speicherbereinigungsvorgang kann den Löschvorgang des Speicherblocks durchführen oder den Speicherblock für eine spätere Löschung markieren. Ein Speicherbereinigungsvorgang kann hierin als Verdichtungsvorgang bezeichnet werden.
  • „Ungültige Daten“ nimmt Bezug auf in einem Speicherblock gespeicherte Daten, die ein Host positiv gelöscht oder angezeigt hat, dass sie nicht mehr benötigt werden oder gelöscht werden können, weil die Daten durch eine neue oder geänderte Version der Daten ersetzt wurden. In nichtflüchtigen Speichermedien, die Speicherzellen umfassen, die einmal beschreibbare Speichermedien sind. Wenn Daten von einem Host geändert werden, führt die geänderte Version der Daten dazu, dass die auf dem einmal beschreibbaren Speichermedium gespeicherten ursprünglichen Daten zu ungültigen Daten werden. Die Daten werden ungültig, da sie nicht mehr die aktuelle Version der Daten darstellen.
  • „Gültige Daten“ nimmt Bezug auf Daten eines Speicherblocks, die von einem Host gespeichert wurden und so lange aufbewahrt und gepflegt werden sollten, bis der Host anzeigt, dass die Daten nicht mehr benötigt werden und gelöscht werden können oder sollten.
  • „Speicherblock“ nimmt Bezug auf einen Satz von Speicherzellen, die so organisiert sind, dass Speichervorgänge an Gruppen von Speicherzellen parallel durchgeführt werden können. Die Organisation des Satzes von Speicherzellen kann auf einer physischen oder logischen Ebene implementiert werden. So kann ein Speicherblock in einer Ausführungsform eine physische Seite aufweisen, z. B. eine Wortleitung, eine logische Seite umfassend physische Seiten, die Ebenen und/oder Speicher-Dies überspannen, einen physischen Löschblock umfassend einen Satz physischer Seiten, einen logischen Löschblock (Logical Erase Block, LEB) umfassend einen Satz logischer Seiten oder dergleichen. Ein Speicherblock kann hierin als „Block“, „Speicherblock“, „Metablock“ oder LEB bezeichnet werden.
  • „Speicherzelle“ nimmt Bezug auf einen Typ von Speichermedien, die so eingerichtet sind, dass sie einen oder mehrere binäre Werte mittels einer bestimmbaren Eigenschaft des Speichermediums darstellen, wenn das Speichermedium abgetastet, gelesen oder erkannt wird, um einen oder mehrere binäre Werte zu bestimmen, die in der Speicherzelle gespeichert sind oder durch die bestimmbare Eigenschaft der Speicherzelle dargestellt werden. Speicherzelle und Speicherungszelle werden hierin austauschbar verwendet.
  • Die Art der bestimmbaren Eigenschaft, die zum Speichern von Daten in einer Speicherzelle verwendet wird, kann je nach Art des Speichers oder der verwendeten Speichertechnologie variieren. Zum Beispiel in Flash-Speicherzellen, in denen jede Speicherzelle einen Transistor mit einem Sourceanschluss, einem Drainanschluss und einem Gate aufweist, ist die bestimmbare Charakteristik ein Spannungspegel, der, wenn er an das Gate angelegt wird, die Speicherzelle veranlasst, einen Strom zwischen dem Drain- und dem Sourceanschluss zu leiten. Der Spannungspegel in diesem Beispiel wird hierin als Schwellenspannung bezeichnet. Eine Schwellenspannung kann auch als eine Steuergate-Referenzspannung (Control Gate Reference Voltage, CGRV), eine Lesespannung, ein Lesepegel oder eine Referenzspannung bezeichnet werden.
  • Beispiele für bestimmbare physikalische Eigenschaften schließen eine Schwellenspannung für einen Transistor, ein elektrischer Widerstandswert einer Speicherzelle, ein Strompegel durch eine Speicherzelle, eine Magnetpolausrichtung, ein Spin-Transfer-Drehmoment und dergleichen ein, ohne darauf beschränkt zu sein.
  • „Transistor“ nimmt Bezug auf ein elektronisches Bauteil, das so eingerichtet ist, dass es als Signalverstärker oder als elektronischer Schalter dient. Ein Transistor weist einen Gateanschluss, einen Sourceanschluss, einen Drainanschluss und einen Körperanschluss oder nur einen Körper auf. Ein Transistor kann ein diskretes elektronisches oder Halbleiterbauelement aufweisen oder Strukturen oder Teile von Strukturen oder Vorrichtungen aufweisen, die in einer integrierten Schaltung oder einem Halbleiterbauelement oder einer Halbleitervorrichtung eingebettet sind.
  • Ein als Schalter arbeitender Transistor ist so eingerichtet, dass der Sourceanschluss elektrisch mit einer ersten elektrischen Struktur und der Drainanschluss elektrisch mit einer zweiten elektrischen Struktur verbunden ist. In einer Schalterkonfiguration wird ein Gateanschluss des Transistors mit einer Steuerleitung verbunden. Der Transistor wird durch Erhöhen einer Spannung auf der Steuerleitung auf oder über eine Schwellenspannung aktiviert und durch Absenken der Spannung auf der Steuerleitung unter eine Schwellenspannung deaktiviert. Die Aktivierung eines Transistors über die Steuerleitung wird hierin als Versetzen des Transistors in einen eingeschalteten Zustand bezeichnet.
  • Die Aktivierung des Transistors bildet einen elektrisch leitenden Pfad und/oder veranlasst den Transistor, einen Strom zu leiten und/oder die Übertragung einer Spannung oder Vorspannung zwischen dem Sourceanschluss und dem Drainanschluss zuzulassen.
  • Die hierin offenbarte Lösung kann diese Probleme bei der Verwendung des Unterblockmodus lösen und eine Möglichkeit bereitstellen, Unterblockmodus und Vollblockmodus miteinander zu kombinieren, um diese Herausforderungen zu bewältigen. Der „Unterblockmodus“ nimmt Bezug auf eine Art, einen Prozess, ein Verfahren oder eine Art und Weise des Betriebs eines Arrays von Speicherzellen dergestalt, dass Speichervorgänge auf einem ersten Satz von Speicherzellen des Arrays unabhängig von Speichervorgängen auf einem zweiten Satz von Speicherzellen im selben physischen Array wie der erste Satz von Speicherzellen sind.
  • In einer Ausführungsform enthält ein Speicherarray einen Satz von Speicherzellen, die in Zeilen von Wortleitungen und Spalten von NAND-Ketten organisiert sind, wobei jede NAND-Kette eine Source- und Drainseite sowie eine Verbindung zwischen ihnen aufweist. Bestimmte Zeilen von Wortleitungen des Speicherarrays bilden zusammen einen physischen Löschblock. Wenn eine Die-Steuerung den physischen Löschvorgang im Unterblockmodus durchführt, bilden Wortleitungen zwischen der Fuge und der Sourceseite des physischen Löschblocks einen ersten Unterblock und Wortleitungen zwischen der Fuge und der Drainseite des physischen Löschblocks einen zweiten Unterblock.
  • In einer Ausführungsform betreibt eine Die-Steuerung einen physischen Löschblock im Unterblockmodus durch Vorspannen von Steuerleitungen, die mit dem physischen Löschblock gekoppelt sind, so dass Speichervorgänge, die einen Unterblock betreffen, keine, minimale und/oder abgeschwächte Auswirkungen auf Speicherzellen in einem anderen Unterblock haben, der physisch Teil desselben physischen Löschblocks ist. Anders ausgedrückt: Die Die-Steuerung betreibt den physischen Löschblock auf eine solche Weise, durch Vorspannen der Steuerleitungen und mit Zeitsteuerung für Teile eines Speichervorganges, dass die Ausführung des Speichervorganges auf einem Unterblock minimale oder keine Störung der Daten oder Speicherzelleneinstellungen eines zweiten Unterblocks im selben physischen Löschblock verursacht.
  • „Vollblockmodus“ nimmt Bezug auf eine Art, einen Prozess, ein Verfahren oder eine Art und Weise, ein Array von Speicherzellen so zu betreiben, dass Datenwerte, die in Speicherzellen eines Satzes von Speicherzellen des Speicherarrays kodiert sind, in einem einzigen Löschvorgang gelöscht werden können.
  • In einer Ausführungsform enthält ein Array einen Satz von Speicherzellen, die in Zeilen von Wortleitungen und Spalten von NAND-Ketten organisiert sind, wobei jede NAND-Kette eine Source- und Drainseite sowie eine Verbindung zwischen ihnen aufweist. Bestimmte Zeilen von Wortleitungen des Speicherarrays bilden zusammen einen physischen Löschblock. Wenn eine Die-Steuerung den physischen Löschvorgang im Vollblockmodus durchführt, bilden Wortleitungen zwischen der Fuge und der Sourceseite und Wortleitungen zwischen der Fuge und der Drainseite gemeinsam den physischen Löschblock.
  • In einer Ausführungsform betreibt eine Die-Steuerung einen physischen Löschblock im Vollblockmodus durch Vorspannen von Steuerleitungen, die mit dem physischen Löschblock gekoppelt sind dergestalt, dass ein Löschvorgang die Speicherzellen des physischen Löschblocks als Einheit beeinflusst. In bestimmten Ausführungsformen ist das Betreiben eines physischen Löschblocks im Vollblockmodus analog zum Lesen von Daten, zum Schreiben von Daten und zum Löschen von Speicherzellen eines physischen Löschblocks.
  • In bestimmten Ausführungsformen kann ein Speichervorgang im Vollblockmodus an einem einzelnen physischen Löschblock eines einzelnen Arrays von Speicherzellen eines einzelnen Speicher-Dies durchgeführt werden. Alternativ oder zusätzlich kann ein Speichervorgang im Vollblockmodus an einer Vielzahl von physischen Löschblöcken von einer Vielzahl von Arrays von Speicherzellen einer Vielzahl von Speicher-Dies durchgeführt werden, die so organisiert und eingerichtet sind, dass ein einziger Speichervorgang von einer Speichersteuerung aus parallel an der Vielzahl von physischen Löschblöcken arbeitet. In einer solchen Ausführungsform und Konfiguration wird die Vielzahl von physischen Löschblöcken als logische Löschblöcke, Metablöcke oder Superblöcke bezeichnet.
  • „Logischer Löschblock“ nimmt auf einen anderen Begriff für einen Speicherblock Bezug. In bestimmten Ausführungsformen nimmt ein logischer Löschblock Bezug auf einen Satz logischer Seiten, die Ebenen, Speicher-Dies und/oder Chips überspannen. Diese Organisation der Speicherzellen gilt als „logisch‟, da die physischen Seiten möglicherweise nicht direkt miteinander gekoppelt sind. Die logische Beziehung zwischen den physischen Seiten kann in einer Tabelle oder einer anderen Abbildung nachverfolgt werden oder kann aufgrund der Lage der physischen Seiten in einem Speicher-Die oder Speicherarray und der Architektur, die mehrere Speicher-Dies oder Speicherarrays verbindet, inhärent sein.
  • Die physischen Seiten können Wortleitungen aufweisen und werden parallel betrieben, so als wären sie eine einzige logische Seite, die Speicher-Dies und/oder Speicherebenen und/oder Speicherarrays überspannt. In gleicher Weise können mehrere physische Löschblöcke, die Speicher-Dies und/oder Speicherebenen und/oder Speicherarrays überspannen, parallel betrieben werden, als wären sie ein einziger Löschblock und werden daher als logische Löschblöcke bezeichnet. Die Begriffe logischer Löschblock, Metablock und Superblock werden hierin austauschbar verwendet.
  • „Logische Seite“ nimmt Bezug auf eine Sammlung von physischen Seiten, die für Speichervorgänge als eine einzige Seite behandelt werden.
  • „Metablock“ nimmt Bezug auf einen Satz von Speicherzellen, die so organisiert sind, dass Speichervorgänge an Gruppen von Speicherzellen parallel durchgeführt werden können. Ein Metablock ist eine logische Struktur, die den Satz von Speicherzellen auf einer logischen Ebene organisiert. In einer Ausführungsform ist ein Metablock eine kleinste Speichereinheit, die in einem einzigen Löschvorgang gelöscht werden kann.
  • In einer Ausführungsform ist ein Metablock eine Sammlung von physischen Löschblöcken aus zwei oder mehr verschiedenen physischen Ebenen, Speicher-Dies oder Chips. Somit kann ein Metablock in einer Ausführungsform Speicherebenen, Speicher-Dies oder Speicherchips eines Speicherarrays überspannen. In einer Ausführungsform ist ein Metablock eine Sammlung von physischen Löschblöcken entlang einer Zeile eines Speicherarrays eines Speicher-Dies. Ein Metablock kann hierin als „Block“, „Speicherblock“, „logischer Löschblock“ oder LEB bezeichnet werden.
  • 1 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Speichersystems 100, das eine Speichervorrichtung gemäß der offenbarten Lösung veranschaulicht. Das Speichersystem 100 weist eine Speichervorrichtung 102, eine Speichersteuerung 104, ein Speicher-Die 106, einen Host 108, eine Benutzeranwendung 110, einen Speicherclient 112, einen Datenbus 114, einen Bus 116 und ein Netzwerk 118 aufweist. „Host“ nimmt Bezug auf eine beliebige Rechenvorrichtung oder einen Computer oder ein Computersystem, die bzw. das zum Senden und Empfangen von Speicherbefehlen eingerichtet ist. Beispiele für einen Host schließen unter anderem einen Computer, einen Laptop, eine mobile Vorrichtung, eine Appliance, eine virtuelle Maschine, einen Unternehmensserver, einen Desktop, ein Tablet, einen Hauptrechner und dergleichen ein.
  • „Speicherbefehl“ nimmt auf jeden Befehl Bezug, der sich auf einen Speichervorgang bezieht. Beispiele für Speicherbefehle schließen, ohne darauf beschränkt zu sein, Lesebefehle, Schreibbefehle, Wartungsbefehle, Konfigurationsbefehle, Administrationsbefehle, Diagnosebefehle, Testmodusbefehle, Befehle für Gegenmaßnahmen und alle anderen Befehle ein, die eine Speichersteuerung von einem Host empfängt oder an eine andere Komponente, eine Vorrichtung oder ein System ausgibt.
  • „Schreibbefehl“ nimmt Bezug auf einen Speicherbefehl, der so eingerichtet ist, dass der Empfänger angewiesen wird, einen oder mehrere Datenblöcke auf ein persistentes Speichermedium, wie z. B. eine Festplatte, ein nichtflüchtiges Speichermedium oder ähnliches, zu schreiben oder zu speichern. Ein Schreibbefehl kann jeden Speicherbefehl einschließen, der dazu führen kann, dass Daten in physische Speichermedien einer Speichervorrichtung geschrieben werden. Der Schreibbefehl kann genug Daten einschließen, um einen oder mehrere Datenblöcke zu füllen, oder der Schreibbefehl kann genug Daten einschließen, um einen Abschnitt eines oder mehrerer Datenblöcke zu füllen. In einer Ausführungsform schließt ein Schreibbefehl ein Start-LBA und eine Zählung ein, die die Anzahl der LBA der auf die Speichermedien zu schreibenden Daten angibt.
  • Das Speichersystem 100 schließt mindestens eine Speichervorrichtung 102 ein, die eine Speichersteuerung 104 und einen oder mehrere über einen Bus 116 verbundene Speicher-Dies 106 umfasst. „Speichersteuerung“ nimmt Bezug auf eine beliebige Hardware, Vorrichtung, ein Bauteil, ein Element oder eine Schaltung, die zur Verwaltung von Datenvorgängen auf nichtflüchtigen Speichermedien eingerichtet ist, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrocontroller oder dergleichen aufweisen. In einigen Ausführungsformen ist die Speichersteuerung dazu eingerichtet, Daten auf den nichtflüchtigen Speichermedien zu speichern und/oder Daten davon zu lesen, Daten zu/von der (den) nichtflüchtigen Speichervorrichtung(en) zu übertragen und so weiter.
  • „Speicher-Die“ nimmt Bezug auf ein kleines Stück aus Halbleitermaterial, auf dem eine gegebene Funktionsschaltung hergestellt wird. Üblicherweise werden integrierte Schaltkreise in großen Chargen auf einem einzigen Wafer aus elektronischem Silizium (Electronic-Grade Silicon - EGS) oder einem anderen Halbleiter (wie GaAs) durch Prozesse wie Fotolithografie hergestellt. Der Wafer wird in viele Stücke geschnitten (zerteilt), die jeweils eine Kopie der Schaltung enthalten. Jedes dieser Stücke wird als Die oder Speicher-Die bezeichnet. (Suche nach „Die (integrierte Schaltung)‟ auf Wikipedia.com, 9. Oktober 2019. Zugriffsdatum 18. November 2019.)
  • Ein Speicher-Die ist ein Die, in einer Ausführungsform, das einen oder mehrere Funktionsschaltkreise zum Betrieb als nichtflüchtiges Speichermedium und/oder nichtflüchtiges Speicherarray einschließt. „Nichtflüchtiges Speicherarray“ nimmt Bezug auf einen Satz nichtflüchtiger Speicherzellen (auch als Speicherzellen oder nichtflüchtige Speicherzellen bezeichnet), die in einer Arraystruktur mit Zeilen und Spalten organisiert sind. Ein Speicherarray ist unter Verwendung einer Zeilenkennung und einer Spaltenkennung adressierbar.
  • „Nichtflüchtige Speichermedien“ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, jedes Element oder jeden Schaltkreis, die bzw. der so eingerichtet ist, dass sie bzw. er eine veränderbare physikalische Eigenschaft beibehält, die verwendet wird, um einen binären Wert von Null oder eins darzustellen, nachdem eine primäre Stromquelle entfernt wurde. Beispiele für veränderbare physikalische Eigenschaften schließen eine Schwellenspannung für einen Transistor, ein elektrischer Widerstandswert einer Speicherzelle, ein Strompegel durch eine Speicherzelle, eine Magnetpolausrichtung, ein Spin-Transfer-Drehmoment und dergleichen ein, ohne darauf beschränkt zu sein.
  • Die veränderbare physikalische Eigenschaft ist so beschaffen, dass die physikalische Eigenschaft ausreichend fixiert bleibt, so dass, wenn keine primäre Stromquelle für die nichtflüchtigen Speichermedien verfügbar ist, die veränderbare physikalische Eigenschaft gemessen, erkannt oder abgetastet werden kann, wenn der binäre Wert gelesen, abgerufen oder abgetastet wird. Anders ausgedrückt: Nichtflüchtige Speichermedien sind Speichermedien, die so eingerichtet sind, dass Daten, die auf den nichtflüchtigen Speichermedien gespeichert sind, abrufbar sind, nachdem eine Stromquelle für die nichtflüchtigen Speichermedien getrennt und dann wieder angeschlossen wurde. Die nichtflüchtigen Speichermedien können ein oder mehrere nichtflüchtige Speicherelemente aufweisen, die unter anderem Folgendes einschließen können: Chips, Pakete, Ebenen, Speicher-Dies und dergleichen.
  • Beispiele für nichtflüchtige Speichermedien umfassen, sind aber nicht beschränkt auf: ReRAM, Memristorspeicher, programmierbarer Metallisierungszellenspeicher, Phasenänderungsspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalcogenid-RAM oder C-RAM), NAND-Flashspeicher (z. B. 2D-NAND-Flashspeicher, 3D-NAND-Flashspeicher), NOR-Flash-Speicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierte Nanokristallspeicher, Siliziumoxid-basierter Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), programmierbare Metallisierungszellen (PMC), leitungsüberbrückendes RAM (CBRAM), magnetoresistives RAM (MRAM), magnetische Speichermedien (z. B. Festplatte, Band), optische Speichermedien oder dergleichen.
  • Während die nichtflüchtigen Speichermedien hierin in verschiedenen Ausführungsformen als „Speichermedien“ bezeichnet werden, können die nichtflüchtigen Speichermedien allgemeiner als nichtflüchtiger Speicher bezeichnet werden. Da nichtflüchtige Speichermedien in der Lage sind, Daten zu speichern, wenn eine Stromversorgung entfernt wird, können die nichtflüchtigen Speichermedien auch als Aufzeichnungsmedium, nichtflüchtiges Aufzeichnungsmedium, nichtflüchtiges Speichermedium, Speicher, nichtflüchtiger Speicher, flüchtiges Speichermedium, nichtflüchtiges Speichermedium, nichtflüchtiger Speicher oder ähnliches bezeichnet werden.
  • In bestimmten Ausführungsformen sind die auf nichtflüchtigen Speichermedien gespeicherten Daten auf Blockebene adressierbar, d. h. die Daten auf den nichtflüchtigen Speichermedien sind in Datenblöcken organisiert, die jeweils eine eindeutige logische Adresse (z. B. LBA) aufweisen. In anderen Ausführungsformen sind Daten, die in nichtflüchtigen Speichermedien gespeichert sind, auf Byte-Ebene adressierbar, was bedeutet, dass die Daten in den nichtflüchtigen Speichermedien in Bytes (8 Bit) von Daten organisiert sind, die jeweils eine eindeutige Adresse aufweisen, wie z. B. eine logische Adresse. Ein Beispiel für byteadressierbare nichtflüchtige Speichermedien ist der Speicherklassenspeicher (SCM). „Nichtflüchtiges Speicherarray“ nimmt Bezug auf einen Satz nichtflüchtiger Speicherzellen (auch als Speicherzellen oder nichtflüchtige Speicherzellen bezeichnet), die in einer Arraystruktur mit Zeilen und Spalten organisiert sind. Ein Speicherarray ist unter Verwendung einer Zeilenkennung und einer Spaltenkennung adressierbar.
  • In manchen Ausführungsformen kann jede Speichervorrichtung 102 ein oder mehrere Speicher-Dies 106 einschließen, wie z. B. Flash-Speicher, Nano-Direktzugriffsspeicher („Nano-RAM oder NRAM“), magnetoresistives RAM („MRAM“), dynamisches RAM („DRAM“), Phasenwechsel-RAM („PRAM“), usw. In weiteren Ausführungsformen kann die Datenspeichervorrichtung 102 andere Arten von nichtflüchtiger und/oder flüchtiger Datenspeicherung einschließen, wie dynamisches RAM („DRAM“), statisches RAM („SRAM“), magnetische Datenspeicherung, optische Datenspeicherung und/oder andere Datenspeichertech no log ien.
  • Die Speichervorrichtung 102, die hierin auch als Speichereinrichtung bezeichnet wird, kann eine Komponente innerhalb eines Host 108 sein, wie hier dargestellt, und kann über einen Datenbus 114 verbunden sein, wie z. B. einen „PCI-e“-Bus (Peripheral Component Interconnect Express), einen „seriellen ATA“-Bus (Serial Advanced Technology Attachment) oder dergleichen. In einer anderen Ausführungsform befindet sich die Speichervorrichtung 102 außerhalb des Host 108 und ist daran angeschlossen, über eine „USB“-Verbindung (Universal Serial Bus), eine „IEEE“-1394-Bus-Verbindung (Institute of Electrical and Electronics Engineers) („FireWire“) oder dergleichen. In anderen Ausführungsformen ist die Speichervorrichtung 102 mit dem Host 108 über einen „PCI“-Express-Bus (Peripheral Component Interconnect) verbunden, wobei eine externe elektrische oder optische Buserweiterung oder eine Busnetzwerklösung wie InfiniBand oder „PCIe-AS“ (PCI Express Advanced Switching) oder dergleichen verwendet wird.
  • In verschiedenen Ausführungsformen kann die Speichervorrichtung 102 in Form eines „DIMM“-Moduls (Dual-Inline Memory Module), einer Tochterkarte oder eines Mikromoduls vorliegen. In einer anderen Ausführungsform ist die Speichervorrichtung 102 eine Komponente innerhalb eines im Rack montierten Blades. In einer anderen Ausführungsform ist die Speichervorrichtung 102 in einer Vorrichtung enthalten, die direkt in eine übergeordnete Baugruppe integriert ist (z. B. Hauptplatine, Laptop, Grafikprozessor). In einer anderen Ausführungsform werden einzelne Komponenten, die die Speichervorrichtung 102 umfassen, ohne Zwischenverpackung direkt auf einer übergeordneten Baugruppe integriert. Die Speichervorrichtung 102 wird in Bezug auf 2 detaillierter beschrieben.
  • „Prozessor“ bezieht sich auf alle Schaltungen, Komponenten, Chips, Dies, Gehäuse oder Module, die so eingerichtet sind, dass sie Maschinenanweisungen empfangen, interpretieren, decodieren und ausführen. Beispiele für einen Prozessor können, ohne darauf beschränkt zu sein, eine Zentraleinheit, einen Allzweckprozessor, einen anwendungsspezifischen Prozessor, eine Grafikverarbeitungseinheit (GPU), ein FGPA (Field Programmable Gate Array), eine anwendungsspezifische integrierte Schaltung (ASIC), ein SoC (System on a Chip), einen virtuellen Prozessor, einen Prozessorkern und dergleichen einschließen.
  • In einer weiteren Ausführungsform kann die Speichervorrichtung 102 über ein Datennetzwerk mit dem Host 108 verbunden werden, anstatt direkt als DAS mit dem Host 108 verbunden zu sein. Beispielsweise kann die Datenspeichervorrichtung 102 eine „SAN“-Speichervorrichtung (Storage Area Network), eine „NAS“-Speichervorrichtung (Network Attached Storage), eine Netzwerkfreigabe oder dergleichen einschließen. In einer Ausführungsform kann das System 100 ein Datennetzwerk wie das Internet, ein „WAN“ (Wide Area Network), ein „MAN“ (Metropolitan Area Network), ein „LAN“ (Local Area Network), einen Token-Ring, ein drahtloses Netzwerk, ein Glasfaserkanalnetzwerk, ein SAN, ein NAS, ESCON oder dergleichen oder eine beliebige Kombination von Netzwerken einschließen. Ein Datennetzwerk kann auch ein Netzwerk aus der IEEE-802-Familie von Netzwerktechnologien einschließen, wie Ethernet, Token-Ring, Wi-Fi, Wi-Max und dergleichen. Ein Datennetzwerk kann Server, Switches, Router, Verkabelung, Funkgeräte und andere Geräte einschließen, die zur Erleichterung der Vernetzung zwischen dem Host 108 und der Speichervorrichtung 102 verwendet werden.
  • Das Speichersystem 100 schließt mindestens einen Host 108 ein, der mit der Speichervorrichtung 102 verbunden ist. Es können mehrere Hosts 108 verwendet werden, die einen Host, einen Server, eine Speichersteuerung eines „SAN“ (Storage Area Network), eine Arbeitsstation, einen PC, einen Laptop-Computer, einen tragbaren Computer, einen Supercomputer, ein Computer-Cluster, einen Netzwerk-Switch, Router oder eine Appliance, eine Datenbank oder eine Speicher-Appliance, ein Datenabruf- oder Datenerfassungssystem, ein Diagnosesystem, ein Testsystem, einen Roboter, eine tragbare elektronische Vorrichtung, eine drahtlose Vorrichtung oder dergleichen aufweisen können. In einer anderen Ausführungsform kann ein Host 108 ein Client sein, und die Speichervorrichtung 102 arbeitet autonom, um von dem Host 108 gesendete Datenanforderungen zu bedienen. In dieser Ausführungsform können der Host 108 und die Speichervorrichtung 102 über ein Computernetzwerk, einen Systembus, DAS (Direct Attached Storage) oder andere Kommunikationsmittel verbunden werden, die für die Verbindung zwischen einem Computer und einer autonomen Speichervorrichtung 102 geeignet sind.
  • Die dargestellte Ausführungsform zeigt eine Benutzeranwendung 110 in Kommunikation mit einem Speicherclient 112 als Teil des Host 108. In einer Ausführungsform ist die Benutzeranwendung 110 eine Software-Anwendung, die auf oder in Verbindung mit dem Speicherclient 112 arbeitet. „Speicherclient“ nimmt Bezug auf jede Hardware-, Software-, Firmware- oder Logikkomponente oder jedes Modul, die bzw. das für die Kommunikation mit einer Vorrichtung zur Nutzung von Speicherdiensten eingerichtet ist. Beispiele für einen Speicherclient sind unter anderem Betriebssysteme, Dateisysteme, Datenbankanwendungen, ein Datenbankmanagementsystem („DBMS“), Serveranwendungen, ein Server, ein Volume-Manager, Prozesse auf Kernel-Ebene, Prozesse auf Benutzerebene, Anwendungen, mobile Anwendungen, Threads, Prozesse und dergleichen. „Software“ nimmt Bezug auf Logik, die als prozessorausführbare Anweisungen in einem Maschinenspeicher (z. B. flüchtige oder nichtflüchtige Lese-/Schreibspeichermedien) implementiert sind.
  • Der Speicherclient 112 verwaltet Dateien und Daten und nutzt die Funktionen und Merkmale der Speichersteuerung 104 und des zugehörigen Speicher-Dies 106. Repräsentative Beispiele für Speicherclients schließen einen Server, ein Dateisystem, ein Betriebssystem, ein Datenbankmanagementsystem („DBMS“), einen Volume-Manager und dergleichen ein, sind aber nicht beschränkt darauf. Der Speicherclient 112 steht in Kommunikation mit der Speichersteuerung 104 innerhalb der Speichervorrichtung 102. In einigen Ausführungsformen kann der Speicherclient 112 entfernte Speicherclients einschließen, die auf Hosts 108 betrieben werden oder anderweitig über das Netzwerk 118 zugänglich sind. Die Speicherclients können einschließen, ohne jedoch darauf beschränkt zu sein: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Prozesse auf Kernel-Ebene, Prozesse auf Benutzerebene, Anwendungen und dergleichen.
  • In einer Ausführungsform schließt das Speichersystem 100 einen oder mehrere Clients ein, die über ein oder mehrere Computernetzwerke 118 mit einem oder mehreren Hosts 108 verbunden sind. Ein Host 108 kann ein Host, ein Server, eine Speichersteuerung eines SAN, eine Workstation, ein PC, ein Laptop-Computer, ein tragbarer Computer, ein Supercomputer, ein Computer-Cluster, ein Netzwerk-Switch, Router oder eine Appliance, eine Datenbank oder Speicher-Appliance, ein Datenabruf- oder Datenerfassungssystem, ein Diagnosesystem, ein Testsystem, ein Roboter, eine tragbare elektronische Vorrichtung, eine drahtlose Vorrichtung oder dergleichen sein. Das Netzwerk 118 kann das Internet, ein „WAN“ (Wide Area Network), ein „MAN“ (Metropolitan Area Network), ein „LAN“ (Local Area Network), einen Token-Ring, ein drahtloses Netzwerk, ein Glasfaserkanalnetzwerk, ein SAN, ein „NAS“ (Network Attached Storage), ESCON oder dergleichen oder eine beliebige Kombination von Netzwerken einschließen. Das Netzwerk 118 kann auch ein Netzwerk aus der IEEE-802-Familie von Netzwerktechnologien einschließen, wie Ethernet, Token-Ring, WiFi, WiMax und dergleichen einschließen.
  • Das Netzwerk 118 kann Server, Switches, Router, Verkabelung, Funkgeräte und andere Geräte einschließen, die zur Erleichterung der Vernetzung zwischen dem Host 108 oder den Hosts und dem Host 108 oder Clients verwendet werden. In einer Ausführungsform schließt das Speichersystem 100 mehrere Hosts ein, die als Peers über ein Netzwerk 118 kommunizieren. In einer weiteren Ausführungsform schließt das Speichersystem 100 mehrere Speichervorrichtungen 102 ein, die als Peers über ein Netzwerk 118 kommunizieren. Ein Fachmann wird andere Computernetzwerke erkennen, die ein oder mehrere Computernetzwerke und zugehörige Ausrüstungen mit einer einzelnen oder redundanten Verbindung zwischen einem oder mehreren Clients oder einem anderen Computer mit einer oder mehreren Speichervorrichtungen 102 oder einer oder mehreren Speichervorrichtungen 102, die mit einem oder mehreren Hosts verbunden sind, aufweisen. In einer Ausführungsform schließt das Speichersystem 100 zwei oder mehr Speichervorrichtungen 102 ein, die über das Netzwerk 118 mit einem Host 108 ohne einen Host 108 verbunden sind.
  • In einer Ausführungsform kommuniziert der Speicherclient 112 mit der Speichersteuerung 104 über eine Host-Schnittstelle, die eine E/A-Schnittstelle (Eingabe/Ausgabe) umfasst. Zum Beispiel kann eine Speichervorrichtung 102 den ATA-Schnittstellenstandard, den „ATAPI“-Standard (ATA Packet Interface), den „SCSI“-Standard (Small Computer System Interface) und/oder den Faserkanal-Standard unterstützen, die vom „INCITS“ (International Committee for Information Technology Standards) gepflegt werden.
  • In bestimmten Ausführungsformen ist das Speichermedium einer Speichervorrichtung in Volumes oder Partitionen unterteilt. Jedes Volume oder jede Partition kann eine Vielzahl von Sektoren einschließen. Traditionell stellt ein Sektor 512 Bytes von Daten dar. Ein oder mehrere Sektoren sind in einem Block (hierin austauschbar als Block und Datenblock bezeichnet,) organisiert. „Datenblock“ nimmt Bezug auf eine kleinste physische Menge an Speicherplatz auf physischen Speichermedien, auf den über einen Speicherbefehl zugegriffen werden kann und/oder der adressierbar ist. Bei den physischen Speichermedien kann es sich um flüchtige Speichermedien, nichtflüchtige Speichermedien, persistente Speicherung, nichtflüchtige Speicherung, Flash-Speichermedien, Festplattenlaufwerke oder dergleichen handeln. Bestimmte konventionelle Speichervorrichtungen unterteilen die physischen Speichermedien in Volumes oder logische Partitionen (auch als Partitionen bezeichnet). Jedes Volume oder jede logische Partition kann eine Vielzahl von Sektoren einschließen. Ein oder mehrere Sektoren sind in einem Block (auch als Datenblock bezeichnet) organisiert. In bestimmten Speichersystemen, wie z. B. denen, die eine Schnittstelle zu Windows®-Betriebssystemen haben, werden die Datenblöcke als Cluster bezeichnet. In anderen Speicherungssystemen, z. B. solchen, die eine Schnittstelle zu UNIX, Linux oder ähnlichen Betriebssystemen haben, werden die Datenblöcke einfach als Blöcke bezeichnet. Ein Datenblock oder Cluster stellt die kleinste physische Menge an Speicherplatz auf den Speichermedien dar, die von einer Speichersteuerung verwaltet wird. Eine Blockspeichervorrichtung kann n Datenblöcke, die für die Benutzerdatenspeicherung auf den physischen Speichermedien zur Verfügung stehen, einer logischen Blockadresse (LBA), die von 0 bis n nummeriert ist, zuordnen. In bestimmten Blockspeichervorrichtungen können die logischen Blockadressen zwischen 0 und n pro Volume oder logischer Partition liegen. In herkömmlichen Blockspeichervorrichtungen wird eine logische Blockadresse direkt auf einen und nur einen Datenblock abgebildet. „Logische Blockadresse“ nimmt Bezug auf einen Wert, der in einer Vorrichtung zur Blockspeicherung verwendet wird, um jedem von n logischen Blöcken, die für die Speicherung von Benutzerdaten auf den Speichermedien verfügbar sind, eine logische Adresse zuzuweisen. In bestimmten Blockspeichervorrichtungen können die logischen Blockadressen (LBAs) zwischen 0 und n pro Volume oder Partition liegen. Bei Blockspeichervorrichtungen wird jede LBA direkt auf einen bestimmten Datenblock abgebildet, und jeder Datenblock wird auf einen bestimmten Satz physischer Sektoren oder physischer Datenblockadressen auf den physischen Speichermedien abgebildet. „Benutzerdaten“ nimmt Bezug auf Daten, die ein Host zum Speichern oder Aufzeichnen auf einer nichtflüchtigen Speichervorrichtung anweist.
  • In einer beispielhaften Ausführungsform schließt ein Datenblock acht Sektoren ein, was 4 KB entspricht. In bestimmten Speichersystemen, wie z. B. denen, die eine Schnittstelle zu Windows®-Betriebssystemen haben, werden die Datenblöcke als Cluster bezeichnet. In anderen Speicherungssystemen, z. B. solchen, die eine Schnittstelle zu UNIX, Linux oder ähnlichen Betriebssystemen haben, werden die Datenblöcke einfach als Blöcke bezeichnet. Ein Block oder Datenblock oder Cluster stellt die kleinste physische Menge an Speicherplatz auf den Speichermedien dar, die von einem Speichermanager verwaltet wird, wie z. B. einer Speichersteuerung, einem Speichersystem, einer Speichereinheit, einer Speichervorrichtung oder dergleichen.
  • In einigen Ausführungsformen kann die Speichersteuerung 104 so eingerichtet werden, dass sie Daten auf einem oder mehreren asymmetrischen, einmal beschreibbaren Medien, wie z. B. Festkörperspeicher-Speicherzellen innerhalb des Speicher-Dies 106, speichert. „Einmal beschreibbare Speichermedien“ nimmt Bezug auf ein Speichermedium wie eine Speicherzelle, die reinitialisiert (z. B. gelöscht) wird, bevor neue Daten oder eine Änderung der Daten darauf geschrieben oder programmiert werden. Anders ausgedrückt: Die Daten eines einmal beschreibbaren Speichermediums können nicht überschrieben werden. Das einmal beschreibbare Speichermedium muss gelöscht werden, bevor anschließend Daten auf das einmal beschreibbare Speichermedium geschrieben werden können. „Asymmetrisches Speichermedium“ nimmt Bezug auf ein Speichermedium mit unterschiedlichen Latenzen für unterschiedliche Speichervorgänge. Viele Arten von Festkörperspeichermedien (z. B. Speicher-Dies) sind asymmetrisch; Beispielsweise kann ein Lesevorgang viel schneller als ein Schreib-/Programmiervorgang sein, und ein Schreib-/Programmiervorgang kann viel schneller als ein Löschvorgang sein (z. B. kann das Lesen der Speichermedien Hunderte Male schneller als Löschen und zehn Mal schneller als die Programmierung der Speichermedien sein).
  • „Programmieren“ nimmt Bezug auf einen Speichervorgang, bei dem eine Eigenschaft einer Speicherzelle von einem ersten Zustand (oft ein gelöschter Zustand) in einen zweiten Zustand überführt wird. Ein Programmier-Speichervorgang kann hierin auch als ein Schreibvorgang bezeichnet werden.
  • In bestimmten Ausführungsformen kann ein Programmier-Speichervorgang eine Reihe von Iterationen einschließen, die das Merkmal inkrementell ändern, bis mindestens ein Zielpegel der Änderung erreicht ist. In anderen Ausführungsformen kann ein Programmier-Speichervorgang dazu führen, dass das Attribut mit einer einzigen Iteration auf einen Zielpegel wechselt.
  • Das Speicher-Die 106 kann in Speicherbereiche partitioniert werden, die als eine Gruppe (z. B. Löschblöcke) gelöscht werden können, um unter anderem die asymmetrischen Eigenschaften des Speicher-Dies 106 oder dergleichen zu berücksichtigen. Somit kann das Modifizieren eines einzelnen Datensegments an Ort und Stelle das Löschen des gesamten Löschblocks, der die Daten aufweist, und das Neuschreiben der modifizierten Daten in den Löschblock zusammen mit den ursprünglichen, unveränderten Daten erfordern. Dies kann zu einer ineffizienten Schreibverstärkung führen, was eine Überbeanspruchung des Speicher-Dies 106 bewirken kann.
  • Der Begriff „Löschblock“ nimmt auf einen logischen oder physischen Löschblock Bezug. In einer Ausführungsform stellt ein physischer Löschblock die kleinste Speichereinheit innerhalb eines bestimmten Speicher-Dies dar, die zu einem bestimmten Zeitpunkt gelöscht werden kann (z. B. aufgrund der Verdrahtung der Speicherzellen auf dem Speicher-Die). In einer Ausführungsform stellen logische Löschblöcke die kleinste Speichereinheit oder den kleinsten Speicherblock dar, der von einer Speichersteuerung als Reaktion auf den Empfang eines Löschbefehls gelöscht werden kann. Wenn die Speichersteuerung in einer solchen Ausführungsform einen Löschbefehl erhält, der einen bestimmten logischen Löschblock spezifiziert, kann die Speichersteuerung jeden physischen Löschblock innerhalb des logischen Löschblocks gleichzeitig löschen. Es sei angemerkt, dass physische Löschblöcke innerhalb eines gegebenen logischen Löschblocks als zusammenhängend innerhalb eines physischen Adressraums betrachtet werden können, obwohl sie sich in getrennten Dies befinden. Somit kann der Begriff „zusammenhängend“ nicht nur auf Daten anwendbar sein, die innerhalb desselben physischen Mediums gespeichert sind, sondern auch auf Daten, die auf getrennten Medien gespeichert sind.
  • Daher kann in einigen Ausführungsformen die Speichersteuerung 104 so eingerichtet sein, dass sie Daten deplatziert schreibt. Wie hier verwendet, bezieht sich das „deplatzierte“ Schreiben von Daten auf das Schreiben von Daten auf einen oder mehrere andere Medienspeicherorte anstatt des Überschreibens der Daten „am Ort“ (z. B. Überschreiben des ursprünglichen physischen Standorts der Daten). Das deplatzierte Ändern von Daten kann Schreibverstärkung vermeiden, da die mit den zu ändernden Daten auf dem Löschblock existierenden validen Daten nicht gelöscht und wieder kopiert werden müssen. Darüber hinaus kann das deplatzierte Schreiben von Daten das Löschen aus dem Latenzpfad vieler Speichervorgänge verhindern (z. B. ist die Löschlatenz nicht mehr Teil des kritischen Pfads eines Schreibvorgangs).
  • Die Verwaltung eines Datenblocks durch einen Speichermanager schließt das spezifische Adressieren eines bestimmten Datenblocks für einen Lesevorgang, Schreibvorgang oder Wartungsvorgang ein. „Wartungsvorgang“ nimmt Bezug auf einen Vorgang, der auf einer nichtflüchtigen Speichervorrichtung durchgeführt wird, die eingerichtet, ausgelegt, kalibriert oder angeordnet ist, um die Lebensdauer der nichtflüchtigen Speichervorrichtung und/oder der darauf gespeicherten Daten zu verbessern oder zu verlängern.
  • Eine Blockspeichervorrichtung kann n Blöcke, die für die Benutzerdatenspeicherung auf den Speichermedien zur Verfügung stehen, einer logischen Adresse, die von 0 bis n nummeriert ist, zuordnen. In bestimmten Blockspeichervorrichtungen können die logischen Adressen zwischen 0 und n pro Volume oder Partition liegen. „Logische Adresse“ nimmt Bezug auf jeden Identifikator zur Bezugnahme auf eine Speicherressource (z. B. Daten), einschließlich, aber nicht beschränkt auf: eine logische Blockadresse (LBA), Zylinder/Kopf/Sektor-Adresse (CHS), einen Dateinamen, einen Objekt-Identifikator, einen Inode, einen UUID (Universally Unique Identifier), einen GUID (Globally Unique Identifier), einen Hash-Code, eine Signatur, einen Indexeintrag, einen Bereich, eine Ausdehnung oder Ähnliches. Eine logische Adresse zeigt nicht den physischen Ort von Daten auf dem Speichermedium an, sondern ist ein abstrakter Bezug auf die Daten.
  • Bei herkömmlichen Blockspeichervorrichtungen wird eine logische Adresse direkt einem bestimmten Datenblock auf physischen Speichermedien zugeordnet. Bei herkömmlichen Blockspeichervorrichtungen wird jeder Datenblock einem bestimmten Satz physischer Sektoren auf den physischen Speichermedien zugeordnet. Bestimmte Speichervorrichtungen weisen jedoch logische Adressen nicht direkt oder notwendigerweise bestimmten physischen Datenblöcken zu. Diese Speichervorrichtungen können eine herkömmliche Blockspeicherschnittstelle emulieren, um Kompatibilität mit einem Blockspeicherclient 112 aufrechtzuerhalten.
  • In einer Ausführungsform stellt die Speichersteuerung 104 eine Block-E/A-Emulationsschicht bereit, die als Blockvorrichtungsschnittstelle oder API dient. In dieser Ausführungsform kommuniziert der Speicherclient 112 mit der Speichervorrichtung über diese Blockvorrichtungsschnittstelle. In einer Ausführungsform empfängt die Block-E/A-Emulationsschicht Befehle und logische Adressen vom Speicherclient 112 gemäß dieser Blockvorrichtungsschnittstelle. Infolgedessen sorgt die Block-E/A-Emulationsschicht für die Kompatibilität der Speichervorrichtung mit einem Blockspeicherclient 112.
  • In einer Ausführungsform kommuniziert der Speicherclient 112 mit der Speichersteuerung 104 über eine Host-Schnittstelle, die eine direkte Schnittstelle umfasst. In dieser Ausführungsform tauscht die Speichervorrichtung direkt Informationen aus, die für nichtflüchtige Speichervorrichtungen spezifisch sind. „Nichtflüchtige Speichervorrichtung“ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, jedes Element oder jeden Schaltkreis, die bzw. der so eingerichtet ist, dass sie bzw. er eine veränderbare physikalische Eigenschaft beibehält, die verwendet wird, um einen binären Wert von Null oder eins darzustellen, nachdem eine primäre Stromquelle entfernt wurde. Beispiele für eine nichtflüchtige Speichervorrichtungen schließen ein Festplattenlaufwerk (HDD), ein Solid-State-Laufwerk (SSD), nichtflüchtige Speichermedien und dergleichen ein, sind aber nicht darauf beschränkt.
  • Eine Vorrichtung, die eine direkte Schnittstelle verwendet, kann Daten im Speicher-Die 106 unter Verwendung einer Vielzahl von organisatorischen Konstrukten speichern, einschließlich, aber nicht beschränkt auf Blöcke, Sektoren, Seiten, logische Blöcke, logische Seiten, Löschblöcke, logische Löschblöcke, ECC-Codewörter, logische ECC-Codewörter oder in jedem anderen Format oder jeder anderen Struktur, die für die technischen Eigenschaften des Speicher-Dies 106 vorteilhaft ist. „Eigenschaft“ nimmt Bezug auf jede Eigenschaft, jedes Merkmal, jede Qualität oder jedes Attribut eines Objekts oder einer Sache. Beispiele für Eigenschaften schließen unter anderem Zustand, Betriebsbereitschaft, Nichtbetriebsbereitschaft, Größe, Gewicht, Zusammensetzung, Satz von Merkmalen und dergleichen ein, sind aber nicht darauf beschränkt.
  • Die Speichersteuerung 104 empfängt eine logische Adresse und einen Befehl von dem Speicherclient 112 und führt den entsprechenden Vorgang in Bezug auf das Speicher-Die 106 durch. Die Speichersteuerung 104 kann eine Block-E/A-Emulation, eine direkte Schnittstelle oder beides unterstützen.
  • 2 ist ein Blockdiagramm einer beispielhaften Speichervorrichtung 102. „Speichervorrichtung“ bezieht sich auf jede Hardware, jedes System, Subsystem, jede Schaltung, Komponente, jedes Modul, jedes nichtflüchtige Speichermedium, jede Festplatte, jedes Speicherarray, jede Einrichtung oder Vorrichtung, die so eingerichtet, programmiert, entworfen oder konstruiert ist, dass sie Daten für eine bestimmte Zeit speichert und die Daten in der Speichervorrichtung behält, während die Speichervorrichtung keine Energie von einer Stromversorgung verbraucht. Beispiele für Speichervorrichtungen schließen ein, ohne darauf beschränkt zu sein: ein Festplattenlaufwerk, FLASH-Speicher, MRAM-Speicher, eine Solid-State-Speichervorrichtung, Just a Bunch Of Disks (JBOD), Just a Bunch Of Flash (JBOF), eine externe Festplatte, eine interne Festplatte und dergleichen.
  • Die Speichervorrichtung 102 kann eine Speichersteuerung 104 und ein Speicherarray 202 einschließen. Jedes Speicher-Die 106 in dem Speicherarray 202 kann eine Die-Steuerung 204 und mindestens ein nichtflüchtiges Speicherarray 206 in Form eines dreidimensionalen Speicherarrays sowie Lese-/Schreibschaltungen 208 einschließen. Ein „dreidimensionales Speicherarray“ nimmt Bezug auf eine physische Anordnung von Komponenten eines Speicherarrays, die im Gegensatz zu einem zweidimensionalen (2D) Speicherarray steht. 2D-Speicherarrays sind entlang einer ebenen Oberfläche eines Halbleiterwafers oder eines anderen Substrats ausgebildet. Ein dreidimensionales (3D) Speicherarray erstreckt sich von der Waferoberfläche/dem Wafersubstrat nach oben und schließt im Allgemeinen Stapel oder Spalten von Speicherzellen ein, die sich in z-Richtung nach oben erstrecken. In einem 3D-Speicherarray weisen Wortleitungen Schichten auf, die übereinander gestapelt sind, wobei sich das Speicherarray nach oben erstreckt. Verschiedene 3D-Anordnungen sind möglich. In einer Anordnung ist eine NAND-Kette vertikal mit einem Ende (z. B. Source) an der Waferoberfläche und dem anderen Ende (z. B. Drain) an der Oberseite ausgebildet.
  • „Schwellenspannung“ nimmt Bezug auf einen Spannungspegel, der, wenn er an eine Gate-Elektrode eines Transistors angelegt wird, bewirkt, dass der Transistor einen Strom zwischen der Drain-Elektrode und der Source-Elektrode leitet.
  • Folglich ist ein nichtflüchtiges Speicherarray ein Speicherarray mit Speicherzellen, die so eingerichtet sind, dass eine Eigenschaft (z. B. Schwellenspannungspegel, Widerstandspegel, Leitfähigkeit usw.) der Speicherzelle, die zur Darstellung gespeicherter Daten verwendet wird, eine Eigenschaft der Speicherzelle bleibt, ohne dass eine Stromquelle zur Aufrechterhaltung der Eigenschaft erforderlich ist.
  • Ein Speicherarray ist unter Verwendung einer Zeilenkennung und einer Spaltenkennung adressierbar. Ein Fachmann erkennt, dass ein Speicherarray den Satz von Speicherzellen innerhalb einer Ebene, den Satz von Speicherzellen innerhalb eines Speicher-Dies, den Satz von Speicherzellen innerhalb eines Satzes von Ebenen, den Satz von Speicherzellen innerhalb eines Satzes von Speicher-Dies, den Satz von Speicherzellen innerhalb eines Speicherpakets, den Satz von Speicherzellen innerhalb eines Satzes von Speicherpaketen oder mit anderen bekannten Speicherzellensatz-Architekturen und -Konfigurationen aufweisen kann.
  • Ein Speicherarray kann einen Satz von Speicherzellen auf einer Reihe von Organisationsebenen innerhalb eines Speichers oder Speichersystems einschließen. In einer Ausführungsform können Speicherzellen innerhalb einer Ebene zu einem Speicherarray organisiert sein. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Ebenen eines Speicher-Dies zu einem Speicherarray organisiert werden. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Speicher-Dies einer Speichervorrichtung zu einem Speicherarray organisiert sein. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Speichervorrichtungen eines Speichersystems zu einem Speicherarray organisiert sein.
  • Das nichtflüchtige Speicherarray 206 ist durch Wortleitungen über einen Zeilendecoder 210 und durch Bitleitungen über einen Spaltendecoder 212 adressierbar. „Bitleitung“ nimmt Bezug auf eine Schaltungsstruktur, die eingerichtet ist, um an eine Spalte eines Speicherarrays eine Spannung zu liefern und/oder einen Strom zu leiten. In einer Ausführungsform weist die Spalte eine NAND-Kette oder Speicherkette auf und kann auch als Kanal bezeichnet werden. In einer Ausführungsform wird die Spalte als NAND-Kette bezeichnet und die NAND-Kette weist einen Kanal auf. In einer Ausführungsform ist eine Bitleitung mit einer NAND-Kette an einem Drainende oder einer Drainseite der NAND-Kette verbunden. Ein Speicherarray kann eine Bitleitung für jede Speicherzelle entlang der Wortleitungen des Speicherarrays aufweisen. „Wortleitung“ nimmt Bezug auf eine Struktur innerhalb eines Speicherarrays, das einen Satz von Speicherzellen umfasst. Das Speicherarray ist so eingerichtet, dass die aktiven Speicherzellen der Wortleitung während eines Lesevorgangs gelesen oder abgetastet werden. Analog ist das Speicherarray so eingerichtet, dass die aktiven Speicherzellen der Wortleitung während eines Lesevorgangs gelesen oder abgetastet werden. Eine Wortleitung kann auch kurz als physische Seite oder Seite bezeichnet werden.
  • „Kanal“ nimmt Bezug auf eine Struktur innerhalb eines Speicherarrays, die sich von einer Sourceseite zu einer Drainseite erstreckt. In einer Ausführungsform ist ein Kanal eine vertikale Spalte innerhalb eines Speicherarrays, die einen leitenden Pfad zwischen einer Sourceleitung, die mit einem Ende einer NAND-Kette gekoppelt ist, und einer Bitleitung, die mit dem anderen Ende der NAND-Kette gekoppelt ist, bildet. Ein Kanal kann aus einer Vielzahl von Materialien gebildet werden, einschließlich z. B. Polysilizium.
  • In einer Ausführungsform erzeugt ein Kanal innerhalb einer NAND-Kette einen leitenden Pfad durch Aktivierung einer oder mehrerer Speicherzellen (z. B. einer oder mehrerer ausgewählter Speicherzellen und nicht ausgewählter Speicherzellen) entlang der NAND-Kette und einer oder mehrerer Steuerstrukturen (z. B. Auswahlgates (Source und/oder Drain) zwischen einer Sourceleitung, die mit einem Ende (z. B. der Sourceseite) der NAND-Kette verbunden ist, und einem Abtastverstärker oder einer Bitleitung, die mit dem anderen Ende (z. B. der Drainseite) der NAND-Kette verbunden ist.
  • „Auswahlgate“ nimmt Bezug auf einen Transistor, der strukturell und/oder elektrisch so eingerichtet ist, dass er als Schalter fungiert, um eine erste elektrische Struktur, die mit einem Sourceanschluss des Transistors verbunden ist, mit einer zweiten elektrischen Struktur, die mit dem Drainanschluss verbunden ist, elektrisch zu verbinden. Bei der Funktion als Schalter wird der Transistor hierin als „Auswahlgate‟ bezeichnet und dient dazu, (selektiv) zu „gaten“ oder zu steuern, wann und in welcher Menge ein Strom fließt oder eine Spannung zwischen der ersten elektrischen Struktur und der zweiten elektrischen Struktur hindurchgeht. Je nach Kontext können Verweise auf das Auswahlgate hierin auf den gesamten Transistor oder auf den Gateanschluss des Transistors Bezug nehmen.
  • Die Lese-/Schreibschaltungen 208 enthalten mehrere Abtastblöcke SB1, SB2, ..., SBp (Abtastschaltkreise) und ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird. „Schaltkreis“ nimmt auf elektrische Schaltkreise mit mindestens einer diskreten elektrischen Schaltung Bezug, wobei der elektrische Schaltkreis mindestens eine integrierte Schaltung hat, wobei der elektrische Schaltkreis mindestens eine anwendungsspezifische integrierte Schaltung hat, wobei der Schaltkreis eine Universal-Rechenvorrichtung ausbildet, die durch ein Computerprogramm eingerichtet ist (z. B. einen Universalcomputer, der durch ein Computerprogramm eingerichtet ist, das zumindest teilweise Prozesse oder Vorrichtungen ausführt, die hierin beschrieben sind, oder einen Mikroprozessor, der durch ein Computerprogramm eingerichtet ist, das zumindest teilweise Prozesse oder Vorrichtungen ausführt, die hierin beschrieben sind), wobei der Schaltkreis eine Speichervorrichtung ausbildet (z. B. Formen von Direktzugriffsspeichern), oder wobei der Schaltkreis eine Kommunikationsvorrichtung ausbildet (z. B. ein Modem, einen Kommunikationsschalter oder eine optisch-elektrische Ausrüstung). In bestimmten Ausführungsformen bildet jede Speicherzelle über eine Zeile des Speicherarrays zusammen eine physische Seite. „Lese-/Schreibschaltung“ nimmt Bezug auf eine Vorrichtung, eine Komponente, ein Element, Modul, System, Subsystem, eine Schaltung, Logik, Hardware oder einen Schaltkreis, der zum Lesen von Daten von einem Speichermedium und zum Schreiben von Daten auf ein Speichermedium, wie z. B. Speicherzellen eines Speicherarrays, eingerichtet und/oder betreibbar ist.
  • Eine physische Seite kann Speicherzellen entlang einer Zeile des Speicherarrays für eine einzelne Ebene oder für ein einzelnes Speicher-Die einschließen. In einer Ausführungsform schließt das Speicher-Die ein Speicherarray ein, das aus zwei gleich großen Ebenen besteht. In einer Ausführungsform schließt eine physische Seite einer Ebene eines Speicher-Dies vier Datenblöcke (z. B. 16 KB) ein. In einer Ausführungsform schließt eine physische Seite (auch „Die-Seite“ genannt) eines Speicher-Dies zwei Ebenen mit jeweils vier Datenblöcken (z. B. 32 KB) ein.
  • Befehle und Daten werden zwischen dem Host 108 und der Speichersteuerung 104 über einen Datenbus 114 und zwischen der Speichersteuerung 104 und dem einen oder den mehreren Speicher-Dies 106 über den Bus 116 übertragen. Die Speichersteuerung 104 kann die in 1 näher beschriebenen logischen Module aufweisen.
  • Das nichtflüchtige Speicherarray 206 kann zweidimensional (2D - in einer einzigen Fertigungsebene angeordnet) oder dreidimensional (3D - in mehreren Fertigungsebenen angeordnet) sein. Das nichtflüchtige Speicherarray 206 kann ein oder mehrere Arrays von Speicherzellen einschließlich eines 3D-Arrays aufweisen. In einer Ausführungsform kann das nichtflüchtige Speicherarray 206 eine monolithische dreidimensionale Speicherstruktur (3D-Array) aufweisen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat, wie einem Wafer, ohne dazwischenliegende Substrate ausgebildet sind. Das nichtflüchtige Speicherarray 206 kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellenarrays ausgebildet ist, die über einen aktiven Bereich verfügen, der über einem Siliziumsubstrat angeordnet ist. Das nichtflüchtige Speicherarray 206 kann sich in einem nichtflüchtigen Festkörperlaufwerk mit Schaltkreisen befinden, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich der zugehörige Schaltkreis oberhalb oder innerhalb des Substrats befindet.
  • Wortleitungen können Abschnitte der Schichten mit Speicherzellen aufweisen, die in Schichten über dem Substrat angeordnet sind. Mehrere Wortleitungen können auf einer einzigen Schicht mittels Gräben oder andere nicht leitende isolierende Merkmale gebildet werden.
  • Die Die-Steuerung 204 arbeitet mit den Lese-/Schreibschaltungen 208 zusammen, um Speichervorgänge auf Speicherzellen des nichtflüchtigen Speicherarrays 206 auszuführen, und schließt eine Zustandsmaschine 214, einen Adressdecoder 216 und eine Leistungssteuerung 218 ein. Die Zustandsmaschine 214 stellt eine Steuerung von Speichervorgängen auf Speicherebene bereit. „Die-Steuerung“ nimmt Bezug auf einen Satz von Schaltungen, Schaltkreisen, Logik oder Komponenten, die eingerichtet sind, um den Betrieb eines Die zu verwalten. In einer Ausführungsform ist die Die-Steuerung eine integrierte Schaltung. In einer anderen Ausführungsform ist die Die-Steuerung eine Kombination diskreter Komponenten. In einer anderen Ausführungsform ist die Die-Steuerung eine Kombination von einer oder mehreren integrierten Schaltungen und einer oder mehreren diskreten Komponenten.
  • Der Adressdecoder 216 stellt eine Adressschnittstelle zwischen der vom Host oder einer Speichersteuerung 104 verwendeten Adresse und der vom Zeilendecoder 210 und Spaltendecoder 212 verwendeten Hardwareadresse bereit. „Hardware“ nimmt Bezug auf Funktionselemente, die als analoger und/oder digitaler Schaltkreis enthalten ist.
  • Die Leistungssteuerung 218 steuert die Leistung und Spannungen, die den verschiedenen Steuerleitungen während der Speichervorgänge zugeführt werden. „Steuerleitung“ nimmt Bezug auf eine Struktur, Schaltung, einen Schaltkreis und/oder eine zugehörige Logik, die so eingerichtet ist, dass ein elektrischer Strom und/oder eine elektrische Spannung von einer Quelle zu einem Ziel übertragen wird. In bestimmten Ausführungsformen werden analoge Spannungen, Ströme, Vorspannungen und/oder digitale Signale, die über eine Steuerleitung zugeführt oder entladen werden, zur Steuerung von Schaltern, Auswahlgates und/oder anderen elektrischen Komponenten verwendet. Bestimmte Steuerleitungen können einen spezifischen Namen aufweisen, basierend darauf, welche Teile einer Schaltung die Steuerleitung steuert oder wo die Steuerleitung mit anderen Schaltungen koppelt oder diese verbindet. Beispiele von benannten Steuerleitungen schließen Wortleitungen, Bitleitungen, Source-Steuerleitungen, Drain-Steuerleitungen und dergleichen ein.
  • „Source-Steuerleitung“ nimmt Bezug auf eine Steuerleitung, die für den Betrieb eines Auswahlgates (z. B. Einschalten des Auswahlgates, Aktivieren und Ausschalten, Deaktivieren) zum Koppeln einer Sourceseite einer NAND-Kette mit einer Sourceleitung und/oder einer anderen Schaltung eingerichtet ist.
  • „Sourceseite“ nimmt Bezug auf das Ende einer NAND-Kette oder die Seite eines dreidimensionalen Speicherarrays, das/die mit der Sourceschicht oder -leitung auf einem Speicher-Die verbunden ist. Der Begriff stammt von dem Sourceanschluss eines Feldeffekttransistors oder einer ähnlichen Komponente. In einer Kette von Transistoren kann der Sourceanschluss des ersten Transistors mit einer Sourceleitung, einer Masse oder einer anderen Leitung mit niedrigerer Spannung verbunden sein, und der Drainanschluss kann mit dem Sourceanschluss des nächsten Transistors verbunden sein, der Drainanschluss dieses Transistors kann mit dem nächsten Sourceanschluss verbunden sein usw., wobei schließlich der Drainanschluss des letzten Transistors mit einer Signal- oder Stromleitung mit höherer Spannung verbunden ist. Der Gateanschluss jedes Transistors kann dann steuern, ob Strom durch den Transistor von Source zu Drain und durch die Kette von Sourceleitung zu Bitleitung fließt oder nicht.
  • „Sourceleitung“ nimmt Bezug auf eine Struktur, Schaltung, einen Schaltkreis und/oder eine zugehörige Logik, die so eingerichtet ist, dass ein elektrischer Strom und/oder eine elektrische Spannung von einer Versorgung zu einem oder mehreren Kanälen von zugehörigen NAND-Ketten übertragen wird. In bestimmten Ausführungsformen ist eine Sourceleitung so eingerichtet, dass sie eine Spannung an mehrere NAND-Ketten gleichzeitig überträgt und/oder eine Spannung von mehreren NAND-Ketten gleichzeitig entlädt. In anderen Ausführungsformen ist eine Sourceleitung so eingerichtet, dass sie eine Spannung an mehrere NAND-Ketten in Reihe überträgt und/oder eine Spannung von mehreren NAND-Ketten in Reihe entlädt.
  • In bestimmten Ausführungsformen ist eine Source-Steuerleitung an ein oder mehrere sourceseitige Auswahlgates gekoppelt, die zwischen der Sourceleitung und einer oder mehreren NAND-Ketten liegen, und die Source-Steuerleitung steuert, ob Spannung oder Strom zwischen der Sourceleitung und der NAND-Kette fließt. In einer solchen Ausführungsform kann die Sourceleitung auch als gemeinsame Sourceleitung bezeichnet werden.
  • „Sourceseitiges Auswahlgate“ nimmt Bezug auf ein Auswahlgate, das als Schalter fungiert, um eine Sourceleitung elektrisch mit einer NAND-Kette und/oder einem Kanal einer NAND-Kette zu verbinden. Beispiele von Sourceleitungen schließen sourceseitige Auswahlgates, Dummy-Wortleitung-Auswahlgates und dergleichen ein. In bestimmten Ausführungsformen kann ein sourceseitiges Auswahlgate nur sourceseitige Auswahlgates aufweisen (z. B. SGS0, SGS1 usw.). In anderen Ausführungsformen kann ein sourceseitiges Auswahlgate nur Dummy-Wortleitung-Auswahlgates aufweisen (z. B. DWLSO, DWLS1 usw.). In noch anderen Ausführungsformen kann ein sourceseitiges Auswahlgate sowohl sourceseitige Auswahlgates (z. B. SGS0, SGS1 usw.) als auch Dummy-Wortleitung-Auswahlgates (z. B. DWLSO, DWLS1 usw.) aufweisen. Ein Auswahlgate, das zwischen der Sourceleitung und der NAND-Kette auf der Sourceseite der NAND-Kette positioniert ist, wird als ein sourceseitiges Auswahlgate bezeichnet.
  • „Drain-Steuerleitung“ nimmt Bezug auf eine Steuerleitung, die für den Betrieb eines Auswahlgates (z. B. Einschalten des Auswahlgates, Aktivieren und Ausschalten, Deaktivieren) zum Koppeln einer Drainseite einer NAND-Kette mit einer Bitleitung und/oder einer Abtastschaltung eingerichtet ist. „Drainseite“ nimmt Bezug auf das Ende einer NAND-Kette oder die Seite eines dreidimensionalen Speicherarrays, das mit der/den Bitleitung(en) verbunden ist. Der Begriff stammt von dem Drainanschluss eines Feldeffekttransistors oder einer ähnlichen Komponente. In einer Kette von Transistoren kann der Sourceanschluss des ersten Transistors mit einer Sourceleitung, einer Masse oder einer anderen Leitung mit niedrigerer Spannung verbunden sein, und der Drainanschluss kann mit dem Sourceanschluss des nächsten Transistors verbunden sein, der Drainanschluss dieses Transistors kann mit dem nächsten Sourceanschluss verbunden sein usw., wobei schließlich der Drainanschluss des letzten Transistors mit einer Signal- oder Stromleitung mit höherer Spannung verbunden ist. Der Gateanschluss jedes Transistors kann dann steuern, ob Strom durch den Transistor von Source zu Drain und durch die Kette von Sourceleitung zu Bitleitung fließt oder nicht.
  • „Drainseitiges Auswahlgate“ nimmt Bezug auf ein Auswahlgate, das als Schalter fungiert, um eine Bitleitung elektrisch mit einer NAND-Kette und/oder einem Kanal einer NAND-Kette zu verbinden. Ein Auswahlgate, das zwischen der Bitleitung und der NAND-Kette auf der Drainseite der NAND-Kette positioniert ist, wird als ein drainseitiges Auswahlgate bezeichnet.
  • „Logik“ nimmt Bezug auf Maschinenspeicherschaltkreise, nicht vorübergehende maschinenlesbare Medien und/oder Schaltkreise, die über ihr Material und/oder über ihre Material-Energie-Konfiguration Steuer- und/oder Verfahrenssignale und/oder Einstellungen und Werte (wie Widerstand, Impedanz, Kapazität, Induktivität, Strom-/Spannungswerte usw.) aufweisen, die angewendet werden können, um den Betrieb einer Vorrichtung zu beeinflussen. Magnetische Medien, elektronische Schaltungen, elektrischer und optischer Speicher (sowohl flüchtig als auch nichtflüchtig) und Firmware sind Beispiele für Logik. Logik schließt insbesondere reine Signale oder Software per se aus (schließt jedoch nicht Maschinenspeicher aus, die Software aufweisen und dadurch wichtige Konfigurationen ausbilden).
  • Die Leistungssteuerung 218 und/oder Lese-/Schreibschaltungen 208 können Treiber für Wortleitungen, Source-Gate-Auswahl-Transistoren (SGS-Transistoren), Drain-Gate-Auswahl-Transistoren (DGS-Transistoren), Bitleitungen, Substrate (in 2D-Speicherstrukturen), Ladepumpen und Quellleitungen einschließen. In bestimmten Ausführungsformen kann die Leistungssteuerung 218 einen plötzlichen Leistungsverlust erkennen und vorbeugende Maßnahmen ergreifen. Die Leistungssteuerung 218 kann verschiedene Erstspannungsgeneratoren (z. B. die Treiber) einschließen, um die hierin beschriebenen Spannungen zu erzeugen. Die Erfassungsblöcke können Bitleitungstreiber und Erfassungsverstärker in einem Ansatz einschließen.
  • In einigen Implementierungen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von dem nichtflüchtigen Speicherarray 206 unterscheiden, als mindestens eine Steuerschaltung oder Speichersteuerung betrachtet werden, die zur Durchführung der hierin beschriebenen Techniken eingerichtet ist. Zum Beispiel kann eine Steuerschaltung eine beliebige der Komponenten oder eine Kombination aus einer Die-Steuerung 204, Zustandsmaschine 214, Adressdecoder 216, Spaltendecoder 212, Leistungssteuerung 218, Abtastblöcken SB1, SB2, ..., SBp, Lese/Schreibschaltungen 208, Speichersteuerung 104 usw. einschließen.
  • In einer Ausführungsform ist der Host 108 eine Rechenvorrichtung (z. B. ein Laptop, ein Desktop, ein Smartphone, ein Tablet, eine Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speichervorrichtungen (RAM, ROM, Flash-Speicher, Festplattenlaufwerk, Festkörperspeicher) einschließt, die einen prozessorlesbaren Code (z. B. eine Software) zum Programmieren der Speichersteuerung 104 speichert, um die hierin beschriebenen Verfahren durchzuführen. Der Host kann auch zusätzlichen Systemspeicher, eine oder mehrere Ein-/Ausgabeschnittstellen und/oder eine oder mehrere Ein-/Ausgabevorrichtungen in Kommunikation mit dem einem oder den mehreren Prozessoren sowie andere in der Technik bekannte Komponenten einschließen.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherzellen und für die Kommunikation mit den Speicherzellen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherzellen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherzellen und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Speichersteuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Speichersteuerungschip und/oder auf demselben Substrat wie die Speicherzellen angeordnet sein.
  • Ein Fachmann wird erkennen, dass die offenbarten Techniken und Vorrichtungen nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt sind, sondern alle relevanten Speicherstrukturen in dem Geist und innerhalb des Schutzumfangs der Technologie abdecken, wie hierin beschrieben und wie es von einem Fachmann verstanden wird.
  • 3 veranschaulicht ein Speicherarray 300 gemäß einer Ausführungsform. Das Speicherarray 300 weist das Die 0 302, Die 1 304 usw. bis zu N 306 auf. In der veranschaulichten Ausführungsform ist das Speicherarray 300 in logische Löschblöcke (LEBs) organisiert (hierin auch als „Metablöcke“ („MBs“) oder „Superblöcke“ bezeichnet), wie durch den logischen Löschblock/Metablock 0 308 und den logischen Löschblock/Metablock N 310 gezeigt. Diese LEBs schließen mehrere physische Löschblöcke (PEBs) ein, veranschaulicht durch den physischen Löschblock 0 312, den physischen Löschblock n-1 314, den physischen Löschblock n 316, den physischen Löschblock 0 318, den physischen Löschblock n-1 320, den physischen Löschblock n 322, den physischen Löschblock 0 324, den physischen Löschblock n-1 326 und den physischen Löschblock n 328. Ein LEB kann PEBs innerhalb einer einzigen Zeile einschließen, wie z. B. logischer Löschblock/Metablock 0 308, der die PEBs in der PEB0-Zeile über alle Dies einschließt. Alternativ kann ein LEB PEBs aus verschiedenen Zeilen einschließen, wie z. B. den logischen Löschblock/Metablock N 310, der den physischen Löschblock n 316, den physischen Löschblock n 322 und andere PEBs über die Dies hinweg einschließt, einschließlich des physischen Löschblocks n-1 326.
  • Die physischen Löschblöcke können sich in separaten Speicher-Dies befinden, gezeigt als Die 0 302, Die 1 304 und Die n 306. In bestimmten Ausführungsformen kann ein Die in Ebenen unterteilt werden. Die physischen Löschblöcke können unter Verwendung einer zweistufigen Speicherarchitektur aufgebaut und somit durch eine Fertigungsfuge geteilt sein, wie z.B. die Fertigungsfuge 370, die den physischen Löschblock 0 312 teilt, die Fertigungsfuge 372, die den physischen Löschblock 0 318 teilt, und die Fertigungsfuge 374, die den physischen Löschblock 0 324 teilt. Die physischen und logischen Seiten auf beiden Seiten einer Fertigungsfuge können zu einem Unterblock gruppiert werden, wie z. B. der abgebildete Unterblock 0 376 und Unterblock 1 378.
  • Der Fachmann kennt die Beziehung und die Unterschiede zwischen physischen Löschblöcken und logischen Löschblöcken und kann auf den einen oder den anderen oder auf beide Bezug nehmen, indem er die Kurzversion Löschblock, Block oder Speicherblock verwendet. Der Fachmann versteht aus dem Kontext der Referenz zu einem Löschblock, ob es sich um einen physischen oder logischen Löschblock (oder Metablock oder Superblock) handelt. Die Konzepte und Techniken, die in der Technik verwendet und in den Ansprüchen angegeben werden, können gleichermaßen auf physische Löschblöcke oder logische Löschblöcke angewandt werden.
  • Wie hierin verwendet, bezieht sich eine „physische“ Struktur wie eine physische Seite, eine physische Wortleitung, ein physischer Löschblock, eine physische Ebene, ein physisches Speicher-Die oder dergleichen auf eine einzelne physische Struktur, die eine Steuerung, Verwaltung, ein Modul oder eine andere logische Komponente eines Systems auf einer oder mehreren physischen Abstraktionsebenen in der Organisation der Vorrichtung, des Systems oder der Einrichtung steuern und/oder mit dieser kommunizieren kann. In ähnlicher Weise bezieht sich eine „logische“ Struktur wie eine logische Seite, logische Wortleitung, ein logischer Löschblock, eine logische Ebene, ein logisches Speicher-Die oder dergleichen auf eine Sammlung von zwei oder mehr einzelnen physischen Strukturen desselben Typs, die eine Steuerung, Verwaltung, ein Modul oder eine andere logische Komponente des Systems auf einer Ebene innerhalb einer oder mehrerer physischer Abstraktionsebenen in der Organisation der Vorrichtung, des Systems oder der Einrichtung steuern und/oder mit diesen kommunizieren kann. Es ist zu beachten, dass sowohl eine „physische“ Struktur als auch eine „logische“ Struktur einzeln oder gemeinsam unterschiedliche Adressen aufweisen können, die dazu verwendet werden können, eine „physische“ Struktur oder „logische“ Struktur im Verhältnis zu anderen Strukturen ähnlicher Art und ähnlichen Typs zu identifizieren. „Physische Seite“ nimmt Bezug auf die kleinste physische Einheit oder den kleinsten Speicherblock innerhalb eines bestimmten Speicher-Dies und/oder -Ebene, wie z. B. eines Speicher-Dies, das in einem einzigen Vorgang beschrieben werden kann. In bestimmten Ausführungsformen weist eine physische Seite eine Wortleitung auf, die eine Zeile in einem Speicherarray von Speicherzellen darstellt.
  • Ein logischer Löschblock wie der logische Löschblock/Metablock 0 308 ist weiter in mehrere logische Seiten unterteilt (logische Seite 330, logische Seite 332, logische Seite 334, logische Seite 336 und logische Seite 338), die wiederum mehrere physische Seiten einschließen, wie die physische Seite 0 340, physische Seite 1 342, physische Seite 2 344, physische Seite n-1 346, physische Seite n 348, physische Seite 0 350, physische Seite 1 352, physische Seite 2 354, physische Seite n-1 356, physische Seite n 358, physische Seite 0 360, physische Seite 1 362, physische Seite 2 364, physische Seite n-1 366 und physische Seite n 368.
  • In einer Ausführungsform stellt eine physische Seite den kleinsten Speicherblock innerhalb eines gegebenen Dies dar, der zu einem gegebenen Zeitpunkt beschrieben werden kann. In einer Ausführungsform ist eine logische Seite der kleinste beschreibbare Speicherblock, der von der Speicherungssteuerung unterstützt wird. (In einer Ausführungsform kann die Speichersteuerung einen Puffer einschließen, der so eingerichtet ist, dass er bis zu einer logischen Seite Daten speichern kann; nach dem Füllen des Puffers kann die Speicherungssteuerung den Inhalt des Puffers gleichzeitig auf eine einzige logische Seite schreiben.) In einigen Fällen kann die Aufteilung einer logischen Seite auf mehrere Dies zu schnelleren Zugriffszeiten für einen Datensatz führen, wenn auf mehrere Dies parallel zugegriffen wird. Wie bei den logischen Löschblöcken, können die Konfigurationen der logischen Seiten auf beliebige physische Seiten auf einem Die oder über eine Vielzahl von Speicher-Dies hinweg abgebildet werden.
  • In einigen Ausführungsformen kann eine Speichersteuerung (wie die in 1 veranschaulichte Speichersteuerung 104) Metadaten, auch als Medienmerkmale bezeichnet, mit einem oder mehreren Speicherblöcken (logische Löschblöcke, physische Löschblöcke, logische Seiten und/oder physische Seiten, Unterblöcke usw.) assoziieren. „Metadaten“ nimmt Bezug auf Systemdaten, die zur Erleichterung des Betriebs einer nichtflüchtigen Speichervorrichtung verwendet werden können. Metadaten stehen z. B. im Gegensatz zu Daten, die von einer Anwendung produziert werden (d. h. „Anwendungsdaten“) oder Formen von Daten, die von einem Betriebssystem als „Benutzerdaten“ betrachtet werden würden.
  • Beispielsweise kann eine Zone oder ein logischer Löschblock Metadaten einschließen, die ohne Einschränkung Nutzungsstatistiken (z. B. die Anzahl der an dieser Zone oder diesem logischen Löschblock durchgeführten Programmier-Löschzyklen), Zustandsstatistiken (z. B. ein Wert, der angibt, wie oft beschädigte Daten aus dieser Zone oder diesem logischen Löschblock gelesen wurden), Sicherheits- oder Zugriffskontrollparameter, Sequenzinformationen (z. B. ein Sequenzindikator), ein Hinweissymbol für persistente Metadaten (z. B. eines, das die Aufnahme in einen atomaren Speichervorgang anzeigt), eine Transaktionskennung oder dergleichen angeben. In einigen Ausführungsformen schließt eine Zone oder ein logischer Löschblock Metadaten ein, die die logischen Adressen identifizieren, für die die Zone oder der logische Löschblock Daten speichert, sowie die jeweilige Anzahl der gespeicherten Datenblöcke / Datenpakete für jeden logischen Block oder Sektor innerhalb einer Zone.
  • In bestimmten Ausführungsformen weisen die Metadaten eine Quertemperatur für eine Zone, eine durchschnittliche Quertemperatur für offene Zonen der nichtflüchtigen Speichervorrichtung, eine Temperaturänderungsrate, eine durchschnittliche Anzahl von Programmier-Löschungen für eine Zone, eine unkorrigierbare Bitfehlerrate (Uncorrectable Bit Error Rate, UBER) für eine Zone, eine Anzahl von Ausfallbits für eine Zone und eine Ladungsleckrate auf.
  • „Medienmerkmal“ nimmt Bezug auf ein Attribut oder eine Statistik für einen Satz bestimmter Speicherzellen, z. B. eine Anzahl von Programmier-/Löschzyklen für den Satz von Speicherzellen, eine Lese-Anzahl für den Satz von Speicherzellen, eine Erhaltungszeit seit einem vorhergehenden Schreibvorgang für den Satz von Speicherzellen (auch als Datenerhaltungszeit bezeichnet), eine Verweilzeit für den Satz von Speicherzellen, z. B. einen logischen oder physischen Löschblock (z. B, eine Zeit zwischen einer Programmierung eines Löschblocks und einer Löschung des Löschblocks), ein Durchschnitt mehrerer vorheriger Verweilzeiten für den Satz von Speicherzellen, eine Fehlerstatistik für den Satz von Speicherzellen oder dergleichen.
  • Eine Medieneigenschaft für einen Satz von Speicherzellen kann im Wesentlichen statisch oder dynamisch sein und sich im Laufe der Zeit ändern. In einer Ausführungsform ist eine Medieneigenschaft eine Statistik, Heuristik, ein mathematisches Modell, eine Transformation oder ein anderer Deskriptor, der mit einem Attribut des nichtflüchtigen Speichermediums verbunden ist.
  • In einer Ausführungsform schließt eine Medieneigenschaft eine Marke, ein Modell, einen Hersteller, eine Produktversion oder dergleichen für die Speichervorrichtung und/oder für das nichtflüchtige Speichermedium ein oder bezieht sich darauf. Eine Medieneigenschaft kann in einer weiteren Ausführungsform eine Umgebungsbedingung oder eine Verwendung der Speichervorrichtung und/oder des nichtflüchtigen Speichermediums einschließen oder sich darauf beziehen, wie z. B. eine Temperatur, einen Anwendungsfall (z. B. einen Cache-Nutzungsfall, einen Archivierungsfall, einen Server-Anwendungsfall, einen Unternehmens-Anwendungsfall, einen Verbraucher-Anwendungsfall usw.) oder dergleichen.
  • Die Speichersteuerung kann Metadaten verwalten, die logische Adressen identifizieren, für die ein logischer Löschblock Daten speichert, sowie die jeweilige Anzahl der gespeicherten Datenpakete für jeden logischen Löschblock, Datenblock oder Sektor innerhalb eines logischen Adressraums. „Logischer Adressraum“ nimmt Bezug auf eine logische Repräsentation von Speicherressourcen. Der logische Adressraum kann eine Vielzahl (z. B. einen Bereich) von logischen Adressen aufweisen. Eine Speichersteuerung kann Metadaten oder Medienmerkmaldaten an einer Vielzahl von Orten speichern, einschließlich auf nichtflüchtigen Speichermedien, im flüchtigen Speicher, in einer mit jedem logischen Löschblock gespeicherten Struktur oder dergleichen.
  • 4 ist ein Schaltplan, der eine NAND-Kette 400 umfassend drainseitige Auswahlgates 402, sourceseitige Auswahlgates 404 und eine Reihe oder einen Satz von Speicherzellen 406 (z. B. n=4, 8, 16 oder höher) darstellt, die durch ihre Sourceanschlüsse und Drainanschlüsse verkettet sind. „NAND-Kette“ nimmt Bezug auf eine Schaltung, die eine Vielzahl von Speicherzellen einschließt. Eine NAND-Kette schließt eine Reihe von Speicherzellen ein, die als Transistor (z. B. n=4, 8, 16 oder höher) eingerichtet sind, die durch die Source-Elektroden und Drain-Elektroden jeder Speicherzelle verkettet sind. Mindestens ein Paar von Auswahltransistoren (z. B. Auswahlgates) verbindet die Speichertransistorkette, die NAND-Kette, über die Drain-Elektrode der NAND-Kette mit einer Vorspannungsquelle und über die Source-Elektrode der NAND-Kette mit einer Erdungsquelle.
  • Während der Einfachheit halber 10 Speicherzellen in der NAND-Kette 400 veranschaulicht werden, können einige NAND-Ketten eine beliebige Anzahl von Speicherzellen einschließen (z. B. zweiunddreißig, vierundsechzig oder mehr). Die Speicherzellen 406 können von der Drainseite 408 zu der Sourceseite 410 verkettet werden. Auf der Drainseite 408 kann die NAND-Kette 400 mit einer Bitleitung 412 verbunden sein. Auf der Sourceseite 410 kann die NAND-Kette 400 mit einer Sourceleitung 414 verbunden sein. Eine Architektur für ein Speicherarray mit einer NAND-Struktur kann eine beträchtliche Anzahl von NAND-Ketten einschließen.
  • Ein oder mehrere drainseitige Auswahltransistoren (z. B. drainseitiges Auswahlgate 402) verbinden die Speichertransistorketten über den Drainanschluss der NAND-Kette mit einer Vorspannung und über den Sourceanschluss mit einer Erdungsquelle.
  • Wenn in einem Speicherarray das sourceseitige Auswahlgate 404 eingeschaltet wird, ist der Sourceanschluss mit einer Sourceleitung 414 gekoppelt. In ähnlicher Weise ist beim Einschalten der sourceseitigen Auswahlgates 404 der Drainanschluss der NAND-Kette mit einer Bitleitung 412 des Speicherarrays gekoppelt. Source-Steuerleitungen 416 (SGS und SGSB) können zur Steuerung der sourceseitigen Auswahlgates 404 (Transistoren) verwendet werden. Die NAND-Kette 400 ist in einer Ausführungsform mit der Bitleitung 412 durch drainseitige Auswahlgates 402 verbunden, wie gezeigt. Die drainseitigen Auswahlgates 402 können durch eine Drain-Steuerleitung 418 (SGD) gesteuert werden. In einigen Ausführungsformen sind die Source-Steuerleitungen 416 und Drain-Steuerleitungen 418 (zusammen als Steuerleitungen bezeichnet) nicht unbedingt gemeinsam unter den NAND-Ketten eingerichtet; Das heißt, unterschiedliche Steuerleitungen können für verschiedene NAND-Ketten bereitgestellt werden.
  • Die Speicherzellen 406 können Transistoren sein, die ein Steuergate und eine Ladungsfängerschicht enthalten. Das Steuergate jedes Speichertransistors kann die Steuerung von Lese- und Schreibvorgängen ermöglichen. Die Ladungsfängerschicht kann ein Ladungsspeicherelement zum Speichern einer bestimmten Ladungsmenge aufweisen, um einen beabsichtigten Speicherzustand darzustellen. „Speicherzustand“ nimmt Bezug auf einen Zustand einer Speicherzelle, der so ausgelegt und/oder eingerichtet ist, dass er eine Codierung für einen oder mehrere Datenbitwerte darstellt. In bestimmten Ausführungsformen kann der Speicherzustand durch einen Speichervorgang geändert werden. In einer nichtflüchtigen Speicherzelle behält die Speicherzelle ihren Speicherzustand ohne Stromquelle bei. Die Steuergates von zugehörigen Speichertransistoren einer Zeile eines Speicherarrays (eines von jeder NAND-Kette) sind alle mit der gleichen Wortleitung verbunden. In ähnlicher Weise ermöglicht ein Steuergate jedes der Auswahltransistoren den kontrollierten Zugriff auf die NAND-Kette über deren Source- bzw. Drainanschluss.
  • Wenn eine adressierte Speicherzelle (z.B. Speicherzelle 406) innerhalb einer NAND-Kette gelesen oder während des Programmierens geprüft wird, wird ihr Steuergate mit einer entsprechenden Spannung versorgt, die auch als Referenzspannung oder Lesespannung bezeichnet wird. „Lesespannung“ nimmt Bezug auf einen Spannungspegel, der eingerichtet ist, um zu testen oder zu prüfen, welche Speicherzellen auf dem Spannungspegel leiten. In bestimmten Ausführungsformen können die Speicherzellen Transistoren aufweisen, und die Lesespannung ist ein Spannungspegel bei oder oberhalb der Schwellenspannung für die Speicherzellen, die bewirkt, dass die Speicherzelle einen Strom leitet.
  • In bestimmten Ausführungsformen kann in Abhängigkeit von der Art der Codierung, die zur Speicherung von Daten auf der Speicherzelle verwendet wird, und der Anzahl der auf jeder Speicherzelle codierten Bits ein einziger Lese-/Abtastvorgang unter Verwendung einer einzigen Lesespannung für den Speicherzustand der Speicherzelle bestimmend sein. In anderen Ausführungsformen kann eine Anzahl von Lese-/Abtastvorgängen, die jeweils mit unterschiedlichen Lesespannungspegeln durchgeführt werden, verwendet werden, um den Speicherzustand der Speicherzelle zu bestimmen. Der bestimmte Speicherzustand kann dann in eine Darstellung der in der Speicherzelle gespeicherten Datenbits decodiert werden. „Lesespannung“ ist eine Kurzbezeichnung für eine „Leseschwellenspannung“. „Lesepegel“ ist ein anderer Begriff, der allgemein zur Beschreibung einer „Lesespannung“ verwendet wird, und die beiden Begriffe werden hierin synonym verwendet.
  • Gleichzeitig werden die restlichen nicht adressierten Speicherzellen der NAND-Kette 400 durch Anlegen einer ausreichenden Spannung (auch als Durchlassspannung bezeichnet) an ihre Steuergates vollständig eingeschaltet. Auf diese Weise wird wirksam ein leitender Pfad von der Source der einzelnen Speicherzelle zum Sourceanschluss (z. B. Sourceleitung 414) der NAND-Kette 400 und ebenso für den Drain der einzelnen Speicherzelle zum Drainanschluss (z. B. Bitleitung 412) der Speicherzelle erzeugt. Dieser leitende Pfad kann sich durch eine oder mehrere Strukturen einer NAND-Kette bewegen und wird hierin als Kanal 420 bezeichnet. Auf dem physischen Speicher-Die erstreckt sich ein Kanal 420 von der Sourceseite 410 zu der Drainseite 408 der NAND-Kette 400.
  • „Durchlassspannung‟ nimmt Bezug auf einen Spannungspegel, der so eingerichtet ist, dass er Speicherzellen aktiviert (zum Leiten veranlasst), unabhängig vom Speicherzustand, der auf der Speicherzelle gespeichert/aufrechterhalten wird. Eine Durchlassspannung wird auf eine ausreichend hohe Spannung gesetzt, so dass Speicherzellen mit einer hohen Schwellenspannung (z. B. größer als 6 Volt) aktiviert/leitend werden, wenn die Durchlassspannung an ein Gate der als Transistor implementierten Speicherzelle angelegt wird.
  • In bestimmten Ausführungsformen besteht der Zweck einer Durchlassspannung darin, einen Leitungspfad zwischen einem Abtastverstärker, der mit einer Bitleitung an einem Ende einer NAND-Kette (auch als Kanal bezeichnet) verbunden ist, die die Speicherzelle einschließt, und einer Sourceleitung zu erzeugen, die am anderen Ende der NAND-Kette angeschlossen ist. Der Leitungspfad kann erwünscht sein, damit eine Speicherzelle entlang der NAND-Kette, die mit einer ausgewählten Wortleitung gekoppelt ist, gelesen, abgetastet oder programmiert werden kann. In einer Ausführungsform wird eine Durchlassspannung an nicht ausgewählte Wortleitungen angelegt, so dass ein Speichervorgang an Speicherzellen einer ausgewählten Wortleitung durchgeführt werden kann. In bestimmten Ausführungsformen wird eine Durchlassspannung nicht verwendet, um einen Speicherzustand einer Speicherzelle zu lesen.
  • Wie veranschaulicht, weist jede der Wortleitungen 422 WLO-WLn, wobei WLn die Wortleitung ist, die den drainseitigen Auswahlgates 402 am nächsten liegt, eine oder mehrere Speicherzellen 406 auf. Jede Bitleitung 412 und die entsprechende NAND-Kette 400 in einem Speicherarray kann die Spalten der NAND-Kette 400, des Speicherblocks, des Löschblocks oder ähnliches aufweisen. Diese Spalten können auch als Kanäle bezeichnet werden. Die Wortleitungen 422 WLO-WLn weisen in einigen Ausführungsformen die Zeilen des Speicherarrays 400, des Speicherblocks, des Löschblocks oder dergleichen auf. Jede Wortleitung WLO-WLn verbindet in einigen Ausführungsformen die Steuergates jeder Speicherzelle 406 in einer Zeile. Alternativ können die Steuergates durch die Wortleitungen 422 WLO-WLn selbst bereitgestellt werden. In einigen Ausführungsformen kann eine Wortleitung Dutzende, Hunderte, Tausende, Millionen oder dergleichen von Speicherzellen 406 einschließen. In bestimmten Ausführungsformen können die Wortleitungen 422 WLO-WLn eine Fertigungsfuge einschließen, wie z. B. die Fertigungsfuge 370, die in der Mitte zwischen den Wortleitungen 422 WLO -WLn angeordnet ist.
  • In einem Speicherarray können Wortleitungen so organisiert oder aufgebaut sein, dass die Verwendung in einer sequentiellen Reihenfolge erleichtert wird, so dass das Speicherarray effizient genutzt wird. „Sequentielle Reihenfolge“ nimmt Bezug auf einen Satz von Schritten, Vorgängen, Teilschritten oder Ereignissen, die so angeordnet sind, dass sie in einer bestimmten Sequenz ausgeführt werden.
  • Dieselben oder unterschiedliche Sequenzen können für jeden der Speichervorgänge verwendet werden. In einer Ausführungsform können z. B. die Wortleitungen eines Speicherarrays in sequentieller Reihenfolge programmiert werden, beginnend mit einer Wortleitung, die einer Sourceleitung am nächsten liegt, und mit jeder benachbarten unprogrammierten Wortleitung sequentiell in Richtung einer Wortleitung fortschreiten, die einem Auswahlgate-Drain und/oder einer Bitleitung am nächsten liegt. In einem anderen Beispiel können in einer Ausführungsform die Wortleitungen eines Speicherarrays in sequentieller Reihenfolge programmiert werden, beginnend mit einer Wortleitung, die einem Auswahlgate-Drain und/oder einer Bitleitung am nächsten liegt, und mit jeder benachbarten unprogrammierten Wortleitung sequentiell in Richtung einer Wortleitung fortschreiten, die einer Sourceleitung und/oder einem Source-Auswahlgate am nächsten liegt. In noch anderen Beispielen kann eine Sequenz zur Auswahl, welche Wortleitung nach einer letzten programmierten Wortleitung programmiert werden soll, einem anderen als dem sequentiellen Muster folgen.
  • In einem Speicherarray kann ein Kopplungseffekt unerwünschte Auswirkungen auf verschiedene Strukturen und/oder Schaltungskomponenten des Speicherarrays, einschließlich Speicherzellen, NAND-Kettenkanäle, Auswahlgates und dergleichen haben. „Kopplungseffekt“ nimmt Bezug auf eine Änderung der Vorspannung, des elektrischen Potentials, der Spannung und/oder des elektromagnetischen Feldes zwischen zwei Schaltungen, Abschnitten von Schaltungen, Schaltkreisen oder anderen elektronischen Komponenten, einschließlich Halbleitern. Daher kann hierin ein Kopplungseffekt aufgrund dieser unerwünschten Wirkungen mindestens teilweise als eine Art Störung bezeichnet werden. Je nachdem, wann und/oder wie ein Kopplungseffekt auftritt, kann ein Kopplungseffekt auch als Programmierstörung, Programmstörung oder Lesestörung bezeichnet werden. „Programmierstörung“ nimmt Bezug auf eine Art von elektronischer und/oder magnetischer Störung, die während, nach oder als Ergebnis eines Programmier-Speichervorgangs und/oder einer Phase eines Programmier-Speichervorgangs erzeugt wird.
  • Ein Kopplungseffekt kann Auswahlgates betreffen, die zur Steuerung eines Vorspannungspegels innerhalb der Kanäle von NAND-Ketten verwendet werden. Zum Beispiel kann eine Vorspannung auf einer oder mehreren Steuerleitungen, die mit den Auswahlgates gekoppelt sind, ein ausreichend starkes Potential auf einem Spannungspegel innerhalb eines Kanals erzeugen, damit die Spannung des Kanals aufgrund des Einflusses des elektromagnetischen Feldes, das durch das Signal in den Steuerleitungen erzeugt wird, nach oben (oder unten, je nach Vorzeichen der Vorspannung) koppelt.
  • Auf diese Weise kann die hierin beanspruchte Vorrichtung eine Die-Steuerung aufweisen, die so eingerichtet ist, dass sie Wortleitungen des dreidimensionalen Speicherarrays programmiert, indem sie jede Wortleitung in einer Sequenz programmiert, die von der Vielzahl von drainseitigen Dummy-Wortleitungen 424 zu den sourceseitigen Dummy-Wortleitungen 426 fortschreitet. „Dummy-Wortleitung“ nimmt Bezug auf eine Struktur innerhalb eines Speicherarrays, die wie eine Wortleitung eingerichtet ist und Daten in einer Speicherzelle speichert. Eine Dummy-Wortleitung wird jedoch nicht regulär zum Speichern von Daten verwendet und wird stattdessen innerhalb des Speicherarrays positioniert, gesteuert und verwaltet, um elektrische Interferenzen oder Störungen von elektrischen Schaltungen, die um die Dummy-Wortleitung herum positioniert sind, zu kompensieren, abzuschwächen oder zu puffern. In einer Ausführungsform schließt eine Dummy-Wortleitung einen Satz von Speicherzellen ein, die an einem Schnittpunkt einer Dummy-Wortleitung und einer NAND-Kette positioniert sind, wobei jede Speicherzelle durch ein Dummy-Wortleitung-Auswahlgate mit der Dummy-Wortleitung gekoppelt ist. Ein über die Dummy-Wortleitung gesendetes Steuersignal kann eine Durchlassspannung bei oder über einer Schwellenspannung für die Dummy-Wortleitung-Auswahlgates dergestalt aufweisen, dass die Dummy-Wortleitung das Gate als aktiviert auswählt, wodurch eine Vorspannung oder ein Strom innerhalb des Kanals der NAND-Kette und zwischen einem Sourceanschluss und einem Drainanschluss der Speicherzelle fließen kann. Auf diese Weise kann die Dummy-Wortleitung als Steuerleitung dienen.
  • In einer Ausführungsform ist jede Speicherzelle so eingerichtet, dass sie Daten speichert. Beispielsweise kann, wenn ein digitales Datenbit gespeichert wird, der Bereich möglicher Schwellenspannungen („Vt“) jeder Speicherzelle in zwei Bereiche unterteilt werden, denen logische Daten „1“ und „0“ zugewiesen sind. Wie hierin verwendet, nimmt die Schwellenwertspannung auf die Größe der an das Gate einer Speicherzelle angelegten Spannung Bezug, die ausreicht, um die Speicherzelle zu aktivieren. In Ausführungsformen, in denen die Speicherzelle ein NAND-Transistor ist, ist die Schwellenwertspannung eine ausreichende Spannung, die an einen Gateanschluss des Transistors angelegt wird und den Transistor veranlasst, Strom zwischen seinem Sourceanschluss und seinem Drainanschluss zu leiten. In einem Beispiel eines Flash-Speichers vom NAND-Typ kann die Vt negativ sein, nachdem die Speicherzellen gelöscht sind und als logische „1“ definiert werden. In einer Ausführungsform ist die Vt nach einem Programmiervorgang positiv und als logische „0“ definiert.
  • Wenn die Vt negativ ist und ein Lesevorgang versucht wird, werden in einigen Ausführungsformen die Speicherzellen eingeschaltet, um anzuzeigen, dass eine logische „1“ gespeichert wird. Wenn die Vt positiv ist und ein Lesevorgang versucht wird, wird in einer weiteren Ausführungsform eine Speicherzelle nicht eingeschaltet, was anzeigt, dass eine Logische „0“ gespeichert ist. Jede Speicherzelle kann auch mehrere Informationspegel speichern, wie zum Beispiel mehrere Bits digitaler Daten. In einer solchen Ausführungsform wird der Bereich des Vt-Werts in die Anzahl von Datenebenen unterteilt. Wenn beispielsweise vier Informationspegel in jeder Speicherzelle gespeichert werden können, werden vier Vt-Bereiche den Datenwerten „11“, „10“, „01“ und „00“ zugewiesen.
  • In einem Beispiel eines Speichers vom NAND-Typ kann die Vt nach einem Löschvorgang negativ und als „11“ definiert sein. Positive Vt-Werte können für die Zustände „10“, „01“ und „00“ verwendet werden. In einer Ausführungsform hängt die spezifische Beziehung zwischen den in die Speicherzellen programmierten Daten und den Schwellenwertspannungsbereichen der Speicherzellen von dem für die Speicherzellen verwendeten Datencodierungsschema ab.
  • 5 veranschaulicht ein Speicherarray 500 mit Unterblock 0 502 und Unterblock 1 504 gemäß einer Ausführungsform. Das Speicherarray 500 kann mehrere NAND-Ketten-Sätze 506 aufweisen. Die NAND-Ketten-Sätze 506 können eine Gruppierung von NAND-Ketten aufweisen, die sich in die Seite für ein dreidimensionales Speicherarray erstrecken. Jede NAND-Kette der NAND-Ketten-Sätze 506 kann mehrere Wortleitungen und Dummy-Wortleitungen implementieren, wie z. B. die unteren Wortleitungen 508 und die oberen Wortleitungen 510, die auf beiden Seiten einer Fertigungsfuge 512 angeordnet sind.
  • Bei Verwendung im Unterblockmodus kann eine Speicherarray-Struktur wie die hier veranschaulichte in zwei Schwester-Unterblöcke auf beiden Seiten der Fertigungsfuge 512 unterteilt werden, wie z. B. Unterblock 0 502 und Unterblock 1 504, wie gezeigt. In anderen Speicherarchitekturen können mehr als zwei Schwester-Unterblöcke implementiert werden, abhängig von der Struktur und den Fähigkeiten des verwendeten Speicher-Dies.
  • „Schwester-Unterblock“ nimmt Bezug auf einen von zwei oder mehr Unterblöcken, die sich innerhalb desselben physischen Löschblocks befinden. In bestimmten Ausführungsformen können ein Unterblock und sein Schwester-Unterblock zusammen strukturell nicht anders als ein einziger physischer Löschblock sein, der sie einschließt. In solchen Ausführungsformen kann eine Speichersteuerung unabhängige Speichervorgänge für jeden Schwester-Unterblock durchführen, und zwar durch die Art und Weise, wie die Speichersteuerung die Steuerleitungen verwaltet, die mit dem physischen Löschblock gekoppelt sind, der die Schwester-Unterblöcke einschließt. In bestimmten Ausführungsformen kann eine Die-Steuerung Steuerleitungen, die mit dem physischen Löschblock, der die Schwester-Unterblöcke einschließt, gekoppelt sind, durch für den physischen Löschblock definierte Konfigurationseinstellungen verwalten.
  • „Konfigurationseinstellung“ nimmt auf einen Parameter eines Satzes von Speicherzellen Bezug, der über eine Schnittstelle modifizierbar ist. Beispiele für eine Konfigurationseinstellung schließen ein, ohne darauf beschränkt zu sein, einen Leseschwellenwert oder Lesepegel, einen Schreib- oder Programmierschwellenwert, einen Löschschwellenwert, eine Anzahl von Programmierimpuls-Iterationen, die zum Programmieren verwendet werden sollen, eine Schritt-Einstellung zwischen Programmierimpulsen, eine Programmierimpulsdauer, ein Durchlassspannungspegel, ein Auswahlgate-Spannungspegel, ein Löschspannungspegel, eine Löschimpulsdauer, eine Löschvorgangsmethodik, ob eine Speicherzelle ein Bit oder mehr als ein Bit speichert, oder dergleichen. In bestimmten Ausführungsformen können die Konfigurationseinstellungen als „Trimm“-Parameter bezeichnet werden. Diese Trimm-Parameter können Einstellungen und Anpassungen einschließen, die von einer Speichersteuerung vorgenommen werden, um Unterschiede in Sätzen von Speicherzellen aufgrund von Prozessschwankungen, Spannungspegelunterschieden und Temperaturunterschieden (PVT) zu berücksichtigen.
  • In bestimmten Ausführungsformen schließen die Konfigurationseinstellungen Spannungspegel und Timing-Einstellungen für ein oder mehrere Source-Auswahlgates, Drain-Auswahlgates, nicht ausgewählte Wortleitungen, eine ausgewählte Wortleitung, eine Sourceleitung, eine Bitleitung und dergleichen für eine oder mehrere Steuerleitungen eines nichtflüchtigen Speicherarrays von Speicherzellen ein.
  • Eine Schnittstelle zum Modifizieren einer Konfigurationseinstellung kann ein programmierbares Datenregister, eine Speicherstelle, eine Befehlsschnittstelle eines Steuerbusses für das nichtflüchtige Speicherarray, eine API eines Gerätetreibers der Speichervorrichtung, einen Steuerparameter für eine Speichersteuerung oder dergleichen einschließen.
  • In bestimmten Ausführungsformen werden die Konfigurationseinstellungen für ein Speicherarray 500 vor dem Betreiben des Unterblocks 0 502 unabhängig vom Unterblock 1 504 eingestellt. Alternativ können die Konfigurationseinstellungen so eingestellt werden, dass Unterblock 0 502 und Unterblock 1 504 als ein einziger physischer Löschblock oder logischer Löschblock behandelt werden. In bestimmten Ausführungsformen kann das Speicherarray 500 eine oder zwei Dummy-Wortleitungen auf beiden Seiten der Datenwortleitung einschließen, z. B. DWLS 0 und DWLS1 auf der Sourceseite, DWLD 0 und DWLD1 auf der Drainseite, DWLL - eine Dummy-Wortleitung auf der Unterseite der Fertigungsfuge 512, und DWLU - eine Dummy-Wortleitung auf der Oberseite der Fertigungsfuge 512.
  • 6 veranschaulicht ein System 600 gemäß einer Ausführungsform. Dieses System weist die Funktionalität für die hierin offenbarte Lösung auf, einschließlich einer Vorrichtung 102, einer Speichersteuerung 104 und eines Satzes von Speicher-Dies 106. Die Speichersteuerung 104 kann eine Schreibdatenpipeline 602, eine Lesedatenpipeline 604, einen Stromverwalter 606, eine Steuerschaltung 608, einen Blockzuweisungsverwalter 610 und einen Verwalter offener Blöcke 612 aufweisen.
  • Die Speichervorrichtung 102, Speichersteuerung 104 und das Speicher-Die 106 können wie zuvor beschrieben effektiv funktionieren. Die Speicher-Dies 106 können in einem Speicherarray angeordnet sein, das mindestens eine Zeile und mindestens zwei Spalten aufweist. Um die offenbarte Lösung zu implementieren, kann die Speichersteuerung 104 Schreibbefehle 614 von einem Host annehmen und diese Schreibbefehle in der hierin offenbarten Weise durch Implementierung der im Detail beschriebenen Logik verarbeiten. Die Speicher-Dies 106 können in Sätze von logischen Löschblöcken aufgeteilt werden, die jeweils einen physischen Löschblock von jedem Speicher-Die einer Zeile des nichtflüchtigen Speicherarrays umfassen. Jeder physische Löschblock, der einen logischen Löschblock bildet, kann zwei Schwester-Unterblöcke aufweisen, wie in 5 veranschaulicht.
  • Die Speichersteuerung 104 kann eine Schreibdatenpipeline 602 zum Empfangen von Schreibbefehlen 614 und zum Schreiben von Daten (sowohl System- als auch Benutzerdaten) in den Festkörperspeicher (z. B. Speichervorrichtung 102) und eine Lesedatenpipeline 604 zum Abrufen von Daten (System- und/oder Benutzerdaten), die auf dem Festkörperspeicher (z. B. Speichervorrichtung 102) gespeichert sind, einschließen. Die Schreibdaten-Pipeline 602 kann einen Paketierer einschließen, der Daten (auch als Datensegment bezeichnet) empfängt, die in den Solid-State-Speicher geschrieben werden sollen, und ein oder mehrere Datenpakete in der Größe des Solid-State-Speichers erstellt. Jedes Datenpaket kann einen Dateikopf und Daten aus dem Datensegment einschließen. Die Schreibdatenpipeline 602 kann einen ECC-Generator einschließen, der vor dem Schreiben der Datenpakete in den Solid-State-Speicher ein oder mehrere ECC-Codewörter für ein oder mehrere vom Paketierer empfangene Datenpakete erzeugt. Die Schreibdatenpipeline 602 kann in der offenbarten Lösung Schreibbefehle 614 empfangen, die logische Blockadressen einschließen, und kann so eingerichtet werden, dass sie die Daten des Schreibbefehls 614 in einen Satz logischer Löschblöcke im Unterblockmodus schreibt.
  • Die Lesedatenpipeline 604 kann einen ECC-Decoder einschließen, der einen oder mehrere ECC-Codewörter, die aus dem Solid-State-Speicher abgerufen wurden, in ein oder mehrere Datenpakete konvertiert und Fehler in den dekodierten Daten korrigiert und/oder identifiziert. Die Lesedatenpipeline 604 kann einen Entpaketierer einschließen, der dekodierte Daten (die auch fehlerkorrigiert sein können) vom ECC-Decoder empfängt und das eine oder die mehreren Datenpakete in Daten (Benutzer- oder Systemdaten) umwandelt, die zur Bedienung eines Lesebefehls verwendet werden können.
  • Der Stromverwalter 606 verfolgt oder überwacht die Schreibbefehle 614, die von der Speichervorrichtung 102 empfangen werden, um Informationen über die Workloads zu bestimmen, die die Speichervorrichtung 102 verarbeitet. „Strom“ bezieht sich auf einen Satz von Ein-/Ausgabe-Speicherbefehlen (E/A) und zugehörigen Daten, die ein gemeinsames Workload-Attribut aufweisen. Wenn das Workload-Attribut beispielsweise besagt, dass die EA-Speicherbefehle für einen sequenziellen Workload-Typ gelten, kann der dem sequenziellen Workload-Typ zugeordnete Datenstrom als sequenzieller Datenstrom bezeichnet werden. Wenn das Workload-Attribut besagt, dass die EA-Speicherbefehle für einen wahlfreien Workload-Typ gelten, kann der dem wahlfreien Workload-Typ zugeordnete Datenstrom als wahlfreier Datenstrom bezeichnet werden.
  • „Workload-Attribut“ nimmt Bezug auf jede Qualität, jede Charakteristik, jedes Attribut, jedes Merkmal, jedes Verhalten, jede Eigenheit oder jede Eigenschaft über eine Workload. Ein Workload-Attribut kann explizit identifiziert und definiert werden, z. B. durch einen Speicherungs-Client. Alternativ kann ein Workload-Attribut impliziert werden, das basierend auf anderen Informationen abgeleitet werden kann. Beispiele für Workload-Attribute schließen ein, ohne darauf beschränkt zu sein: Aktualisierungs-/Zugriffsfrequenz, ob auf die Daten, auf die im Speicherbefehl zugegriffen wird, gemäß sequentiell aufsteigender, sequentiell absteigender oder zufällig identifizierter LBAs zugegriffen wird, LBA-Referenz-Clustering oder andere ähnliche Attribute.
  • „Workload-Typ“ nimmt Bezug auf eine Bezeichnung für einen Typ von Speicherbefehlen, die eine Speichersteuerung von einem Host erhält. Es können verschiedene Workload-Typen existieren, die auf verschiedenen Metriken basieren, einschließlich der Dienstqualität und der Reihenfolge der empfangenen logischen Blockadressen in einer Sequenz von geordneten Speicherbefehlen. Beispiele für Workload-Typen schließen den sequenziellen Workload-Typ und den wahlfreien Workload-Typ ein.
  • Die Speichervorrichtung 102 kann andere Speicherbefehle zusätzlich zu Schreibbefehlen 614 handhaben. Speicherbefehle, wie sie hierin verwendet werden, weisen Lesebefehle, Schreibbefehle, Wartungsbefehle, Diagnosebefehle, Testmodusbefehle und alle anderen Befehle auf, die ein Speichersteuerung 104 empfangen kann. Eine „Workload“, wie hierin verwendet, ist die Anzahl und Art der Schreibbefehle 614, die von der Speichervorrichtung 102 empfangen und/oder bedient werden, sowie das Resultat oder die Ergebnisse der Bedienung dieser Schreibbefehle 614. Die Workload kann auch jegliche Statistik über die Schreibbefehle 614 einschließen. In einer Ausführungsform führt der Stromverwalter 606 Statistiken über die Schreibbefehle 614, einschließlich, aber nicht beschränkt auf, wie viele Schreibbefehle in einem bestimmten Zeitraum empfangen wurden, wie viele Schreibbefehle erfolgreich waren, wie viele Schreibbefehle fehlgeschlagen sind und dergleichen.
  • Während der Stromverwalter 606 die Schreibbefehle 614 (zusammen mit anderen Speicherbefehlen, die auch als Eingabe-EA-Transaktionen bezeichnet werden) überwacht, verfolgt der Stromverwalter 606 ein oder mehrere Workload-Attribute, die die Workloads definieren, beschreiben oder charakterisieren. Wie hierin verwendet, ist ein „Workload-Attribut“ jede Qualität, jede Charakteristik, jedes Attribut, jedes Merkmal, jedes Verhalten, jede Eigenheit oder jede Eigenschaft über eine Workload. Ein Workload-Attribut kann explizit identifiziert und definiert werden, z. B. durch einen Speicherungs-Client. Alternativ kann ein Workload-Attribut impliziert werden, das basierend auf anderen Informationen abgeleitet werden kann.
  • In einer Ausführungsform überprüft oder analysiert der Stromverwalter 606 ein oder mehrere Workload-Attribute und bestimmt Muster, Ähnlichkeiten, Beziehungen und/oder Gemeinsamkeiten zwischen Speicherbefehlen, die auf den Workload-Attributen basieren. In bestimmten Ausführungsformen werden diese Muster, Ähnlichkeiten, Beziehungen und/oder Gemeinsamkeiten als Hinweise bezeichnet und können zur Verbesserung der Leistung der nichtflüchtigen Speichervorrichtung 102 verwendet werden. In bestimmten Ausführungsformen bestimmt der Stromverwalter 606 eine Beziehung zwischen Speicherbefehlen oder leitet diese ab. Eine Beziehung ist jede Verbindung oder Assoziation zwischen den Workload-Attributen eines ersten Satzes von Speicherbefehlen in Bezug auf einen zweiten Satz von Speicherbefehlen. In bestimmten Ausführungsformen ist die Beziehung explizit und wird basierend auf einer Überprüfung der Workload-Attribute festgelegt. In anderen Ausführungsformen ist die Beziehung implizit und wird basierend auf einer Überprüfung der Workload-Attribute abgeleitet.
  • Der Stromverwalter 606 im System dieser Offenbarung kann ein Workload-Typ-Attribut für einen Satz von Schreibbefehlen 614 bestimmen. Zu diesem Zweck kann der Stromverwalter 606 die Schreibbefehle 614 überwachen, während sie in Sequenz vom Host empfangen werden. Der Stromverwalter 606 kann dann die logischen Blockadressen der eingehenden Schreibbefehle 614 mit den logischen Blockadressen der vorherigen Schreibbefehle 614 vergleichen. Ein sequenzieller Workload-Typ kann bestimmt werden, wenn die logischen Blockadressen der sequentiellen Schreibbefehle 614 beim Eintreffen in sequentieller Reihenfolge angeordnet sind. „Sequentieller Workload-Typ“ bezieht sich auf einen Satz logischer Blockadressen (LBAs) für empfangene Speicherbefehle dergestalt, dass jeder empfangene Speicherbefehl in einer sequentiellen Reihenfolge auf eine nächste LBA Bezug nimmt.
  • Die Steuerschaltung 608 der Speichersteuerung 104 kann eine Speicherbereinigung 616 einschließen. Jeder logische Löschblock des Speicher-Dies 106 kann so eingerichtet werden, dass er Daten im Unterblockmodus speichert, und kann daher mindestens zwei Schwester-Unterblöcke aufweisen. Die Speicherbereinigung 616 kann gültige Daten aus einem Schwester-Unterblock konsolidieren und die gültigen Daten in einen anderen Speicherblock verschieben. Während eines Speicherbereinigungsvorgangs in einem Schwester-Unterblock können die Daten in einem zugehörigen Schwester-Unterblock in dem zugehörigen Schwester-Unterblock verbleiben und können unbeeinträchtigt bleiben.
  • Der Blockzuweisungsverwalter 610 koordiniert sich mit dem Stromverwalter 606 und dem Verwalter offener Blöcke 612, um einen physischen Ort für das Schreiben von Daten auf das Speicher-Die 106 zu bestimmen. „Blockzuweisungsverwalter“ nimmt Bezug auf jede Hardware, Software, Firmware, Schaltung, Komponente, jedes Modul, jede Logik, jedes Gerät oder jede Vorrichtung, die eingerichtet, programmiert, ausgelegt, angeordnet oder konstruiert ist, um zu bestimmen, wo Daten in einer nichtflüchtigen Speichervorrichtung gespeichert werden sollen. In bestimmten Ausführungsformen bestimmt der Blockzuweisungsverwalter, welcher Speicherblock für eingehende Schreibdaten zu verwenden ist.
  • Der Blockzuweisungsverwalter 610 kann einen aus einem Satz logischer Löschblöcke für Speichervorgänge im Vollblockmodus rekonfigurieren. Zu diesem Zweck kann der Blockzuweisungsverwalter 610 einen Konfigurationsbefehl wie z. B. einen Vollblockmodus-Befehl an das Speicher-Die 106 senden, das den logischen Löschblock einschließt. „Konfigurationsbefehl“ nimmt Bezug auf einen Typ von Speicherbefehl, der eine Speichervorrichtung, Speichersteuerung, Die-Steuerung oder dergleichen anweist, eine oder mehrere Konfigurationseinstellungen zu ändern. „Vollblockmodus-Befehl“ nimmt Bezug auf einen Typ von Konfigurationsbefehl, der eine Speichersteuerung veranlasst, einen Speicherblock als vollständigen logischen Löschblock zu betreiben, wobei der logische Löschblock aus zwei oder mehr physischen Löschblöcken aus zwei oder mehr Speicherebenen und/oder Speicher-Dies besteht. Ein Vollblockmodus-Befehl ist ein entgegengesetzter Befehl zu einem Unterblockmodus-Befehl, bei dem es sich um eine Art von Konfigurationsbefehl handelt, der eine Die-Steuerung veranlasst, einen Speicherblock als Satz von Unterblöcken zu betreiben, die zusammen zwei oder mehr Speicherebenen und/oder Speicher-Dies überspannen. Die Unterblöcke, die jeden Speicherblock bilden, sind eine logische Unterteilung eines physischen Löschblocks.
  • Der Blockzuweisungsverwalter 610 kann Schreibbefehle 614, die den sequenziellen Workload-Typ aufweisen, an den rekonfigurierten logischen Löschblock leiten. Der Blockzuweisungsverwalter 610 kann die Schreibdatenpipeline 602 anweisen, Daten im Vollblockmodus in den neu eingerichteten logischen Löschblock zu schreiben. Das Betreiben des logischen Löschblocks im Vollblockmodus bedeutet, dass beide Schwester-Unterblöcke jedes Speicher-Die des logischen Löschblocks als ein einziger physischer Löschblock verwendet werden. Der Blockzuweisungsverwalter 610 kann die Schreibdatenpipeline 602 anweisen, Daten im Vollblockmodus in den logischen Löschblock zu schreiben, bis Schreibbefehle, die einen wahlfreien Workload-Typ aufweisen, vom Stromverwalter 606 bestimmt/erkannt werden. „Wahlfreier Workload-Typ“ bezieht sich auf einen Satz logischer Blockadressen (LBAs) für empfangene Speicherbefehle dergestalt, dass jeder empfangene Speicherbefehl in einer zufälligen Reihenfolge, pseudo-zufälligen Reihenfolge oder einer nicht-sequentiellen Reihenfolge auf eine nächste LBA Bezug nimmt.
  • Wenn ein wahlfreier Workload-Typ bestimmt wird, können die Konfigurationseinstellungen für die zwei oder mehr Speicher-Dies des Ziel-Speicherblocks dahingehend geändert werden, dass anstatt der Vollblockmodus-Konfigurationseinstellungen Unterblockmodus-Unterblockmodus-Konfigurationseinstellungen verwendet werden. Es sollte beachtet werden, dass das Ändern von Konfigurationseinstellungen ein Vorgang ist, der alle Speicherblöcke eines Speicher-Dies beeinflusst. Mit der offenbarten Lösung können bestimmte Speicherblöcke im Vollblockmodus eingerichtet und verwendet werden, während andere, auf demselben Speicher-Die, im Unterblockmodus eingerichtet und verwendet werden können.
  • „Zielspeicherblock“ nimmt Bezug auf einen Satz von einem oder zwei Metablöcken, die zur Verwendung beim Schreiben von Daten selektiert, ausgewählt, bestimmt oder identifiziert wurden. In einer Ausführungsform weist ein Zielspeicherblock einen einzelnen Metablock auf, der aus Unterblöcken aus zwei oder mehreren Ebenen und/oder Speicher-Dies eines Speicherarrays besteht. In einer anderen Ausführungsform weist ein Zielspeicherblock zwei Metablöcke auf, die aus Schwester-Unterblöcken eines einzelnen physischen Löschblocks aus zwei oder mehreren Ebenen und/oder Speicher-Dies eines Speicherarrays besteht. In einer weiteren Ausführungsform weist ein Zielspeicherblock entweder einen einzelnen Metablock oder zwei Metablöcke (ein Paar von Metablöcken) auf, die zwei oder mehreren Ebenen und/oder Speicher-Dies eines Speicherarrays überspannen. Je nachdem, wie ein Zielspeicherblock verwendet wird, im Vollblockmodus oder Unterblockmodus, weist der Zielspeicherblock entweder einen einzelnen Schwester-Unterblock von jedem Speicher-Die des Speicherarrays oder ein Paar benachbarter Schwester-Unterblöcke von jedem Speicher-Die des Speicherarrays auf.
  • „Vollblockmodus-Konfigurationseinstellung“ nimmt Bezug auf Konfigurationseinstellungen, die so eingerichtet, ausgelegt, angepasst und/oder gesetzt werden, dass Speichervorgänge auf einem Löschblock (einem physischen Löschblock und/oder einem logischen Löschblock) ermöglicht werden, um den Löschblock als Vollblock zu verwenden, der keine Unterblöcke aufweist/einschließt. „Unterblockmodus-Konfigurationseinstellung“ nimmt Bezug auf Konfigurationseinstellungen, die eingerichtet, ausgelegt und/oder gesetzt werden, um Speichervorgänge auf einem Unterblock eines Löschblocks (sowohl eines physischen Löschblocks als auch eines logischen Löschblocks) zu ermöglichen.
  • Zur Umsetzung der offenbarten Lösung kann der Blockzuweisungsverwalter 610 eine Metablockverfolgungstabelle 618 einbeziehen, die in Bezug auf 9 näher beschrieben wird. Die Metablockverfolgungstabelle 618 kann verwendet werden, um einen Zielspeicherblock für eingehende Schreibdaten auf der Grundlage des vom Stromverwalter 606 bestimmten Workload-Typs zu registrieren. Wenn der Stromverwalter 606 bestimmt, dass es sich bei dem Workload um einen sequenziellen Workload-Typ handelt, kann der Blockzuweisungsverwalter 610 einen freien Metablock 620 aus dem Pool freier Metablöcke 622 zur Verwendung als Zielspeicherblock auswählen. „Freier Metablock“ nimmt Bezug auf einen Metablock, der nicht zur Speicherung gültiger Daten verwendet wird und für die Speicherung von Daten aktueller oder zukünftiger Schreibbefehle zur Verfügung steht. „Pool freier Metablöcke“ nimmt auf einen Satz freier Metablöcke Bezug, die zur Verwendung von einer Speichersteuerung identifiziert, vorbereitet und/oder vorgesehen sind.
  • Die Konfigurationseinstellungen für das Speicher-Die 106 des Zielspeicherblocks können eingestellt werden, um anzuzeigen, dass diese Abschnitte des Speicher-Dies 106 im Vollblockmodus arbeiten. In einer Ausführungsform können die Standardkonfigurationseinstellungen anzeigen, dass Speicher-Dies 106 im Unterblockmodus zu betreiben sind, und diese Einstellungen können aktualisiert werden, wenn volle Blöcke benötigt werden. Der Zielspeicherblock kann im Vollblockmodus gelöscht werden, um ihn darauf vorzubereiten, Daten zu empfangen, und dann in der Metablockverfolgungstabelle 618 als ein Vollblock-Speicherblock registriert werden. „Vollblock-Speicherblock“ nimmt Bezug auf ein Paar von Metablöcken, die so eingerichtet sind, dass sie als eine Einheit programmiert und/oder gelöscht werden können. In einer Ausführungsform weist ein Vollblock-Speicherblock zwei Metablöcke auf, die aus Schwester-Unterblöcken eines einzelnen physischen Löschblocks aus zwei oder mehreren Ebenen und/oder Speicher-Dies eines Speicherarrays besteht. Das Registrieren des Zielspeicherblocks in der Metablockverfolgungstabelle 618 kann das Aktualisieren der Metablockverfolgungstabelle 618 einschließen, um den Zielspeicherblock als Vollblock-Speicherblock zu identifizieren und den Zielspeicherblock als Vollblock-Speicherblock zu verwalten, bis der Zielspeicherblock nach dem Empfang von Daten für den Satz von Schreibbefehlen gelöscht wird. In einer Ausführungsform weist der Blockzuweisungsverwalter 610 den Verwalter offener Blöcke 612 an, wo Schreibdaten innerhalb der aktuellen offenen Löschblöcke gespeichert werden sollen.
  • Der Verwalter offener Blöcke 612 verwaltet, welche Metablöcke, die die Speicher-Dies 106 überspannen, offene Metablöcke 624, welche geschlossene Metablöcke 626 und welche freie Metablöcke 620 sind. „Offener Metablock“ nimmt Bezug auf einen Metablock, der eingerichtet ist, um einen Datenblock für einen oder mehrere Schreibbefehle zu empfangen. Üblicherweise schließt ein offener Metablock Speicherplatz für einen oder mehrere zusätzliche Datenblöcke ein. In bestimmten Ausführungsformen kann ein offener Metablock mit einem bestimmten Satz von Daten assoziiert sein, wie beispielsweise einem Strom.
  • Der Verwalter offener Blöcke 612 verfolgt die physische Adresse innerhalb jedes Speicher-Dies 106, wo eine nachfolgende Seite (physisch oder logisch) in diesen bestimmten offenen Metablock 624 geschrieben werden kann, und rückt einen Zeiger vor, der diese physische Adresse verfolgt, während Daten in die offenen Metablöcke 624 geschrieben werden. Der Verwalter offener Blöcke 612 bestimmt, wann die offenen Metablöcke 624 kurz davor sind, voll zu werden, schließt offene Metablöcke 624, um geschlossene Metablöcke 626 zu bilden, wandelt freie Metablöcke 620 in offene Metablöcke 624 um und koordiniert sein Vorgehen mit anderen Komponenten der Speichersteuerung 104, um sicherzustellen, dass genügend freie Metablöcke 620 verfügbar sind. Der Verwalter offener Blöcke 612 kann weiter eingerichtet werden, um einen rekonfigurierten logischen Löschblock im Vollblockmodus zu verwalten.
  • 7 veranschaulicht eine Speichersteuerung 700 gemäß einer Ausführungsform. Die Speichersteuerung 700 weist eine Stromverwaltungsschaltung 702, eine Metablock-Verwaltungsschaltung 704, eine Modusschaltung 706, eine Modusschaltung 708 und eine Lese-/Schreibschaltung 710 auf.
  • Die Stromverwaltungsschaltung 702 kann eingerichtet werden, um Schreibbefehle zu überwachen. Die Stromverwaltungsschaltung 702 kann dabei bestimmen, dass ein Satz von Schreibbefehlen, den sie überwacht, mit einem sequenziellen Workload-Typ korreliert. In einer Ausführungsform kann die Stromverwaltungsschaltung 702 weiter eingerichtet werden, um zu bestimmen, dass Schreibbefehle mit einem wahlfreien Workload-Typ und nicht mit einem sequenziellen Workload-Typ korrelieren.
  • Die Metablock-Verwaltungsschaltung 704 kann eingerichtet werden, um einen freien Metablock zum Empfang von Daten für einen Satz von Schreibbefehlen zu kennzeichnen. Die Metablock-Verwaltungsschaltung 704 kann ferner so eingerichtet werden, dass sie den so gekennzeichneten freien Metablock im Vollblockmodus löscht. Das Löschen eines freien Metablocks im Vollblockmodus bedeutet, dass beide Schwester-Unterblöcke des freien Metablocks in einem einzigen Löschvorgang gelöscht werden. Dieser Löschvorgang ist doppelt so schnell wie das separate Löschen jedes Schwester-Unterblocks des freien Metablocks, z. B. wenn der freie Metablock im Unterblockmodus verwendet wird. Die Metablock-Verwaltungsschaltung 704 kann eingerichtet werden, um einen zweiten freien Metablock zum Empfang von Daten für einen zweiten Satz von Schreibbefehlen zu kennzeichnen. Die Metablock-Verwaltungsschaltung 704 kann dann den zweiten freien Metablock im Unterblockmodus löschen. Die freien Metablöcke können Teilabschnitte einer Vielzahl von Speicher-Dies aufweisen.
  • Die Speicher-Dies können parallel an einen Schnittstellenbus gekoppelt sein, wie in 1 veranschaulicht. Die Modusschaltung 706 kann einen Vollblockmodus-Befehl oder einen Unterblockmodus-Befehl an die Speicher-Dies senden, die Teile des freien Metablocks einschließen. „Unterblockmodus-Befehl“ nimmt Bezug auf einen Typ von Konfigurationsbefehl, der eine Die-Steuerung veranlasst, einen Speicherblock als Satz von Unterblöcken zu betreiben, die zusammen zwei oder mehr Speicherebenen und/oder Speicher-Dies überspannen. Die Unterblöcke, die jeden Speicherblock bilden, sind eine logische Unterteilung eines physischen Löschblocks. Ein Unterblockmodus-Befehl ist ein entgegengesetzter Befehl zum Vollblockmodus-Befehl, bei dem es sich um einen Typ von Konfigurationsbefehl handelt, der eine Speichersteuerung veranlasst, einen Speicherblock als vollständigen logischen Löschblock zu betreiben, wobei der logische Löschblock aus zwei oder mehr physischen Löschblöcken aus zwei oder mehr Speicherebenen und/oder Speicher-Dies besteht.
  • Der Unterblockmodus-Befehl kann eingerichtet sein, um die Konfigurationseinstellungen des Speicher-Dies von Vollblockmodus- zu Unterblockmodus-Einstellungen zu ändern. Der Vollblockmodus-Befehl kann eingerichtet sein, um Speicher-Die-Einstellungen aus dem Unterblockmodus oder einem anderen Standardmodus zu ändern. In einigen Ausführungsformen kann der Unterblockmodus der Standardmodus für alle oder einige der Vielzahl von Speicher-Dies sein. In einer Ausführungsform kann die Modusschaltung 706 einen Vollblockmodus-Befehl oder einen Unterblockmodus-Befehl ausschließlich als Reaktion auf eine Änderung des Workload-Typs für nachfolgende Sätze von überwachten Schreibbefehlen ausgeben.
  • Die Verfolgungsschaltung 708 kann einen freien Metablock einem Paar von Schwester-Unterblöcken auf jedem der Speicher-Dies, die eingerichtet sind, um einen Abschnitt des freien Metablocks einzuschließen, zuordnen. Der erste und der zweite freie Metablock können jeweils einem ersten Paar von Schwester-Unterblöcken und einem zweiten Paar von Schwester-Unterblöcken zugeordnet werden. Jedes Paar von Schwester-Unterblöcken kann einem bestimmten physischen Löschblock zugeordnet werden, wie in 3 und 5 veranschaulicht.
  • Die Lese-/Schreibschaltung 710 kann eingerichtet werden, um Daten im Vollblockmodus in den freien Metablock zu schreiben, wenn ein Satz von Schreibbefehlen empfangen wird, der dem sequenziellen Workload-Typ entspricht. Die Lese-/Schreibschaltung 710 kann Daten in einen zweiten freien Metablock im Unterblockmodus schreiben, als Reaktion auf einen zweiten Satz von Schreibbefehlen, die mit dem wahlfreien Workload-Typ korrelieren.
  • 8 veranschaulicht eine Speichersteuerung 800 gemäß einer Ausführungsform. Die Speichersteuerung 800 weist eine Stromverwaltungsschaltung 802, eine Metablock-Verwaltungsschaltung 804, eine Modusschaltung 806, eine Verfolgungsschaltung 808, eine Lese-/Schreibschaltung 810 und einen flüchtigen Speicher 812 auf. Die Stromverwaltungsschaltung 802, die Metablock-Verwaltungsschaltung 804, die Modusschaltung 806, die Verfolgungsschaltung 808 und die Lese-/Schreibschaltung 810 können in ähnlicher Weise wie die in 7 veranschaulichten analogen Elemente einer Speichersteuerung 700 arbeiten. „Flüchtiger Speicher“ nimmt Bezug auf eine Kurzform für flüchtige Speichermedien. In bestimmten Ausführungsformen nimmt ein flüchtiger Speicher Bezug auf die flüchtigen Speichermedien und die Logik, Steuerungen, Prozessor(en), Zustandsmaschine(n) und/oder andere Peripherieschaltungen, die die flüchtigen Speichermedien verwalten und den Zugriff auf die flüchtigen Speichermedien ermöglichen.
  • Der flüchtige Speicher 812 kann Konfigurationseinstellungen 814 speichern, einschließlich Konfigurationseinstellungen für den Vollblockmodus 816 und Konfigurationseinstellungen für den Unterblockmodus 818. Die Konfigurationseinstellungen 814 können an die Speicher-Dies gesendet werden, um die Konfigurationseinstellungen zu ändern.
  • Alternativ oder in einer anderen Ausführungsform kann eine Vielzahl von Speicher-Dies (nicht veranschaulicht) Vollblockmodus-Konfigurationseinstellungen 816 und Unterblockmodus-Konfigurationseinstellungen 818 innerhalb des flüchtigen Speichers 812 auf einer Die-Steuerung speichern, wie z. B. die in 2 dargestellte Die-Steuerung 204. Ein Vollblockmodus-Befehl, der von der Modusschaltung 806 ausgegeben wird, kann eingerichtet sein, um die Steuerschaltung jedes Speicher-Dies der Vielzahl von Speicher-Dies zu veranlassen, die Unterblockmodus-Konfigurationseinstellungen dieses Dies gegen die Vollblockmodus-Konfigurationseinstellungen auszutauschen. Ein Unterblockmodus-Befehl kann eingerichtet sein, um den entgegengesetzten Vorgang auf den betreffenden Speicher-Die durchzuführen. Mit im flüchtigen Speicher einer Die-Steuerung gespeicherten Konfigurationseinstellungen 814 kann der Wechsel von Unterblockmodus-Konfigurationseinstellungen 818 zu Vollblockmodus-Konfigurationseinstellungen 816 schnell durchgeführt werden.
  • 9 veranschaulicht eine Metablock-Verfolgungstabelle 900 gemäß einer Ausführungsform. „Metablockverfolgungstabelle“ nimmt Bezug auf eine Datenstruktur, die zur Pflege von Metadaten über Metablöcke verwendet wird. Beispiele für Metadaten in einer Metablockverfolgungstabelle schließen eine Anzahl von Programmier- und Löschvorgängen für den Metablock ein, ob der Metablock im Unterblockmodus oder im Vollblockmodus verwendet werden soll, ob der Metablock ein freier Metablock oder ein nicht verfügbarer Metablock ist, eine Schreibtemperatur für die Daten des Metablocks und dergleichen.
  • Die Metablockverfolgungstabelle 900 kann zusätzlich zu einer herkömmlichen Adressenzuordnungstabelle implementiert werden. „Adresszuordnungstabelle“ nimmt Bezug auf eine Datenstruktur, die logische Blockadressen mit physischen Adressen von Daten verknüpft, die auf einem nichtflüchtigen Speicherarray gespeichert sind. Die Tabelle kann als Index, als Karte, als B-Baum, als inhaltsadressierbarer Speicher (Content Addressable Memory, CAM), als Binärbaum und/oder als Hashtabelle und dergleichen implementiert sein. Die Adresszuordnungstabelle kann austauschbar als Gruppenzuordnungstabelle (Group Allocation Table, GAT) bezeichnet werden.
  • Die Metablockverfolgungstabelle 900 kann Informationen darüber enthalten, welche Metablöcke oder logischen Löschblöcke aus welchen Abschnitten des physischen Speicher-Dies bestehen, in welchem Modus die Metablöcke/logischen Löschblöcke betrieben werden können und welche Metablöcke/logischen Löschblöcke verfügbar sind. In der veranschaulichten Metablockverfolgungstabelle 900 kann „MB“, gefolgt von einer Zahl, zur Bezeichnung eines bestimmten Metablocks oder Speicherblocks oder logischen Löschblocks verwendet werden. Die Spalte mit der Bezeichnung „Blockmodus“ gibt an, in welchem Modus ein Metablock verwendet wird. Eine „1“ in dieser Spalte zeigt an, dass der Metablock im Vollblockmodus (Full-Block Mode, FBM) verwendet wird. Eine „0“ in dieser Spalte zeigt an, dass der Metablock im Unterblockmodus (Sub-Block Mode, SBM) verwendet wird. Es können bestimmte andere Metadaten in der Metablockverfolgungstabelle 900 gespeichert sein, wie z. B. eine Temperatur, als Daten zuletzt in einen Metablock geschrieben wurden (Write Temp 902), die Anzahl der Male, die der Metablock programmiert und gelöscht wurde (PE-Zähler 904) und dergleichen.
  • Ein Blockzuweisungsverwalter innerhalb der Speichersteuerung kann auf die Metablockverfolgungstabelle 900 zugreifen, um zu bestimmen, welche aus einem Satz von logischen Löschblöcken/Metablöcken/Speicherblöcken als logischer Löschblock/verfügbarer Metablock 906 verfügbar sind, z. B. diejenigen, die wie veranschaulicht unter „Blockverfügbarkeit“ mit „1“ gekennzeichnet sind. Ein verfügbarer logischer Löschblock/verfügbarer Metablock 906 kann gekennzeichnet werden, um Daten von Schreibbefehlen mit einem sequenziellen Workload-Typ im Vollblockmodus zu empfangen, wenn der verfügbare logische Löschblock/verfügbare Metablock 906 physische Löschblöcke aufweist, die jeweils zwei Schwester-Unterblöcke 910 aufweisen. Der verfügbare logische Löschblock/verfügbare Metablock 906 MB8 kann zur Verwendung im Vollblockmodus gekennzeichnet werden, da die entsprechenden potenziellen Schwester-Unterblöcke in MB9 als verfügbar markiert sind. Sobald ein Vollblock-Speicherblock 908 gekennzeichnet ist, kann auf ihn über seinen ersten Bezeichner, wie z. B. MB0 und MB6 für die gezeigten Vollblock-Speicherblöcke 908, Bezug genommen werden. Der zweite Bezeichner (z. B. MB1 und MB7) darf nicht verwendet werden, da auf ihre Unterblöcke nicht getrennt von ihren Schwester-Unterblöcken im Vollblockmodus zugegriffen werden kann.
  • Im veranschaulichten Beispiel können der verfügbare logische Löschblock/verfügbare Metablock 906 MB2 und MB5 möglicherweise nicht im Vollblockmodus für Schreibbefehle vom sequenziellen Workload-Typ verwendet werden, da ihre Schwester-Unterblöcke (MB3 bzw. MB4) nicht verfügbare logische Löschblöcke/Metablöcke sind.
  • In einer Ausführungsform kann ein sequenzieller Workload-Typ bestimmt werden, aber der Pool freier Metablöcke weist möglicherweise kein Paar von Unterblöcken auf, die einen gemeinsamen physischen Löschblock auf dem entsprechenden Speicher-Die aufweisen. In einem solchen Fall kann ein freier Metablock wie z. B. MB2 als Zielspeicherblock gewählt werden. Das Einrichten dieses Zielspeicherblocks kann dann das Beibehalten der Einstellungen für die zwei oder mehr Speicher-Dies des Zielspeicherblocks als Unterblockmodus-Konfigurationseinstellungen aufweisen. Der Zielspeicherblock kann im Unterblockmodus gelöscht und für die Verwendung im Unterblockmodus registriert werden. Einstellungen für einen Zielspeicherblock können nicht automatisch zu einer Standardeinstellung zurückkehren, sobald sie geändert worden sind. Vielmehr können diese Einstellungen für einen bestimmten Workload-Typ so lange gesetzt bleiben, bis ein anderer Workload-Typ erkannt wird.
  • 10 veranschaulicht eine Routine 1000 für die dynamische Zuweisung für Unterblöcke. Das System und die Vorrichtung, die hierin offenbart sind, können eingerichtet werden, um das offenbarte Verfahren durch diese Routine 1000 zu implementieren.
  • In Block 1002 kann eine Speichersteuerung einen Satz von Schreibbefehlen für ein nichtflüchtiges Speicherarray empfangen, das eine Vielzahl von Speicher-Dies umfasst. Die Speicher-Dies können in Metablöcken organisiert sein, die so eingerichtet sind, dass sie zwei oder mehr Speicher-Dies der Vielzahl von Speicher-Dies überspannen.
  • In Block 1004 kann die Speichersteuerung einen Workload-Typ für den Satz von Schreibbefehlen bestimmen. Wenn ein Satz von Schreibbefehlen jeweils auf einen logischen Block Bezug nimmt, der in einer sequentiellen Reihenfolge fortschreitet, kann die Speichersteuerung bestimmen, dass der Satz von Schreibbefehlen von einem sequentiellen Workload-Typ ist. Wenn die referenzierten logischen Blockadressen nicht in einer sequentiellen Reihenfolge eintreffen, kann der Satz als zum wahlfreien Workload-Typ gehörig bestimmt werden.
  • In Block 1006 kann die Speichersteuerung einen Zielspeicherblock auswählen, um den Satz von Schreibbefehlen basierend auf dem Workload-Typ zu empfangen. In einer Ausführungsform, in der Speicherblöcke standardmäßig für den Betrieb im Unterblockmodus eingerichtet sind, und solange Befehle vom wahlfreieren Workload-Typ empfangen werden, können Zielspeicherblöcke einem beliebigen Satz verfügbarer logischer Löschblöcke oder freier Metablöcke zugewiesen werden. Beim Empfang von Befehlen vom sequenziellen Workload-Typ kann die Speichersteuerung versuchen, verfügbare logische Löschblöcke ausfindig zu machen, die für die Verwendung im Vollblock-Modus geeignet sind, und diese nach Möglichkeit als Zielspeicherblock zuzuweisen.
  • Sobald der Zielspeicherblock in Block 1006 bestimmt wurde, kann der Zielspeicherblock in Block 1008 eingerichtet werden, um Datenblöcke für den in Block 1004 ermittelten Workload-Typ zu empfangen. Der Zielspeicherblock kann eingerichtet sein, um im Vollblockmodus zu arbeiten, um Datenblöcke vom sequentiellen Workload-Typ zu empfangen. Der Zielspeicherblock kann im Unterblockmodus verbleiben bzw. für den Betrieb im Unterblockmodus rekonfiguriert werden, um Datenblöcke vom wahlfreien Workload-Typ zu empfangen.
  • In Block 1010 kann die Speichersteuerung nach Einrichtung des Zielspeicherblocks den Satz von Schreibbefehlen an den Zielspeicherblock übermitteln. Der Zielspeicherblock kann so eingerichtet werden, dass zukünftige Schreibbefehle, die mit dem Satz von Schreibbefehlen verbunden sind, im Zielspeicherblock gespeichert werden, bis eine Änderung des Workload-Typs festgestellt wird, der Zielspeicherblock voll wird oder ein anderes Ereignis die Notwendigkeit auslöst, einen anderen Zielspeicherblock zu bestimmen.
  • 11 ist ein beispielhaftes Blockdiagramm einer Rechenvorrichtung 1100, die Ausführungsformen der Lösung enthalten kann. 11 veranschaulicht lediglich ein Maschinensystem zur Durchführung von Aspekten der hierin beschriebenen technischen Prozesse und schränkt den Umfang der Ansprüche nicht ein. Ein Durchschnittsfachmann würde andere Variationen, Modifikationen und Alternativen erkennen. In bestimmten Ausführungsformen schließt die Rechenvorrichtung 1100 ein Datenverarbeitungssystem 1102, ein Kommunikationsnetzwerk 1104, eine Kommunikationsnetzwerkschnittstelle 1106, Eingabevorrichtung(en) 1108, Ausgabevorrichtung(en) 1110 und dergleichen ein.
  • Wie in 11 dargestellt, kann das Datenverarbeitungssystem 1102 einen oder mehrere Prozessor(en) 1112 und ein Speichersubsystem 1114 einschließen. Der/die Prozessor(en) 1112 kommunizieren mit einer Reihe von Peripherievorrichtungen über ein Bussubsystem 1116. Diese Peripherievorrichtungen können Eingabevorrichtung(en) 1108, Ausgabevorrichtung(en) 1110, die Kommunikationsnetzwerkschnittstelle 1106 und das Speichersubsystem 1114 einschließen. In einer Ausführungsform weist das Speichersubsystem 1114 eine oder mehrere Speichervorrichtungen und/oder eine oder mehrere Speicherungsvorrichtungen auf.
  • In einer Ausführungsform schließt das Speichersubsystem 1114 einen flüchtigen Speicher 1118 und einen nichtflüchtigen Speicher 1120 ein. Der flüchtige Speicher 1118 und/oder der nichtflüchtige Speicher 1120 können computerausführbare Befehle speichern, die allein oder zusammen eine Logik 1122 bilden, die, wenn sie auf den/die Prozessor(en) 1112 angewendet und von diesem/diesen ausgeführt werden, Ausführungsformen der hierin offenbaren Prozesse implementieren.
  • Die Eingabevorrichtung(en) 1108 schließen eine Vorrichtung und Mechanismen zur Eingabe von Informationen in das Datenverarbeitungssystem 1102 ein. Diese können eine Tastatur, ein Tastenfeld, einen Berührungsbildschirm, der in eine grafische Benutzeroberfläche eingeschlossen ist, Audio-Eingabegeräte wie Spracherkennungssysteme, Mikrofone und andere Arten von Eingabegeräten einschließen. In verschiedenen Ausführungsformen können die Eingabevorrichtung(en) 1108 als Computermaus, Trackball, Trackpad, Joystick, drahtlose Fernbedienung, Zeichentablett, Sprachbefehlssystem, Blickverfolgungssystem und dergleichen ausgeführt sein. Das/die Eingabevorrichtung(en) 1108 ermöglichen es dem Benutzer üblicherweise, Objekte, Icons, Kontrollbereiche, Text und dergleichen, die auf einer grafischen Benutzeroberfläche erscheinen, durch einen Befehl, wie z. B. einen Knopfdruck oder dergleichen, auszuwählen.
  • Die Ausgabevorrichtung(en) 1110 schließen eine Vorrichtung und Mechanismen zur Ausgabe von Informationen aus dem Datenverarbeitungssystem 1102 ein. Diese können eine graphische Benutzeroberfläche, Lautsprecher, Drucker, Infrarot-LEDs usw. einschließen, wie in der Technik gut verstanden wird. In bestimmten Ausführungsformen ist eine grafische Benutzeroberfläche direkt über eine Kabelverbindung an das Bussubsystem 1116 gekoppelt. In anderen Ausführungsformen ist die grafische Benutzeroberfläche über die Kommunikationsnetzwerkschnittstelle 1106 an das Datenverarbeitungssystem 1102 gekoppelt. Beispielsweise kann die grafische Benutzeroberfläche eine Befehlszeilenschnittstelle auf einer separaten Rechenvorrichtung 1100 wie einem Desktop, Server oder mobilen Gerät aufweisen.
  • Die Kommunikationsnetzwerkschnittstelle 1106 stellt eine Schnittstelle zu Kommunikationsnetzwerken (z.B. Kommunikationsnetzwerk 1104) und einer Vorrichtung außerhalb des Datenverarbeitungssystems 1102 bereit. Die Kommunikationsnetzwerkschnittstelle 1106 kann als Schnittstelle für den Empfang von Daten von anderen Systemen und die Übertragung von Daten an andere Systeme dienen. Ausführungsformen der Kommunikationsnetzwerkschnittstelle 1106 können eine Ethernet-Schnittstelle, ein Modem (Telefon, Satellit, Kabel, ISDN), eine (asynchrone) digitale Teilnehmerleitung (Digital Subscriber Line, DSL), FireWire, USB, eine drahtlose Kommunikationsschnittstelle wie Bluetooth oder WiFi, eine drahtlose Nahfeldkommunikationsschnittstelle, eine zellulare Schnittstelle und dergleichen einschließen.
  • Die Kommunikationsnetzwerkschnittstelle 1106 kann über eine Antenne, ein Kabel oder dergleichen an das Kommunikationsnetzwerk 1104 gekoppelt sein. In einigen Ausführungsformen kann die Kommunikationsnetzwerkschnittstelle 1106 physisch auf einer Leiterplatte des Datenverarbeitungssystems 1102 integriert sein oder in einigen Fällen in Software oder Firmware, wie „Soft-Modems“ oder dergleichen, implementiert sein. „Firmware“ nimmt auf Logik Bezug, die als prozessorausführbare Anweisungen verkörpert ist, die auf flüchtigen Speichermedien und/oder nichtflüchtigen Speichermedien gespeichert sind.
  • Die Rechenvorrichtung 1100 kann eine Vorrichtung einschließen, die die Kommunikation über ein Netzwerk mit Protokollen wie HTTP, TCP/IP, RTP/RTSP, IPX, UDP und dergleichen ermöglicht.
  • Der flüchtige Speicher 1118 und der nichtflüchtige Speicher 1120 sind Beispiele für konkrete Medien, die so eingerichtet sind, dass sie computerlesbare Daten und Anweisungen speichern, um verschiedene Ausführungsformen der hierin beschriebenen Prozesse zu implementieren. Andere Arten von konkreten Medien schließen austauschbare Speicher (z. B. steckbare USB-Speichervorrichtungen, SIM-Karten für mobile Vorrichtungen), optische Speichermedien wie CD-ROMS, DVDs, Halbleiterspeicher wie Flash-Speicher, nichtflüchtige Nur-Lese-Speicher (ROMS), batteriegepufferte flüchtige Speicher, vernetzte Speichervorrichtungen und dergleichen ein. Der flüchtige Speicher 1118 und der nichtflüchtige Speicher 1120 können so eingerichtet sein, dass sie die grundlegenden Programmier- und Datenkonstrukte speichern, die die Funktionalität der offenbarten Prozesse und anderer Ausführungsformen davon bereitstellen, die in den Schutzumfang der vorliegenden Erfindung fallen.
  • Die Logik 1122, die einen oder mehrere Teile der Ausführungsformen der Lösung implementiert, kann im flüchtigen Speicher 1118 und/oder im nichtflüchtigen Speicher 1120 gespeichert werden. Die Logik 1122 kann aus dem flüchtigen Speicher 1118 und/oder dem nichtflüchtigen Speicher 1120 gelesen und von dem/den Prozessor(en) 1112 ausgeführt werden. Der flüchtige Speicher 1118 und der nichtflüchtige Speicher 1120 können auch ein Repository für die Speicherung von Daten bereitstellen, die von der Logik 1122 verwendet werden.
  • Der flüchtige Speicher 1118 und der nichtflüchtige Speicher 1120 können eine Anzahl von Speichern einschließen, einschließlich eines Hauptspeichers mit wahlfreiem Zugriff (RAM) zur Speicherung von Befehlen und Daten während des Programmierens und eines Nur-Lese-Speichers (ROM), in dem schreibgeschützte, nichtflüchtige Befehle gespeichert werden. Der flüchtige Speicher 1118 und der nichtflüchtige Speicher 1120 können ein Dateispeicher-Subsystem einschließen, das persistenten (nichtflüchtigen) Speicher für Programm- und Datendateien bereitstellt. Der flüchtige Speicher 1118 und der nichtflüchtige Speicher 1120 können austauschbare Speichersysteme, wie z. B. austauschbare Flash-Speicher, einschließen.
  • Das Bussubsystem 1116 stellt einen Mechanismus bereit, der es den verschiedenen Komponenten und Subsystemen des Datenverarbeitungssystems 1102 ermöglicht, wie vorgesehen miteinander zu kommunizieren. Obwohl die Kommunikationsnetzwerkschnittstelle 1106 schematisch als ein einzelner Bus dargestellt ist, können einige Ausführungsformen des Bussubsystems 1116 mehrere verschiedene Busse verwenden.
  • Es ist für einen Durchschnittsfachmann ohne Weiteres ersichtlich, dass es sich bei der Rechenvorrichtung 1100 um eine Vorrichtung wie ein Smartphone, einen Desktop-Computer, einen Laptop-Computer, ein Rack-Computersystem, einen Computer-Server oder ein Tablet-Computergerät handeln kann. Wie im Stand der Technik allgemein bekannt ist, kann die Rechenvorrichtung 1100 als eine Sammlung von mehreren vernetzten Rechenvorrichtungen implementiert sein. Darüber schließt die Rechenvorrichtung 1100 üblicherweise eine Betriebssystemlogik (nicht veranschaulicht) ein, deren Art und Beschaffenheit im Stand der Technik gut bekannt sind.
  • Die hierin verwendeten Begriffe sind gemäß ihrer gewöhnlichen Bedeutung in den betreffenden Sachgebieten zu verstehen oder gemäß der Bedeutung, die durch ihre Verwendung im Kontext angegeben wird. Wenn jedoch eine ausdrückliche Definition bereitgestellt wird, ist diese Bedeutung ausschlaggebend.
  • Innerhalb dieser Offenbarung können verschiedene Elemente (die unterschiedlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „eingerichtet“ beschrieben oder beansprucht werden, um eine oder mehrere Aufgaben oder Operationen auszuführen. Diese Formulierung - [Element] eingerichtet zum [Ausführen einer oder mehrerer Aufgaben] - wird hierin verwendet, um sich auf die Struktur zu beziehen (d. h. etwas Physisches, wie eine elektronische Schaltung). Genauer gesagt, wird diese Formulierung verwendet, um anzuzeigen, dass diese Struktur so angeordnet ist, um die eine oder mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „eingerichtet“ bezeichnet werden, um eine Aufgabe auszuführen, auch wenn die Struktur momentan nicht betrieben wird. Ein „Kreditverteilungsschaltkreis, der eingerichtet ist zum Verteilen von Guthaben auf eine Vielzahl von Prozessorkernen“, soll beispielsweise eine integrierte Schaltung abdecken, die über einen Schaltkreis zum Ausführen dieser Funktion während des Betriebs verfügt, auch wenn die betreffende integrierte Schaltung derzeit nicht verwendet wird (z. B. ist kein Netzteil daran angeschlossen). Somit nimmt ein Element, das als „eingerichtet zum“ Durchführen einer Aufgabe beschrieben oder rezitiert wird, auf etwas Physisches Bezug, wie eine Vorrichtung, eine Schaltung, einen Speicher zum Speichern von Programmanweisungen, die zum Durchführen der Aufgabe ausführbar sind usw. Diese Formulierung wird hierin nicht verwendet, um auf etwas Immaterielles hinzuweisen.
  • Der Ausdruck „eingerichtet zum“ bedeutet nicht „konfigurierbar zum.“ Ein unprogrammiertes FPGA zum Beispiel würde nicht als „eingerichtet zum“ Ausführen einer bestimmten Funktion betrachtet werden, obwohl es nach der Programmierung „konfigurierbar zum“ Ausführen dieser Funktion sein kann.
  • Das Rezitieren in den beiliegenden Ansprüchen, dass eine Struktur „eingerichtet“ ist zum Ausführen einer oder mehrerer Aufgaben, ist ausdrücklich dazu gedacht, 35 U.S.C. § 112(f) für dieses Anspruchselement nicht geltend zu machen. Dementsprechend sollten Ansprüche in dieser Anmeldung, die nicht anderweitig das Konstrukt „Mittel zum“ [Ausführen einer Funktion] enthalten, nicht gemäß 35 U.S.C. § 112(f) ausgelegt werden.
  • Wie hierin verwendet, wird der Ausdruck „basierend auf“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Ausdruck schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf bestimmten Faktoren oder auf den bestimmten Faktoren sowie anderen, nicht spezifizierten Faktoren basieren. Betrachten wir die Formulierung „A basierend auf B bestimmen“. Dieser Satz besagt, dass B ein Faktor ist, der zur Bestimmung von A verwendet wird oder der die Bestimmung von A beeinflusst. Dieser Satz schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie beispielsweise C, basieren kann. Diese Formulierung gilt auch für eine Ausführungsform, in der A ausschließlich auf der Grundlage von B bestimmt wird. Wie hierin verwendet, ist die Formulierung „basierend auf“ gleichbedeutend mit der Formulierung „basierend zumindest teilweise auf.“
  • Wie hierin verwendet, beschreibt die Formulierung „als Reaktion auf“ einen oder mehrere Faktoren, die einen Effekt auslösen. Diese Formulierung schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren den Effekt beeinflussen oder anderweitig auslösen können. Das heißt, ein Effekt kann ausschließlich als Reaktion auf diese Faktoren oder als Reaktion auf die festgelegten Faktoren sowie andere, nicht festgelegte Faktoren auftreten. Betrachten wir die Formulierung „A als Reaktion auf B ausführen.“ Dieser Satz besagt, dass B ein Faktor ist, der die Leistung von A auslöst. Dieser Satz schließt nicht aus, dass die Ausführung von A auch als Reaktion auf einen anderen Faktor, wie beispielsweise C, erfolgen kann. Diese Formulierung gilt auch für eine Ausführungsform, bei der A ausschließlich als Reaktion auf B ausgeführt wird.
  • Wie hierin verwendet, werden die Begriffe „erste/erster/erstes“, „zweite/zweiter/zweites“ usw. als Bezeichnungen für die anschließenden Substantive verwendet, und implizieren keine Art von Ordnung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben. Beispielsweise können in einer Registerdatei mit acht Registern die Begriffe „erstes Register“ und „zweites Register“ verwendet werden, um auf zwei beliebige der acht Register Bezug zu nehmen, und nicht beispielsweise nur auf die logischen Register 0 und 1.
  • Bei der Verwendung in den Ansprüchen wird der Begriff „oder“ als inklusiv und nicht als exklusiv verwendet. Beispielsweise bedeutet die Formulierung „mindestens einer von x, y oder z“ einen von x, y und z sowie eine beliebige Kombination davon.

Claims (20)

  1. Verfahren (1000), aufweisend: Empfangen (1002) eines Satzes von Schreibbefehlen für ein nichtflüchtiges Speicherarray (202, 300) umfassend eine Vielzahl von Speicher-Dies (106, 302, 304, 306), die in Metablöcken (308, 310) organisiert sind, die eingerichtet sind, um ein oder mehr Speicher-Dies der Vielzahl von Speicher-Dies (106, 302, 304, 306) zu überspannen; Bestimmen (1004) eines Workload-Typs für den Satz von Schreibbefehlen; wobei der Workload-Typ eines von einem sequenziellen Workload-Typ oder einem wahlfreien Workload-Typ aufweist; Bestimmen (1006) eines Zielspeicherblocks zum Empfangen des Satzes von Schreibbefehlen basierend auf dem Workload-Typ; Einrichten (1008) des Zielspeicherblocks, um Datenblöcke für den Workload-Typ zu empfangen; und Leiten (1010) des Satzes von Schreibbefehlen zu dem Zielspeicherblock.
  2. Verfahren gemäß Anspruch 1, wobei der Workload-Typ den sequenziellen Workload-Typ aufweist und wobei das Bestimmen des Zielspeicherblocks ferner aufweist: Auswählen eines Metablocks (308, 310) aus einem Pool freier Metablöcke zur Verwendung als Zielspeicherblock; und wobei das Einrichten des Zielspeicherblocks aufweist: Einstellen der Konfigurationseinstellungen (814) für die zwei oder mehr Speicher-Dies (106, 302, 304, 306) des Zielspeicherblocks auf Vollblockmodus-Konfigurationseinstellungen; Löschen des Zielspeicherblocks im Vollblockmodus; und Registrieren des Zielspeicherblocks als einen Vollblock-Speicherblock.
  3. Verfahren gemäß Anspruch 2, wobei das Einstellen der Konfigurationseinstellungen (814) das Ändern der Konfigurationseinstellungen für die zwei oder mehr Speicher-Dies (106, 302, 304, 306) des Zielspeicherblocks von den Unterblockmodus-Konfigurationseinstellungen (818) zu den Vollblockmodus-Konfigurationseinstellungen (816) aufweist.
  4. Verfahren gemäß Anspruch 2, wobei das Registrieren des Zielspeicherblocks aufweist: Aktualisieren einer Metablockverfolgungstabelle (618), um den Zielspeicherblock als einen Vollblock-Speicherblock zu identifizieren; und Verwalten des Zielspeicherblocks als Vollblock-Speicherblock, bis der Zielspeicherblock im Anschluss an den Empfang von Daten für den Satz von Schreibbefehlen gelöscht wird.
  5. Verfahren gemäß Anspruch 1, wobei der Workload-Typ den sequenziellen Workload-Typ aufweist und wobei das Bestimmen des Zielspeicherblocks ferner aufweist: Bestimmen, dass ein Pool freier Metablöcke der Metablöcke (308), 310) keine freien Metablöcke aufweist, die ein Paar von Unterblöcken umfassen, die einen gemeinsamen physischen Löschblock in jedem der zwei oder mehr Speicher-Dies miteinander teilen; Auswählen eines Metablocks aus dem Pool freier Metablöcke zur Verwendung als Zielspeicherblock; und wobei das Einrichten des Zielspeicherblocks aufweist: Beibehalten der Konfigurationseinstellungen (814) für die zwei oder mehr Speicher-Dies des Zielspeicherblocks als Unterblockmodus-Konfigurationseinstellungen (818); Löschen des Zielspeicherblocks im Unterblockmodus; und Registrieren des Zielspeicherblocks zur Verwendung im Unterblockmodus.
  6. Verfahren gemäß Anspruch 1, wobei der Workload-Typ den wahlfreien Workload-Typ aufweist und wobei das Einrichten des Zielspeicherblocks aufweist: Ändern der Konfigurationseinstellungen (814) für die zwei oder mehr Speicher-Dies des Zielspeicherblocks von Vollblockmodus-Konfigurationseinstellungen (816) zu Unterblockmodus-Konfigurationseinstellungen (818).
  7. Verfahren gemäß Anspruch 1, wobei das Bestimmen des Zielspeicherblocks ferner das Auswählen eines offenen Metablocks (624) aus einem Satz offener Metablöcke und das Kennzeichnen des ausgewählten offenen Metablocks als Zielspeicherblock aufweist, wobei der Workload-Typ den sequenziellen Workload-Typ aufweist und der ausgewählte offene Metablock (624) eingerichtet ist, um im Vollblockmodus zu arbeiten.
  8. Verfahren gemäß Anspruch 1, wobei das Bestimmen des Zielspeicherblocks ferner das Auswählen eines offenen Metablocks (624) aus einem Satz offener Metablöcke und das Kennzeichnen des ausgewählten offenen Metablocks als Zielspeicherblock aufweist, wobei der Workload-Typ den wahlfreien Workload-Typ aufweist und der ausgewählte offene Metablock (624) eingerichtet ist, um im Unterblockmodus zu arbeiten.
  9. Verfahren gemäß Anspruch 1, bei dem der Zielspeicherblock dem Satz von Schreibbefehlen derart zugeordnet wird, dass zukünftige Schreibbefehle, die dem Satz von Schreibbefehlen zugeordnet sind, im Zielspeicherblock gespeichert werden.
  10. Verfahren gemäß Anspruch 1, wobei das Bestimmen des Workload-Typs des Satzes von Schreibbefehlen aufweist: Überwachen einer Vielzahl von Schreibbefehlen, die den Satz von Schreibbefehlen einschließt, wobei die Vielzahl von Schreibbefehlen in Sequenz empfangen werden; Vergleichen von logischen Blockadressen der Vielzahl von Schreibbefehlen mit logischen Blockadressen für den Satz von Schreibbefehlen; und Bestimmen, dass der Workload-Typ dersequenzielle Workload-Typ ist, basierend darauf, dass die verglichenen logischen Blockadressen für den Satz von Schreibbefehlen sich relativ zu den logischen Blockadressen der Vielzahl von Schreibbefehlen in sequentieller Reihenfolge befinden.
  11. Einrichtung (700, 800), aufweisend: eine Stromverwaltungsschaltung (702, 802), die eingerichtet ist, um Schreibbefehle zu überwachen und zu bestimmen, dass ein Satz von Schreibbefehlen der überwachten Schreibbefehle mit einem sequenziellen Workload-Typ korreliert; eine Metablock-Verwaltungsschaltung (704, 804), die eingerichtet ist, um einen freien Metablock zum Empfang von Daten für den Satz von Schreibbefehlen zu bestimmen und die eingerichtet ist, um den freien Metablock im Vollblockmodus zu löschen; eine Modusschaltung (706, 806), die eingerichtet ist, um einen Vollblockmodus-Befehl an eine Vielzahl von Speicher-Dies (106) zu senden, die einen Abschnitt des freien Metablocks einschließen, wobei die Speicher-Dies parallel an einen Schnittstellenbus gekoppelt sind; eine Verfolgungsschaltung (708, 808), die eingerichtet ist, um den freien Metablock mit einem Paar von Schwester-Unterblöcken auf jedem Speicher-Die (106) der Vielzahl von Speicher-Dies zu verknüpfen; und eine Lese-/Schreibschaltung (710, 810), die eingerichtet ist, Daten im Vollblockmodus in den freien Metablock zu schreiben, als Reaktion darauf, dass der Satz von Schreibbefehlen dem sequenziellen Workload-Typ entspricht.
  12. Einrichtung gemäß Anspruch 11, wobei die Vielzahl von Speicher-Dies (106) eingerichtet sind, um Unterblockmodus-Konfigurationseinstellungen (818) und Vollblockmodus-Konfigurationseinstellungen (816) in einem flüchtigen Speicher (812) einer Die-Steuerung zu speichern, und der Vollblockmodus-Befehl eingerichtet ist, um eine Die-Steuerung jedes Speicher-Dies (106) der Vielzahl von Speicher-Dies zu veranlassen, die Unterblockmodus-Konfigurationseinstellungen (818) gegen die Vollblockmodus-Konfigurationseinstellungen (816) auszutauschen.
  13. Einrichtung gemäß Anspruch 11, wobei die Stromverwaltungsschaltung (702, 802) weiterhin eingerichtet ist zum: Bestimmen eines zweiten Satzes von Schreibbefehlen der überwachten Schreibbefehle, die einem wahlfreien Workload-Typ entsprechen; wobei die Metablock-Verwaltungsschaltung (704, 804) eingerichtet ist, um einen zweiten freien Metablock zum Empfangen von Daten für den zweiten Satz von Schreibbefehlen zu bestimmen, und eingerichtet ist, um den zweiten freien Metablock im Unterblockmodus zu löschen, wobei die Vielzahl von Speicher-Dies (106) den zweiten freien Metablock und den ersten freien Metablock umfassen; wobei die Modusschaltung (706, 806) eingerichtet ist, um einen Unterblockmodus-Befehl an die Vielzahl von Speicher-Dies zu senden, wobei der Unterblockmodus-Befehl eingerichtet ist, um Konfigurationseinstellungen (814) der Vielzahl von Speicher-Dies (106) von Vollblockmodus-Konfigurationseinstellungen (816) zu Unterblockmodus-Konfigurationseinstellungen (818) zu ändern; wobei die Verfolgungsschaltung (708, 808) eingerichtet ist, um den zweiten freien Metablock mit einem von einem Paar von Schwester-Unterblöcken auf jedem der Vielzahl von Speicher-Dies zu verknüpfen, die eingerichtet sind, um einen Abschnitt des zweiten freien Metablocks einzuschließen; und wobei die Lese-/Schreibschaltung (710, 810) eingerichtet ist, um Daten in den zweiten freien Metablock im Unterblockmodus zu schreiben, als Reaktion darauf, dass der zweite Satz von Schreibbefehlen dem wahlfreien Workload-Typ entspricht.
  14. Einrichtung gemäß Anspruch 11, wobei die Modusschaltung (706, 806) eingerichtet ist, um einen Vollblockmodus-Befehl und einen Unterblockmodus-Befehl ausschließlich als Reaktion auf eine Änderung eines Workload-Typs für nachfolgende Sätze von Schreibbefehlen der überwachten Schreibbefehle auszugeben.
  15. Einrichtung gemäß Anspruch 11, wobei der Vollblockmodus-Befehl eingerichtet ist, um Konfigurationseinstellungen (814) der Vielzahl von Speicher-Dies (106) von Unterblockmodus-Konfigurationseinstellungen (818) zu Vollblockmodus-Konfigurationseinstellungen (816) zu ändern.
  16. System (600), umfassend: ein nichtflüchtiges Speicherarray umfassend eine Vielzahl von Speicher-Dies (106), die in mindestens einer Zeile und zwei oder mehr Spalten organisiert sind; einen Satz logischer Löschblöcke (308, 310) umfassend einen physischen Löschblock von jedem Speicher-Die (106) einer Zeile des nichtflüchtigen Speicherarrays, wobei jeder physische Löschblock, der einen logischen Löschblock bildet, zwei Schwester-Unterblöcke umfasst; eine Schreibdatenpipeline (602), die eingerichtet ist, Schreibbefehle (614) zu empfangen und Daten der Schreibbefehle in einen aus dem Satz logischer Löschblöcke im Unterblockmodus zu schreiben, wobei jeder der Schreibbefehle eine logische Blockadresse umfasst; einen Stromverwalter (606), der eingerichtet ist, zum: Überwachen der Schreibbefehle (606), um einen Workload-Typ zu bestimmen, wobei die Schreibbefehle in Sequenz empfangen werden; Vergleichen logischer Blockadressen der Schreibbefehle mit logischen Blockadressen früherer Schreibbefehle; und Bestimmen, dass der Workload-Typ ein sequentieller Workload-Typ ist, basierend auf den verglichenen logischen Blockadressen; einen Blockzuweisungsverwalter (610), der eingerichtet ist, um einen logischen Löschblock des Satzes logischer Löschblöcke für Speichervorgänge im Vollblockmodus zu rekonfigurieren und Schreibbefehle, die einen sequenziellen Workload-Typ aufweisen, an den rekonfigurierten logischen Löschblock zu leiten und die Schreibdatenpipeline anzuweisen, Daten in den rekonfigurierten logischen Löschblock im Vollblockmodus zu schreiben; und einen Verwalter (612) offener Blöcke (624), der eingerichtet ist, um einen rekonfigurierten logischen Löschblock im Vollblockmodus zu verwalten.
  17. System gemäß Anspruch 16, wobei der Blockzuweisungsverwalter (610) eingerichtet ist, auf eine Metablockverfolgungstabelle (618) Bezug zu nehmen, um einen verfügbaren logischen Löschblock des Satzes von logischen Löschblöcken zu bestimmen, um den verfügbaren logischen Löschblock für Schreibbefehle (614) mit einem sequentiellen Workload-Typ als Reaktion darauf, dass der verfügbare logische Löschblock physische Löschblöcke aufweist, die jeweils zwei Schwester-Unterblöcke umfassen, zu kennzeichnen.
  18. System gemäß Anspruch 16, wobei jeder logische Löschblock, der eingerichtet ist, um Daten im Unterblockmodus zu speichern, einen ersten Schwester-Unterblock und einen zweiten Schwester-Unterblock aufweist, wobei das System ferner eine Speicherbereinigung aufweist, die eingerichtet ist, gültige Daten aus dem ersten Schwester-Unterblock zu konsolidieren und Daten des zweiten Schwester-Unterblocks während eines Speicherbereinigungsvorgangs zu erhalten.
  19. System gemäß Anspruch 16, wobei der Blockzuweisungsverwalter (610) eingerichtet ist, den logischen Löschblock durch Senden eines Vollblockmodus-Befehls an die Vielzahl von Speicher-Dies, die den logischen Löschblock einschließen, zu rekonfigurieren.
  20. System gemäß Anspruch 16, wobei der Blockzuweisungsverwalter (610) eingerichtet ist, um Schreibbefehle (614) mit einem sequenziellen Workload-Typ an den rekonfigurierten logischen Löschblock zu leiten und die Schreibdatenpipeline anzuweisen, Daten in den logischen Löschblock im Vollblockmodus zu schreiben, bis Schreibbefehle mit einem wahlfreien Workload-Typ vom Stromverwalter bestimmt werden.
DE102020116362.2A 2020-03-24 2020-06-22 Dynamische zuweisung von unterblöcken Active DE102020116362B3 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/828,532 2020-03-24
US16/828,532 US11287989B2 (en) 2020-03-24 2020-03-24 Dynamic allocation of sub blocks

Publications (1)

Publication Number Publication Date
DE102020116362B3 true DE102020116362B3 (de) 2021-09-23

Family

ID=77552880

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020116362.2A Active DE102020116362B3 (de) 2020-03-24 2020-06-22 Dynamische zuweisung von unterblöcken

Country Status (4)

Country Link
US (1) US11287989B2 (de)
KR (1) KR102502322B1 (de)
CN (1) CN113448497A (de)
DE (1) DE102020116362B3 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220317922A1 (en) * 2021-03-30 2022-10-06 EMC IP Holding Company LLC Provisioning Zoned Storage Devices to Sequential Workloads
US11211094B1 (en) * 2021-05-11 2021-12-28 Western Digital Technologies, Inc. Data storage device duplicating an ECC sub-block in downstream ECC super-block
EP4180970A1 (de) * 2021-11-15 2023-05-17 Samsung Electronics Co., Ltd. In einer zoneneinheit betriebene speichervorrichtung und datenverarbeitungssystem damit
US20230176778A1 (en) * 2021-12-06 2023-06-08 Micron Technology, Inc. Managing single-level and multi-level programming operations
US11733878B1 (en) 2022-03-29 2023-08-22 Western Digital Technologies, Inc. Data error correction for magnetic disks
US20230418491A1 (en) * 2022-06-22 2023-12-28 Micron Technology, Inc. Memory block utilization in memory systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316177B2 (en) 2001-01-19 2012-11-20 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US20080091871A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
US7818493B2 (en) * 2007-09-07 2010-10-19 Sandisk Corporation Adaptive block list management
US8688948B2 (en) * 2009-10-15 2014-04-01 Freescale Semiconductor, Inc. Flexible memory controller for autonomous mapping of memory
KR101662827B1 (ko) 2010-07-02 2016-10-06 삼성전자주식회사 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법
KR101734200B1 (ko) 2010-12-03 2017-05-11 삼성전자주식회사 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
KR101997572B1 (ko) 2012-06-01 2019-07-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
US9053808B2 (en) 2012-06-21 2015-06-09 Sandisk Technologies Inc. Flash memory with targeted read scrub algorithm
US9466382B2 (en) * 2012-11-14 2016-10-11 Sandisk Technologies Llc Compensation for sub-block erase
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US20140297921A1 (en) 2013-03-26 2014-10-02 Skymedi Corporation Method of Partitioning Physical Block and Memory System Thereof
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9312026B2 (en) 2014-08-22 2016-04-12 Sandisk Technologies Inc. Zoned erase verify in three dimensional nonvolatile memory
US9582201B2 (en) * 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
US9870153B2 (en) * 2014-12-29 2018-01-16 Sandisk Technologies Llc Non-volatile memory systems utilizing storage address tables
KR102301772B1 (ko) 2015-03-09 2021-09-16 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법
US10002073B2 (en) 2015-11-06 2018-06-19 SK Hynix Inc. Selective data recycling in non-volatile memory
TWI604308B (zh) * 2015-11-18 2017-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US10157680B2 (en) 2015-12-22 2018-12-18 Sandisk Technologies Llp Sub-block mode for non-volatile memory
US10268387B2 (en) * 2017-01-04 2019-04-23 Sandisk Technologies Llc Meta-groups in non-volatile storage based on performance times
US10101942B1 (en) * 2017-04-17 2018-10-16 Sandisk Technologies Llc System and method for hybrid push-pull data management in a non-volatile memory
CN107273303B (zh) 2017-05-23 2020-06-26 建荣半导体(深圳)有限公司 一种闪存数据管理系统、方法、闪存芯片及存储装置
US10649661B2 (en) * 2017-06-26 2020-05-12 Western Digital Technologies, Inc. Dynamically resizing logical storage blocks
JP7074453B2 (ja) * 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
US11024390B1 (en) * 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10515701B1 (en) * 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
KR20190083148A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
KR102549545B1 (ko) * 2018-03-22 2023-06-29 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102603916B1 (ko) * 2018-04-25 2023-11-21 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치
US11087849B2 (en) * 2018-05-08 2021-08-10 Sandisk Technologies Llc Non-volatile memory with bit line controlled multi-plane mixed sub-block programming
KR20200025184A (ko) * 2018-08-29 2020-03-10 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
JP2021033847A (ja) * 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316177B2 (en) 2001-01-19 2012-11-20 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
„Die (integrierte Schaltung)‟ auf Wikipedia.com, 9. Oktober 2019. Zugriffsdatum 18. November 2019
„threshold‟ Merriam-Webster.com. Merriam-Webster, 2019. Web. 14 Nov. 2019. Edited

Also Published As

Publication number Publication date
US11287989B2 (en) 2022-03-29
KR102502322B1 (ko) 2023-02-21
US20210303185A1 (en) 2021-09-30
CN113448497A (zh) 2021-09-28
KR20210119252A (ko) 2021-10-05

Similar Documents

Publication Publication Date Title
DE102020116362B3 (de) Dynamische zuweisung von unterblöcken
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE102017104283A1 (de) Löschgeschwindigkeitsbasierte wortleitungssteuerung
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102021107475A1 (de) Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE112015005742B4 (de) Lastadaptiver algorithmus zum packen von daten
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102020107504A1 (de) Nichtflüchtiges speicher-array, das zur leistungsverbesserung von beiden seiten angesteuert wird
DE112020005350T5 (de) Aktualisieren von korrigierenden lesespannung-offsetwerten in nichtflüchtigen direktzugriffsspeichern
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE112020003185T5 (de) Einstellung von block-pool-grössen in einem speichersystem
DE112018000842T5 (de) Mehrkern-on-die-speichermikrocontroller
DE102020116188A1 (de) Verbesserung der sourceseitigen vorladung und verstärkung für das programmieren in umgekehrter reihenfolge
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE