DE112019000139T5 - Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung - Google Patents

Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung Download PDF

Info

Publication number
DE112019000139T5
DE112019000139T5 DE112019000139.6T DE112019000139T DE112019000139T5 DE 112019000139 T5 DE112019000139 T5 DE 112019000139T5 DE 112019000139 T DE112019000139 T DE 112019000139T DE 112019000139 T5 DE112019000139 T5 DE 112019000139T5
Authority
DE
Germany
Prior art keywords
application
host
section
memory
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019000139.6T
Other languages
English (en)
Inventor
Nadav Neufeld
Mei Yi Madeline Ng
Enosh Levi
Rotem Sela
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US
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
Publication of DE112019000139T5 publication Critical patent/DE112019000139T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Landscapes

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

Abstract

Es wird eine Technologie zum dynamischen Zuweisen von Apps zu einem nichtflüchtigen Speicher basierend auf dem Überwachen der Nutzung von Speicherressourcen durch die App offenbart. Für ein Speichersystem, das einen Abschnitt mit hoher Belastbarkeit, wie binärer Speicher (oder Single-Level-Zellspeicher, SLC-Speicher), und einen Abschnitt mit geringerer Belastbarkeit, wie Multi-Level-Zellspeicher (MLC-Speicher), aufweist, kann zunächst eine App, die sowohl den Code zum Ausführen der Anwendung als auch die zugehörige Datennutzlast einschließt, in dem Abschnitt mit geringerer Belastbarkeit gespeichert werden. Das Speichersystem überwacht die Aktivität der App hinsichtlich hoher Aktivität und benachrichtigt den Host, wenn die Anwendung häufig geschrieben wird. Als Reaktion darauf kann der Host anfordern, dass das Speichersystem die App oder nur ihre zugehörige Nutzlast in den Abschnitt mit hoher Belastbarkeit verschiebt.

Description

  • HINTERGRUND
  • Ein Halbleiterspeicher wird in verschiedenen elektronischen Geräten wie Mobiltelefonen, Digitalkameras, persönlichen digitalen Assistenten, medizinischer Elektronik, mobilen Computergeräten, nicht-mobilen Computergeräten und Datenservern verwendet. Halbleiterspeicher kann nichtflüchtigen Speicher, flüchtigen Speicher oder beides aufweisen. Ein nichtflüchtiger Speicher ermöglicht, dass Informationen gespeichert und behalten werden, selbst wenn der nichtflüchtige Speicher nicht mit einer Stromquelle (z. B. einer Batterie) verbunden ist. Beispiele für einen nichtflüchtigen Speicher schließen Flash-Speicher (z. B. Flash-Speicher vom NAND-Typ und NOR-Typ), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM) und andere ein.
  • Wenn ein Speichersystem in einer elektronischen Vorrichtung (z. B. einem Host) eingesetzt wird, kann das Speichersystem verwendet werden, um Daten zu speichern (d. h. zu schreiben) und Daten zu lesen. Die physischen Speicherzellen eines Speichersystems weisen eine begrenzte Lebensdauer im Hinblick auf die Anzahl von Programmier/Löschzyklen auf, die sie durchlaufen können, bevor sie zu versagen beginnen. Folglich kann es für ein Speichersystem wichtig sein, seine Schreibvorgänge zu verwalten, um die Lebensdauer des Speichersystems zu optimieren.
  • Figurenliste
  • Gleich nummerierte Elemente beziehen sich auf gemeinsame Komponenten in den verschiedenen Figuren.
    • 1 ist ein Blockdiagramm einer Ausführungsform eines Speichersystems, das mit dem Host verbunden ist.
    • 2 ist ein Blockdiagramm einer Ausführungsform einer Front-End-Prozessorschaltung. In einigen Ausführungsformen ist die Front-End-Prozessorschaltung Teil einer Steuerung.
    • 3 ist ein Blockdiagramm einer Ausführungsform einer Back-End-Prozessorschaltung. In einigen Ausführungsformen ist die Back-End-Prozessorschaltung Teil einer Steuerung.
    • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets.
    • 5 ist ein Blockdiagramm einer Ausführungsform eines Speicherchips.
    • Die 6A und 6B stellen jeweils Schwellenspannungsverteilungen für Mehrzustandsspeicherzellen und binäre Speicherzellen dar.
    • 7 veranschaulicht eine Ausführungsform für eine Aufteilung des Speicherplatzes in Abschnitte mit hoher Belastbarkeit und geringerer Belastbarkeit.
    • 8 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses für intelligente Partitionierung beschreibt.
    • 9 ist ein Flussdiagramm, das ein Detail von 8 in einer Ausführungsform erweitert.
    • 10 veranschaulicht schematisch eine Ausführungsform für die dynamische Zuweisung von Anwendungen zu einem Speicher basierend auf Nutzungsüberwachung.
    • 11 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zur dynamischen Zuweisung von Anwendungen zu einem Speicher basierend auf Nutzungsüberwachung von der Speichersystemseite aus gesehen beschreibt.
    • 12 ist ein Flussdiagramm, das ein Detail von 11 in einer Ausführungsform erweitert.
    • 13 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zur dynamischen Zuweisung von Anwendungen zu einem Speicher basierend auf Nutzungsüberwachung von der Host-Seite aus gesehen beschreibt.
  • DETAILLIERTE BESCHREIBUNG
  • Nichtflüchtige Speichersysteme sind oft so strukturiert, um einen Abschnitt mit hoher Belastbarkeit, wie z. B. aus binärem oder Single-Level-Zellspeicher (SLC-Speicher) gebildet, und einen Abschnitt mit hoher Dichte, aber geringerer Belastbarkeit einzuschließen, der aus Multi-Level-Zellspeicher (MLC-Speicher) gebildet ist. Wenn ein Host eine Anwendung (oder „App“) in dem nichtflüchtigen Speicher speichert, wird diese in der Regel in dem Abschnitt mit hoher Dichte des Speichers gespeichert. Wenn der Host die App in einer schreibintensiven Art und Weise verwendet, z. B. durch häufiges Neuschreiben der von der App verwendeten und der App (oder „Datennutzlast“) zugehörigen Daten, kann dies den Abschnitt mit hoher Dichte schnell verbrauchen. Es kann schwierig sein, die Nutzung einer bestimmten App vorherzusagen, da diese zwischen verschiedenen Benutzern oder sogar für den gleichen Benutzer zu unterschiedlichen Zeiten erheblich variieren kann. Deshalb kann es schwierig sein, zu bestimmen, in welchem der Speicherabschnitte die App aufbewahrt werden sollte.
  • In der folgenden Erörterung werden Ausführungsformen nichtflüchtiger Speichersysteme vorgestellt, welche die Rate überwachen, mit der eine App Datenschreibvorgänge generiert, wobei die App als Ganzes, sowohl der zugehörige Code als auch die der App zugehörige Datennutzlast, überwacht wird. Wenn eine in dem Speicherabschnitt mit hoher Dichte und geringerer Belastbarkeit gespeicherte App stark beschrieben wird, warnt das Speichersystem den Host. Als Reaktion darauf kann der Host anfordern, dass das Speichersystem die App, entweder die Datennutzlast oder die Datennutzlast und den zugehörigen Code, in den Abschnitt mit höherer Belastbarkeit des nichtflüchtigen Speichers verschiebt. So kann der Host, wenn eine App im Abschnitt mit hoher Belastbarkeit relativ inaktiv ist, ebenfalls informiert werden und anfordern, dass die App in den Abschnitt mit hoher Dichte und geringerer Belastbarkeit verschoben wird. Diese dynamische Zuweisung von Anwendungen zu den unterschiedlichen Speicherabschnitten ermöglicht eine effiziente Nutzung von Speicherressourcen und eine verlängerte Speicherlebensdauer.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Speichersystems 100, das mit einem Host 120 verbunden ist. Das Speichersystem 100 kann die hierin vorgeschlagene Technologie implementieren. Viele unterschiedliche Arten von Speichersystemen können mit der hierin vorgeschlagenen Technologie verwendet werden. Beispielspeichersysteme schließen Solid-State-Laufwerke („SSDs“), Speicherkarten und eingebettete Speichervorrichtungen ein; es können jedoch auch andere Arten von Speichersystemen verwendet werden. Das Speichersystem 100 weist eine Steuerung 102, einen nichtflüchtigen Speicher 104 zum Speichern von Daten und einen lokalen Speicher (z. B. DRAM/ReRAM) 106 auf. Die Steuerung 102 weist eine Front-End-Prozessor (FEP) -Schaltung 110 und eine oder mehrere Back-End-Prozessor (BEP) -Schaltungen 112 auf. In einer Ausführungsform ist die FEP-Schaltung 110 auf einem ASIC implementiert. In einer Ausführungsform ist jede BEP-Schaltung 112 auf einem separaten ASIC implementiert. Die ASICs für jede der BEP-Schaltungen 112 und die FEP-Schaltung 110 sind auf dem gleichen Halbleiter implementiert, sodass die Steuerung 102 als ein System auf einem Chip („SoC“) hergestellt wird. Die FEP-Schaltung 110 und die BEP-Schaltung 112 schließen beide ihre eigenen Prozessoren ein. In einer Ausführungsform arbeiten die FEP-Schaltung 110 und die BEP-Schaltung 112 als Master-Slave-Konfiguration, wobei die FEP-Schaltung 110 der Master ist und jede BEP-Schaltung 112 ein Slave ist. Beispielsweise implementiert die FEP-Schaltung 110 eine Flash-Übersetzungsschicht (FTL) oder eine Medienverwaltungsschicht (MML), die eine Speicherverwaltung (z. B. Speicherbereinigung, Abnutzungsnivellierung usw.), eine Übersetzung von logischen zu physikalischen Adressen, eine Kommunikation mit dem Host, eine Verwaltung von DRAM (lokaler flüchtiger Speicher) und eine Verwaltung des Gesamtbetriebs der SSD (oder eines anderen nichtflüchtigen Speichersystems) durchführt. Die BEP-Schaltung 112 verwaltet Speicheroperationen in den Speicherpaketen/-chip auf Anforderung der FEP-Schaltung 110. Zum Beispiel kann die BEP-Schaltung 112 die Lese -, Lösch- und Programmierprozesse ausführen. Zusätzlich kann die BEP-Schaltung 112 eine Pufferverwaltung durchführen, spezifische Spannungspegel einstellen, die von der FEP-Schaltung 110 benötigt werden, eine Fehlerkorrektur (ECC) durchführen, die Toggle-Modus-Schnittstellen zu den Speicherpaketen steuern usw. In einer Ausführungsform ist jede BEP-Schaltung 112 für ihren eigenen Satz von Speicherpaketen verantwortlich.
  • In einer Ausführungsform weist der nichtflüchtige Speicher 104 eine Vielzahl von Speicherpaketen auf. Jedes Speicherpaket schließt einen oder mehrere Speicherchips ein. Daher ist die Steuerung 102 mit einem oder mehreren nichtflüchtigen Speicherchips verbunden. In einer Ausführungsform verwendet jeder Speicherchip in den Speicherpaketen 104 einen NAND-Flash-Speicher (einschließlich eines zweidimensionalen NAND-Flash-Speichers und/oder eines dreidimensionalen NAND-Flash-Speichers). In anderen Ausführungsformen kann das Speicherpaket andere Speichertypen einschließen.
  • Die Steuerung 102 kommuniziert mit dem Host 120 über eine Schnittstelle 130, die NVM-Express (NVMe) über PCI-Express (PCle) implementiert. Für die Zusammenarbeit mit dem Speichersystem 100 schließt der Host 120 einen Host-Prozessor 122, einen HostSpeicher 124 und eine PCIe-Schnittstelle 126 ein, die entlang dem Bus 128 angeschlossen ist. Der Hostspeicher 124 ist der physikalische Speicher des Hosts und kann ein DRAM, ein SRAM, ein nichtflüchtiger Speicher oder ein anderer Speichertyp sein. Host 120 ist extern und getrennt von dem Speichersystem 100. In einer Ausführungsform ist das Speichersystem 100 in den Host 120 eingebettet.
  • 2 ist ein Blockdiagramm einer Ausführungsform der FEP-Schaltung 110. 2 zeigt eine PCIe-Schnittstelle 150 zum Kommunizieren mit dem Host 120 und einen Hostprozessor 152 in Kommunikation mit dieser PCIe-Schnittstelle. Der Hostprozessor 152 kann jeder in der Technik bekannte Prozessortyp sein, der für die Implementierung geeignet ist. Der Hostprozessor 152 kommuniziert mit einem Network-On-Chip (NOC) 154. Ein NOC ist ein Kommunikationsuntersystem auf einer integrierten Schaltung, in der Regel zwischen Kernen in einem SoC. NOCs können synchrone und asynchrone Taktdomänen umspannen oder eine ungetaktete asynchrone Logik verwenden. Die NOC-Technologie wendet Netzwerktheorie und -verfahren auf On-Chip-Kommunikationen an und liefert beträchtliche Verbesserungen gegenüber herkömmlichen Bus- und Crossbar-Verbindungen. NOC verbessert die Skalierbarkeit von SoCs und die Leistungseffizienz komplexer SoCs im Vergleich zu anderen Designs. Die Drähte und die Verbindungen des NOC werden von vielen Signalen gemeinsam genutzt. Eine hohe Parallelität wird erreicht, da alle Verbindungen in dem NOC gleichzeitig an unterschiedlichen Datenpaketen arbeiten können. Daher stellt ein NOC, wenn die Komplexität integrierter Subsysteme wächst, eine verbesserte Leistung (wie Durchsatz) und Skalierbarkeit im Vergleich zu früheren Kommunikationsarchitekturen (z. B. dedizierten Punkt-zu-Punkt-Signaldrähten, gemeinsam genutzten Bussen oder segmentierten Bussen mit Brücken) bereit. Verbunden mit und in Kommunikation mit NOC 154 ist der Speicherprozessor 156, SRAM 160 und eine DRAM-Steuerung 162. Die DRAM-Steuerung 162 wird verwendet, um mit dem DRAM (z. B. DRAM 106) zu arbeiten und damit zu kommunizieren. SRAM 160 ist ein lokaler RAM-Speicher, der von dem Speicherprozessor 156 verwendet wird. Der Speicherprozessor 156 wird verwendet, um die FEP-Schaltung zu betreiben und die verschiedenen Speicheroperationen auszuführen. In Kommunikation mit dem NOC stehen auch zwei PCIe-Schnittstellen 164 und 166. In der Ausführungsform von 2 schließt die SSD-Steuerung zwei BEP-Schaltungen 112 ein; daher gibt es zwei PCIe-Schnittstellen 164/166. Jede PCIe-Schnittstelle kommuniziert mit einer der BEP-Schaltungen 112. In anderen Ausführungsformen können mehr oder weniger als zwei BEP-Schaltungen 112 vorhanden sein; daher kann es mehr als zwei PCIe-Schnittstellen geben.
  • Die FEP-Schaltung 110 kann auch eine Flash--Translation-Layer (FTL) oder, allgemeiner, eine Medienverwaltungsschicht (MML) 158 einschließen, die eine Speicherverwaltung (z.B. Speicherbereinigung, Abnutzungsnivellierung, Lastausgleich usw.), eine Umwandlung von logischen zu physikalischen Adressen, eine Kommunikation mit dem Host, eine Verwaltung von DRAM (lokaler flüchtiger Speicher) und eine Verwaltung des Gesamtbetriebs der SSD oder eines anderen nichtflüchtigen Speichersystems durchführt. Die Medienverwaltungsschicht MML 158 kann als Teil der Speicherverwaltung integriert sein, die Speicherfehler behandeln und mit dem Host interagieren kann. Insbesondere kann MML ein Modul in der FEP-Schaltung 110 sein und für die Interna der Speicherverwaltung verantwortlich sein. Insbesondere kann die MML 158 einen Algorithmus in der Firmware der Speichervorrichtung einschließen, der Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur (z.B. 326 von 5 weiter unten) eines Chips umwandelt. Die MML 158 kann erforderlich sein, weil: 1) der Speicher eine begrenzte Dauer haben kann; 2) die Speicherstruktur nur in Vielfachen von Seiten beschrieben werden kann; und/oder 3) die Speicherstruktur nicht beschrieben werden kann, falls sie nicht als Block gelöscht wird. Die MML 158 versteht diese potentiellen Einschränkungen der Speicherstruktur, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die MML 158, die Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur zu übersetzen.
  • 3 ist ein Blockdiagramm einer Ausführungsform einer BEP-Schaltung 112. 3 zeigt eine PCle Schnittstelle 200 zum Kommunizieren mit der FEP-Schaltung 110 (z.B., in Verbindung mit einer der PCIe-Schnittstellen 164 und 166 von 2). Die PCIe-Schnittstelle 200 ist in Verbindung mit zwei NOCs, 202 und 204. In einer Ausführungsform können die beiden NOCs in ein großes NOC kombiniert werden. Jeder NOC (202/204) ist über eine XOR-Engine (224/254) und eine ECC-Engine (226/256) mit dem SRAM (230/260), einem Puffer (232/262), einem Prozessor (220/250) und einer Datenpfadsteuerung (222/252) verbunden. Die ECC-Engines 226/256 werden verwendet, um eine Fehlerkorrektur durchzuführen, wie in der Technik bekannt ist. Die XOR-Engines 224/254 werden zum XOR der Daten verwendet, sodass Daten auf eine Weise kombiniert und gespeichert werden können, die im Falle eines Programmierfehlers wiederhergestellt werden kann. Die Datenpfadsteuerung 222 ist mit einem Schnittstellenmodul verbunden, um über vier Kanäle mit Speicherpaketen zu kommunizieren. Somit ist der obere NOC 202 einer Schnittstelle 228 für vier Kanäle zur Kommunikation mit Speicherpaketen zugeordnet, und der untere NOC 204 ist einer Schnittstelle 258 für vier zusätzliche Kanäle zur Kommunikation mit Speicherpaketen zugeordnet. Jede Schnittstelle 228/258 enthält vier Toggle-Mode-Schnittstellen (TM-Schnittstelle), vier Puffer und vier Scheduler. Für jeden Kanal gibt es einen Scheduler, einen Puffer und eine TM-Schnittstelle. Der Prozessor kann irgendein Standardprozessor sein, der in der Technik bekannt ist. Die Datenpfadsteuerungen 222/252 können ein Prozessor, ein FPGA, ein Mikroprozessor oder eine andere Art von Steuerung sein. Das XOR-Engines 224/254 und ECC-Engines 226/256 sind dedizierte Hardware-Schaltungen, bekannt als Hardware-Beschleuniger. In anderen Ausführungsformen können die XOR-Engines 224/254 und ECC-Engines 226/256 in Software implementiert sein. Die Scheduler, Puffer und TM-Schnittstellen sind Hardwareschaltungen.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets 104, das eine Vielzahl von Speicherchips 292 einschließt, die mit einem Speicherbus 294 (Datenleitungen und Chipfreigabeleitungen) verbunden sind. Der Speicherbus 294 ist mit einer Toggle-Mode-Schnittstelle 296 zur Kommunikation mit der TM-Schnittstelle einer BEP-Schaltung 112 (siehe z. B. 3) verbunden. In einigen Ausführungsformen kann das Speicherpaket eine kleine Steuerung einschließen, die mit dem Speicherbus und der TM-Schnittstelle verbunden ist. Das Speicherpaket kann einen oder mehrere Speicherchips aufweisen. In einer Ausführungsform schließt jedes Speicherpaket acht oder 16 Speicherchips ein; andere Anzahlen von Speicherchips können jedoch ebenfalls implementiert werden. Die hierin beschriebene Technologie ist nicht auf eine spezifische Anzahl von Speicherchips beschränkt.
  • 5 ist ein Funktionsblockdiagramm einer Ausführungsform eines Speicherchips 300. Die in 5 dargestellten Komponenten sind elektrische Schaltungen. In einer Ausführungsform schließt jeder Speicherchip 300 eine Speicherstruktur 326, eine Steuerschaltlogik 310 und Lese-/Schreibschaltungen 328 ein. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilen-Decodierer 324 und durch Bitleitungen über einen Spalten-Decodierer 332 adressierbar. Die Lese-/Schreibschaltungen 328 schließen mehrere Leseblöcke 350 einschließlich SB1, SB2, ..., SBp (Messschaltung) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Befehle und Daten werden zwischen der Steuerung und dem Speicherchip 300 über Leitungen 318 übertragen. In einem Ausführungsbeispiel schließt der Speicherchip 300 einen Satz von Eingangs-und/oder Ausgangs (I/O)-Stiften ein, die mit den Leitungen 318 verbunden sind.
  • Die Steuerschaltung 310 wirkt mit den Lese-/Schreibschaltungen 328 zusammen, um Speicheroperationen (z. B. Schreiben, Lesen und andere) auf der Speicherstruktur 326 auszuführen, und schließt eine Zustandsmaschine 312, einen On-Chip-Adressdecodierer 314, eine Leistungssteuerschaltung 316 und eine Temperaturerfassungsschaltung 318 ein. Die Zustandsmaschine 312 stellt eine Chippegelsteuerung von Speichervorgängen bereit. In einer Ausführungsform ist die Zustandsmaschine 312 durch Software programmierbar. In anderen Ausführungsformen verwendet die Zustandsmaschine 312 keine Software und ist vollständig in Hardware (z. B. elektrischen Schaltungen) implementiert. In einer anderen Ausführungsform wird die Zustandsmaschine 312 durch einen Mikrocontroller ersetzt. In einer Ausführungsform schließt die Steuerschaltlogik 310 Puffer, wie Register, ROM-Sicherungen und andere Speichervorrichtungen zum Speichern von Vorgabewerten wie Basisspannungen und anderen Parametern ein.
  • Der On-Chip-Adressdecodierer 314 stellt eine Adressschnittstelle zwischen Adressen, die von einer Steuerung 102 verwendet werden, zu der Hardwareadresse, die von den Decodierern 324 und 332 verwendet wird, bereit. Das Leistungssteuermodul 316 steuert die Leistung und Spannungen, mit denen die Wortleitungen und Bitleitungen bei Speicheroperationen versorgt werden. Das Leistungssteuermodul 316 kann Ladungspumpen zum Erzeugen von Spannungen einschließen. Die Leseblöcke schließen Bitleitungstreiber ein.
  • Für die Zwecke dieses Dokuments, bezieht sich der Begriff „eine oder mehrere Steuerschaltungen“ auf eine Steuerung, eine Zustandsmaschine, einen Mikrocontroller und/oder die Steuerschaltung 310, oder andere analoge Schaltungen, die verwendet werden, um nichtflüchtige Speicher zu steuern.
  • In einer Ausführungsform weist die Speicherstruktur 326 ein dreidimensionales Array von nichtflüchtigen Speicherzellen auf, auf denen mehrere Speicherstufen über einem einzigen Substrat, wie einem Wafer, ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Silizium- (oder anderen Typ von) Substrat angeordnet ist. In einem Beispiel schließen die nichtflüchtigen Speicherzellen vertikale NAND-Ketten mit ladungseinfangendem Material ein, wie es zum Beispiel im US-Patent 9,721,662 beschrieben ist, auf das hier in seiner Gesamtheit Bezug genommen wird.
  • In einer anderen Ausführungsform weist die Speicherstruktur 326 ein zweidimensionales Speicherarray von nichtflüchtigen Speicherzellen auf. In einem Beispiel, sind die nichtflüchtigen Speicherzellen NAND-Flash-Speicherzellen unter Verwendung von Floating-Gates wie beschrieben, zum Beispiel, im U.S. Patentschrift 9,082,502 , das hierin durch Bezugnahme in seiner Gesamtheit aufgenommen ist. Andere Arten von Speicherzellen (z. B. NOR-Typ-Flashspeicher) können ebenfalls verwendet werden.
  • Die exakte Art der Speicher-Array-Architektur oder Speicherzelle, die in der Speicherstruktur 326 eingeschlossen ist, ist nicht auf die obigen Beispiele beschränkt. Viele unterschiedliche Arten von Speicher-Array-Architekturen oder Speichertechnologien können verwendet werden, um die Speicherstruktur 326 zu bilden. Es ist keine spezielle nichtflüchtige Speichertechnologie für die Zwecke der neuen beanspruchten Ausführungsformen, die hier vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 326 schließen ReRAM-Speicher, magnetoresistive Speicher (z. B. MRAM, Spin Transfer Torque MRAM, Spin Orbit Torque MRAM), Phasenwechselspeicher (z. B. PCM) und dergleichen ein. Beispiele von geeigneten Technologien für die Speicherzellen-Architekturen der Speicherstruktur 126 schließen zweidimensionale Arrays, dreidimensionale Arrays, KreuzpunktArrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen ein.
  • Ein Beispiel eines ReRAM- oder PCMRAM-Kreuzpunktspeichers schließt reversible Widerstandsschaltelemente ein, die in Kreuzpunktarrays angeordnet sind, auf die durch X-Leitungen und Y-Leitungen (z. B. Wortleitungen und Bitleitungen) zugegriffen wird. In einer anderen Ausführungsform können die Speicherzellen leitfähige Brückenspeicherelemente einschließen. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als Zustandsänderungselement basierend auf der physikalischen Verlagerung von Ionen innerhalb eines Festelektrolyten verwendet werden. In einigen Fällen kann ein leitfähiges Brückenspeicherelement zwei feste Metallelektroden einschließen, eine relativ inerte (z. B. Wolfram) und eine elektrochemisch aktive (z. B. Silber oder Kupfer), mit einer dünnen Folie des Festelektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, sodass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmschwellenwerten als Funktion der Temperatur aufweisen.
  • Ein magnetoresistiver Speicher (MRAM) speichert Daten durch Magnetspeicherelemente. Die Elemente sind aus zwei durch eine dünne Isolierschicht getrennte ferromagnetischen Platten gebildet, von denen jede eine Magnetisierung halten kann. Eine der beiden Platten ist ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; die Magnetisierung der anderen Platte kann so geändert werden, dass sie der eines externen Felds entspricht, um Speicher zu speichern. Eine Speichervorrichtung wird aus einem Gitter solcher Speicherzellen aufgebaut. Bei einer Ausführungsform zum Programmieren liegt jede Speicherzelle zwischen einem Paar von Schreibleitungen, die in rechten Winkeln zueinander parallel zu der Zelle angeordnet sind, eine über und eine unter der Zelle. Wenn Strom durch sie fließt, wird ein Induktionsmagnetfeld erzeugt.
  • Phasenwechselspeicher (PCM) nutzen das einzigartige Verhalten von Chalkogenidglas aus. Eine Ausführungsform verwendet ein GeTe-Sb2Te3-Übergitter, um nichtthermische Phasenänderungen zu erreichen, indem einfach der Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) geändert wird. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gesperrt werden, indem die Speicherzellen daran gehindert werden, das Licht zu empfangen. In anderen PCM-Ausführungsformen werden die Speicherzellen durch Stromimpulse programmiert. Es sei darauf hingewiesen, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Schwingung oder einen Stoß eines Schalls, Stroms, Spannungslichts oder einer anderen Welle einschließt.
  • Der Durchschnittsfachmann wird erkennen, dass die hierin beschriebene Technologie nicht auf eine einzige spezifische Speicherstruktur beschränkt ist, sondern viele relevante Speicherstrukturen gemäß dem Geist und Umfang der Technologie, wie hierin beschrieben und wie einem Fachmann der Technik bekannt, abdeckt.
  • Bei den verschiedenen Technologien haben die Speicherzellen einer Speicherstruktur in der Regel eine begrenzte Lebensdauer. Durch die Belastung des wiederholten Lesens, Schreibens und Löschens auf einer Speicherzelle, insbesondere das Schreiben und Löschen, wird eine Speicherzelle irgendwann verbraucht. Folglich wird eine Speicherstruktur oft nur bis zu einer bestimmten Anzahl von Programm-/Löschzyklen (P/E-Zyklen) oder einer anderen Altersmetrik als zuverlässig angesehen, ab der die Fehlermenge die Fehlerkorrekturfähigkeiten des Speichersystems überschreiten kann und die Struktur nicht mehr als zuverlässig angesehen werden kann.
  • Speicherstrukturen können so hergestellt werden, dass sie erhöhte Lebensdauern aufweisen, aber dies ist oft ein Kompromiss mit anderen Überlegungen. Um beispielsweise die Speicherdichte zu erhöhen, können Speicherzellen mehr Daten in jeder Zelle speichern, wobei ein Mehrzustands- oder Multi-Level-Zellenformat (MLC-Format) verwendet wird, bei dem jede Speicherzelle so eingerichtet ist, dass sie 2, 3 oder sogar mehr Datenbits speichert. Die erhöhte Speicherdichte eines MLC-Speichers geht in der Regel auf Kosten einer geringeren Belastbarkeit und geringeren Leistung. Aus diesem Grund werden einige Speichersysteme einen Abschnitt mit hoher Belastbarkeit und einen Abschnitt mit geringerer Belastbarkeit einschließen, wobei der Abschnitt mit geringerer Belastbarkeit einen weiteren Vorteil aufweisen kann, wie z. B. eine höhere Speicherdichte. Ein Beispiel hierfür ist, wenn ein Teil eines Speichersystems eingerichtet ist, um Daten in einem Format mit hoher Dichte zu speichern, z. B. 3 oder 4 Bits pro Speicherzelle, während ein anderer Teil für eine hohe Belastbarkeit eingerichtet ist und weniger Bits pro Zelle speichert. Obwohl die folgende Erörterung allgemeiner anwendbar ist, nimmt das Folgende, wenn auf ein bestimmtes Beispiel Bezug genommen wird, in der Regel auf eine Ausführungsform Bezug, bei der ein Speichersystem einen Abschnitt mit hoher Belastbarkeit, der Daten in einem Binär- oder SLC-Format speichert, und einen Abschnitt mit geringerer Belastbarkeit aufweist, der Daten in einem Mehrzustands- oder MLC-Format speichert.
  • Die 6A und 6B veranschaulichen jeweils Speicherzellenverteilungen, die in einem MLC- und einem SLC-Format eingerichtet sind, in einer Ausführungsform, bei der Datenzustände Bereichen von Schwellenspannungen entsprechen. Die vorstehend erörterten Speichersysteme können gelöscht, programmiert/geschrieben und gelesen werden. Am Ende eines erfolgreichen Programmierprozesses sollten die Schwellenspannungen der Speicherzellen innerhalb einer oder mehrerer Verteilungen von Schwellenspannungen für programmierte Speicherzellen oder gegebenenfalls innerhalb einer Verteilung von Schwellenspannungen für gelöschte Speicherzellen liegen. 6A veranschaulicht beispielhafte Schwellenspannungsverteilungen für das Speicherzellen-Array, wenn jede Speicherzelle mehr als ein Bit Daten in einem Multi-Level-Zellenformat (MLC-Format) speichert, in diesem Fall drei Bits an Daten. Andere Ausführungsformen können jedoch andere Datenkapazitäten pro Speicherzelle verwenden (wie ein, zwei, vier oder fünf Bits an Daten pro Speicherzelle). 6A zeigt acht Schwellenspannungsverteilungen, die acht Datenzuständen entsprechen. Die erste Schwellenspannungsverteilung (Datenzustand) S0 steht für Speicherzellen, die gelöscht sind. Die anderen sieben Schwellenspannungsverteilungen (Datenzustände) S1 bis S7 stellen Speicherzellen dar, die programmiert sind und daher auch programmierte Zustände genannt werden. Jede Schwellenspannungsverteilung (Datenzustand) entspricht vorbestimmten Werten für den Satz an Datenbits. Die spezifische Beziehung zwischen den in die Speicherzelle programmierten Daten und den Schwellenspannungspegeln der Zelle hängt von dem Datencodierschema ab, das für die Zellen verwendet wird. In einer Ausführungsform werden Datenwerte den Schwellenspannungsbereichen unter Verwendung einer Gray-Code-Zuweisung zugewiesen, sodass, wenn sich die Schwellenspannung eines Speichers fälschlicherweise in seinen benachbarten physikalischen Zustand verschiebt, nur ein Bit betroffen ist.
  • 6A zeigt auch sieben Lesereferenzspannungen Vr1, Vr2, Vr3, Vr4, Vr5, Vr6 und Vr7 zum Lesen von Daten aus Speicherzellen. Durch Testen (z. B. Ausführen von Lesevorgängen), ob die Schwellenspannung einer gegebenen Speicherzelle über oder unter den sieben Lesereferenzspannungen liegt, kann das System bestimmen, in welchem Datenzustand (d. h. S0, S1, S2, S3, ...) sich eine Speicherzelle befindet.
  • 6A zeigt auch sieben Prüfreferenzspannungen, Vv1, Vv2, Vv3, Vv4, Vv5, Vv6 und Vv7. Wenn Speicherzellen auf den Datenzustand S1 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv1 ist. Wenn Speicherzellen auf den Datenzustand S2 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv2 ist. Wenn Speicherzellen in den Datenzustand S3 programmiert werden, bestimmt das System, ob Speicherzellen ihre Schwellenspannung aufweisen, die größer oder gleich Vv3 ist. Wenn Speicherzellen auf den Datenzustand S4 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv4 ist. Wenn Speicherzellen auf den Datenzustand S5 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv5 ist. Wenn Speicherzellen auf den Datenzustand S6 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv6 ist. Wenn Speicherzellen auf den Datenzustand S7 programmiert werden, prüft das System, ob diese Speicherzellen eine Schwellenspannung aufweisen, die größer oder gleich Vv7 ist.
  • In einer Ausführungsform, die als Vollsequenzprogrammierung bekannt ist, können Speicherzellen aus dem gelöschten Datenzustand S0 direkt in einen der programmierten Datenzustände S1 bis S7 programmiert werden. Zum Beispiel kann eine Population von Speicherzellen, die programmiert werden sollen, zuerst gelöscht werden, so dass sich alle Speicherzellen in der Population im gelöschten Datenzustand S0 befinden. Dann wird ein Programmierprozess verwendet, um Speicherzellen direkt in Datenzustände S1, S2, S3, S4, S5, S6 und/oder S7 zu programmieren. Während zum Beispiel einige Speicherzellen von dem Datenzustand S0 auf den Datenzustand S1 programmiert werden, werden andere Speicherzellen vom Datenzustand S0 auf den Datenzustand S2 und/oder vom Datenzustand S0 auf den Datenzustand S3 und so weiter programmiert. Die Pfeile von 6A stellen die vollständige Sequenzprogrammierung dar. Die hierin beschriebene Technologie kann auch mit anderen Programmierarten zusätzlich zur Vollsequenzprogrammierung (einschließlich, aber nicht beschränkt auf Mehrstufen-/Phasenprogrammierung) verwendet werden. In einigen Ausführungsformen können sich die Datenzustände S1 bis S7 überlappen, wobei sich die Steuerung 102 auf die ECC stützt, um die korrekten Daten, die gespeichert werden, zu identifizieren.
  • 6B stellt ein Beispiel für die Schwellenspannung dar, wenn die Speicherzellen ein Datenbit pro Speicherzelle in einem binären oder Single-Level-Zellenformat (SLC-Format) speichern. 6B wiederholt das Element aus 6A, aber wenn die Speicherzellen jetzt nur noch 1 Datenbit speichern, wobei die Datenzustände der gelöschte Zustand S0' und ein einzelner programmierter Zustand S1' sind. Die Prüfspannung zum Programmieren von S1' ist Vv1' und die Lesespannung zum Abtasten von S1' ist Vr1'. Der Betrieb von Speicherzellen in einem SLC-Modus erfolgt weitgehend wie vorstehend in Bezug auf 6A für den MLC-Fall beschrieben, wobei jedoch bei einem Programmiervorgang gelöschte Speicherzellen entweder im Zustand S0' belassen oder in den einzigen programmierten Zustand S1' programmiert werden. Wie aus dem Vergleich der 6A und 6B ersichtlich ist, weisen die SLC-Verteilungen von 6B einen höheren Trennungsgrad auf als die MLC-Verteilungen von 6A. Dies ermöglicht einen schonenderen Betrieb des SLC-Speichers, da die Spannen zwischen den Zuständen größer sind, so dass die Programmierung nicht so anspruchsvoll sein muss und niedrigere Spannungspegel und eine geringere Anzahl von Programmierimpulsen verwendet werden können. Zum Beispiel sind in der gezeigten Ausführungsform die Speicherzellen der S1'-Verteilung von 6B nur auf eine Prüfstufe von Vv1' programmiert, was etwa dem von Vv3 für den Zustand S3 in 6A entspricht. Dadurch wird vermieden, dass die SLC-Speicherzellen den hohen Programmierspannungen ausgesetzt werden, die für die Zustände S4-S7 in den MLC-Speicherzellen in 6A verwendet werden. Ebenso muss die für S0' verwendete SLC-Löschstufe nicht so tief sein wie die für S0 verwendete MLC-Löschstufe. Diese Merkmale sorgen dafür, dass Speicherzellen, die im SLC-Format betrieben werden, eine längere Lebensdauer aufweisen.
  • 7 veranschaulicht eine Ausführungsform für eine Aufteilung des Speicherplatzes 604 des Speichersystems in Abschnitte mit hoher Belastbarkeit und geringerer Belastbarkeit. Der Speicherplatz schließt auch den Systemdatenbereich 601 ein, der Daten einschließt, die vom Speichersystem bei seinem Betrieb verwendet werden, wie das Betriebssystem OS 605 und die Bootdaten Boot 1 603a für das System, zusammen mit einer Sicherungskopie der Bootdaten Boot 2 603b. Angesichts der Bedeutung solcher Daten für den Betrieb des Speichersystems ist dieser Systemdatenbereich 601 als SLC-Abschnitt mit hoher Belastbarkeit eingerichtet.
  • Der Speicherplatz 604 schließt auch einen MLC-Abschnitt mit hoher Dichte 611 und einen SLC-Abschnitt mit hoher Belastbarkeit 613 zum Speichern von Benutzerdaten ein. Obwohl der MLC-Abschnitt 611 Daten mit einer höheren Dichte als der SLC-Abschnitt 613 speichert, weist er eine niedrigere Leistung auf, da er länger braucht, um Daten zu lesen und zu schreiben, und eine geringere Belastbarkeit hat. In einem ziemlich typischen Beispiel kann der SLC-Abschnitt 613 sicher -50.000 P/E-Zyklen durchlaufen, während der MLC-Abschnitt 611 eine Belastbarkeit -5.000 aufweist. Das Speichersystem kann Daten, auf die häufig zugegriffen wird, wie z. B. eine Dateizugriffstabelle (File Access Table, FAT) mit Daten zur Konvertierung von logischen in physische Adressen für das Speichersystem, im SLC-Abschnitt 613 aufbewahren. In einigen Ausführungsformen kann das Speichersystem anfänglich Benutzerdaten in den SLC-Abschnitt 613 schreiben, indem dieser aufgrund seiner höheren Schreibrate als komprimierter „binärer Cachespeicher“ verwendet wird, und die Benutzerdaten dann anschließend in den MLC-Abschnitt mit hoher Dichte 611 übertragen. Obwohl 7 den Systemdatenbereich 601, den MLC-Abschnitt 611 mit hoher Dichte und den SLC-Abschnitt 613 mit hoher Belastbarkeit jeweils in drei verschiedene Bereiche unterteilt darstellt, können diese in der Speicherstruktur eines tatsächlichen Chips über die physische Speicherstruktur verschachtelt sein.
  • Je nach Ausführungsform können die für den Speicherplatz 604 veranschaulichte Art der Unterteilung auf mehrere Speicherchips verteilt sein oder einzelne Speicherchips auf diese Weise unterteilt werden. Um wieder auf 4 Bezug zu nehmen: Bei einigen Speichersystemen, wie z. B. einer SSD mit einer großen Anzahl von Chips, können einer oder mehrere der Speicherchips 292 ein SLC-spezifischer Chip sein, der zum schnelleren Speichern von Daten verwendet wird, die in das Speichersystem geschrieben werden, während andere der Speicherchips 292 MLC-Speicherchips mit hoher Dichte sind. In anderen Speichersystemen, wie z. B. einer Speicherkarte oder einem eingebetteten Speichersystem mit wenigen Chips, kann die Unterteilung in 7 einer einzelnen Speicherstruktur eines Chips entsprechen, wie z. B. der Speicherstruktur 326 in 5. Ein Großteil der folgenden Erörterung wird hauptsächlich Ausführungsformen berücksichtigen, bei denen die in 7 veranschaulichte Unterteilung des Speicherplatzes einer Speicherstruktur 326 eines einzelnen Speicherchips 292 entspricht, wobei jedoch davon ausgegangen wird, dass sich der Speicherplatz in anderen Ausführungsformen über mehrere Chips erstrecken kann.
  • Die Steuerung 102 des Speichersystems 100 kann die Häufigkeit überwachen, mit der auf logische Adressen zugegriffen wird, und wenn eine bestimmte logische Adresse häufig neu geschrieben wird, kann diese logische Adresse in dem SLC-Abschnitt mit hoher Belastbarkeit 613 aufbewahrt werden. Komplizierter wird die Situation jedoch, wenn es um das Speichern von Benutzer-Apps auf dem Speichersystem geht. Eine App wird sowohl den Code zum Ausführen der App als auch eine Datennutzlast einschließen, die der App zugeordnet ist. Obwohl jede einzelne logische Adresse, die einer App zugeordnet ist, einen Schwellenwert für Programm-/Löschzyklen nicht überschreiten darf, kann die Anwendung als Ganzes dennoch eine große Anzahl von Schreibvorgängen im Speicher verursachen; und selbst wenn eine bestimmte logische Adresse, die einer App zugeordnet ist, einen Schwellenwert für Programm-/Löschzyklen überschreitet, könnte dies dazu führen, dass nur dieser Teil der App verlagert wird, während der Rest der App an Ort und Stelle bleibt. Folglich können einige Anwendungen oder Anwendungsfälle ausgiebig in den Speicher schreiben, und wenn diese Anwendungen in einem Speicherabschnitt mit geringer Belastbarkeit aufbewahrt werden, verkürzt dies die Speicherlebensdauer des Produkts.
  • Viele Endvorrichtungen, die einen nichtflüchtigen Speicher verwenden, wie z. B., aber nicht nur, Mobiltelefone, Tablets, Fernseher (TVs), Set-Top-Boxen (STBs), Smart Watches und so weiter, bieten eine offene Anwendungsumgebung (z. B. Android-Apps, iOS-Apps). Die Anwendungen werden oft von verschiedenen App-Entwicklern entwickelt und können die Vorrichtung Flash oder eine andere nichtflüchtige Speichertechnologie nutzen. Apps können sich durch die Menge der Daten, die sie in einen Speicher schreiben, erheblich unterscheiden, und zwar sowohl zwischen den einzelnen Apps als auch - bei derselben App - zwischen unterschiedlichen Benutzern. Beispielsweise kann eine Video-Streaming-App den eingebetteten Speicher einer STB zum Puffern von Video verwenden, was zu umfangreichen Schreibvorgängen in den Speicher führt. Wenn schreibintensive Apps in einen Speicherabschnitt mit geringer Belastbarkeit schreiben, verkürzt dies die Lebensdauer des Speichers und der STB, in die dieser eingebettet ist.
  • Frühere Speichersysteme haben das Problem häufig geschriebener logischer Adressbereiche, wie z. B. Logical Block Addresses (LBAs) für Flash oder andere blockstrukturierte Speicher, auf verschiedene Weise gelöst. Beispielsweise weisen Speicherverwaltungsschichten in der Regel Lastausgleichsmodule auf, um die Anzahl der P/E-Zyklen über physische Speicherbereiche, wie z. B. Flash-Blöcke, auszugleichen. Dieses Verfahren versucht sicherzustellen, dass alle physischen Blöcke mehr oder weniger nivelliert sind und kein spezifischer Block übermäßig beansprucht wird. Dieser Ansatz betrachtet jedoch die Schreibhäufigkeit auf der Ebene des Blocks oder eines anderen physischen Adressbereichs, nicht auf der Ebene einer App, die mehrere solcher Bereiche abdeckt.
  • Ein anderer früherer Ansatz besteht darin, dass ein Host eine Speichervorrichtung mit einer statischen speziellen (oder „erweiterten“) physischen Partitionierung oder mit einem vordefinierten statischen logischen Adressbereich (z. B. LBA) einrichtet. Die Speichervorrichtung kann dann Blöcke mit verbesserten Belastbarkeitseigenschaften (z. B. SLC-Blöcke oder andere Speicher mit hoher Belastbarkeit) für diese eingerichteten Bereiche zuweisen. In beiden Fällen (erweiterte Partitionierung und vordefinierter logischer Adressbereich) bildet der Host die physischen Bereiche mit hoher Belastbarkeit des Speichers auf einer bestimmten logischen Adresse oder einem bestimmten Adressbereich ab. Die Abbildung kann sich jedoch je nach Anwendungsfällen ändern oder nicht immer gültig sein. Daher hat die statische Abbildung der Adresse auf einen physischen Block einen inhärenten Nachteil. (Im Folgenden wird oft auf LBAs Bezug genommen, da der logische Block eine häufig verwendete Flash-Speicherstruktur ist, aber im Allgemeinen kann dies einfach als Darstellung eines Bereichs von logischen Adressen verstanden werden.)
  • Um die Speichereffizienz und Lebensdauer beim Speichern von Apps zu verbessern, werden in der folgenden Erörterung Techniken für eine dynamische Zuweisung von Apps an den Speicher basierend auf einer Nutzungsüberwachung sowie Techniken für eine „intelligente Partitionierung“ des Speicherplatzes in einen Abschnitt mit hoher Belastbarkeit und einen Abschnitt mit hoher Dichte vorgestellt, wobei es sich um komplementäre Techniken handelt, die zusammen oder unabhängig voneinander verwendet werden können. Beim dynamischen Zuweisen von Apps überwacht das Speichersystem individuell die Nutzung jeder einzelnen App, und zwar sowohl den zugehörigen Code als auch die Datennutzlast der App als Ganzes. Wenn eine schreibintensive App in einem Speicherabschnitt mit hoher Dichte und geringer Belastbarkeit gespeichert ist oder eine relativ inaktive App in einem Speicherabschnitt mit hoher Belastbarkeit gespeichert ist, kann das Speichersystem den Host warnen und die App auf Anforderung des Hosts als Reaktion auf die Warnung in einen anderen Speicherabschnitt verschieben. Bei einer intelligenten Partitionierung kann die Partitionierung des Speichers in einen Abschnitt mit hoher Belastbarkeit und einen Abschnitt mit hoher Dichte vom Host basierend auf Nutzungsmustern geändert werden.
  • Betrachtet man zunächst die Verwendung einer intelligenten Partitionierung, so wird der Speicherplatz in einen erweiterten Abschnitt mit hoher Belastbarkeit und einen Abschnitt mit geringerer Belastbarkeit partitioniert. In diesem Beispiel ist der Abschnitt mit hoher Belastbarkeit ein SLC-Speicher, der Abschnitt mit geringerer Belastbarkeit ein MLC-Speicher, und logische Adressbereiche werden durch LBAs identifiziert. Der Host richtet die Speichervorrichtung zunächst mit einer Menge X an Speicher mit hoher Belastbarkeit ein, bildet die Blöcke dieses Speichers mit hoher Belastbarkeit jedoch nicht auf einem bestimmten logischen Adressbereich oder einer bestimmten physischen Partitionierung der Speichervorrichtung ab. Während der Verwendung kann die Speichervorrichtung die Speichernutzung überwachen, um „heiße“ logische Adressbereiche, wie z. B. häufig geschriebene LBAs, zu identifizieren. Alternativ oder zusätzlich kann der Host die Nutzung überwachen, um heiße logische Adressbereiche zu bestimmen und dem Speichersystem eine Liste dieser Bereiche zur Verfügung zu stellen. Basierend auf diesen Nutzungsinformationen wählt das Speichersystem das Abbild heißer LBAs auf den Speicherabschnitt mit hoher Belastbarkeit aus. Traditionell würde die MML 158 der Steuerung 102 die LBAs nach Lastausgleichstechniken, die mit demselben physischen Speichertyp arbeiten, wie z. B. alle SLC oder alle MLC, auf physische Blöcke abbilden. Hier kann der MML-Lastausgleichsalgorithmus die unterschiedlichen physischen Speichertypen mischen. Dies wird erreicht, da der Host bei der anfänglichen Einrichtung der Speichervorrichtung die physischen Blöcke nicht basierend auf Nutzungsannahmen auf die logischen Adressen vorkonfiguriert (abgebildet) hat. In einigen Ausführungsformen können die Steuerung und/oder der Host während des weiteren Betriebs der Speichervorrichtung die Nutzung überwachen, um zu bestimmen, ob die Speichervorrichtung neu eingerichtet werden muss, um die dem Abschnitt mit hoher Belastbarkeit zugewiesene Speichermenge zu ändern. Wenn die Nutzungsmuster beispielsweise darauf hindeuten, dass mehr Speicher mit hoher Belastbarkeit benötigt wird, könnte ein Teil des MLC-Speicherabschnitts auf SLC-Betrieb umgeschaltet und dem Speicherabschnitt mit hoher Belastbarkeit hinzugefügt werden.
  • 8 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses für intelligente Partitionierung beschreibt. Beginnend mit Schritt 701 empfängt das Speichersystem vom Host die Anweisungen zur anfänglichen Einrichtung der Speichervorrichtung. Beispielsweise kann der Host über einen bestimmten Satz von Standardkonfigurationen verfügen, die auf der erwarteten Nutzung des Speichers basieren und darauf, welcher Anteil des Speichers dem Abschnitt mit hoher Belastbarkeit zugewiesen werden soll. Bei 703 führt die Steuerung die anfängliche Einrichtung des Speichers gemäß der Host-Anweisung durch und weist einen Teil des Speicherplatzes als Speicher mit hoher Belastbarkeit zu, aber diese erweiterten Blöcke werden nicht auf einen bestimmten LBA-Bereich oder eine bestimmte physische Partitionierung (SLC oder MLC) abgebildet.
  • Nach der anfänglichen Partitionierung wird die Speichernutzung in Schritt 705 überwacht, um zu bestimmen, wie häufig die logischen Adressen geschrieben werden. Die Nutzung kann durch die Steuerung, den Host oder eine Kombination aus diesen überwacht werden. Beispielsweise kann die MML 158 der Steuerung 102 die Schreibrate der einzelnen LBAs überwachen und basierend auf dieser Überwachung in Schritt 706 die Schreibrate mit einem Schwellenwert vergleichen. Wenn die Schreibrate diesen Wert überschreitet, wählt die Steuerung in Schritt 707 diese heißen LBAs aus, um sie auf die Blöcke mit hoher Belastbarkeit des Speichers abzubilden. Der Lastausgleichsalgorithmus der MML 158 der Steuerung kann SLC- und MLC-Blöcke mischen, anstatt nur den Lastausgleich innerhalb des einzelnen physischen Blocktyps durchzuführen. Dies wird erreicht, da der Host in Schritt 703 den Speicher zunächst nicht so eingerichtet hat, dass physische Blöcke basierend auf Nutzungsannahmen auf logische Adressen abgebildet werden.
  • In Schritt 709 wird die Speichernutzung weiterhin überwacht, um zu bestimmen, ob der Speicher neu eingerichtet werden soll, indem Speicher mit hoher Dichte auf Speicher mit hoher Belastbarkeit umgeschaltet wird oder umgekehrt. In 9 wird Schritt 709 aus 8 detaillierter betrachtet.
  • 9 ist ein Flussdiagramm, das Schritt 709 aus 8 in einer Ausführungsform erweitert. In Schritt 731 überwacht das Speichersystem einen Alterungsfaktor für den Speicherabschnitt mit hoher Dichte 611, in dieser Ausführungsform die Rate der Programm-/Löschzyklen. Dies kann zum Beispiel durch die MML 158 der Steuerung 102 überwacht werden. Basierend auf dieser Rate kann in Schritt 733 ein geschätzter End-of-Life-Wert (EOL-Wert) bestimmt werden. Wenn beispielsweise der Speicherabschnitt mit hoher Dichte 611 eine Kapazität von 3 GB aufweist, eine erwartete Restbelastbarkeit von 5.000 P/E-Zyklen aufweist und mit 3 GB pro Tag geschrieben wird, beträgt das erwartete EOL 5.000 Tage.
  • In Schritt 735 überwacht der Speicher die Rate der P/E-Zyklen (oder eines anderen Alterungsfaktors) für den Speicherabschnitt mit hoher Belastbarkeit 613, wobei er ein erwartetes EOL für den Speicherabschnitt mit hoher Belastbarkeit 613 in Schritt 737 abschätzt. Wenn beispielsweise der Speicherabschnitt mit hoher Belastbarkeit 613 eine Kapazität von 2 GB aufweist, eine erwartete Restbelastbarkeit von 50.000 P/E-Zyklen aufweist und mit einer Rate von 100 GB pro Tag geschrieben wird, beträgt das erwartete EOL 1.000 Tage für den Speicherabschnitt mit hoher Belastbarkeit 613.
  • In Schritt 739 werden die EOLs der beiden Abschnitte verglichen. Für das oben genannte Beispiel ist das EOL des Speicherabschnitts mit hoher Dichte 611 5-mal so hoch wie das EOL des Speicherabschnitts mit hoher Belastbarkeit 613. Wenn diese Differenz der EOL-Werte über einem bestimmten Schwellenwert liegt, z. B. einem Verhältnis von 2:1 oder einem anderen Wert in beiden Richtungen, wird in Schritt 741 ein Ungleichgewicht bestimmt. Wenn die Differenz unter dem Schwellenwert liegt, kehrt der Ablauf zu Schritt 705 zurück. Wenn die Differenz über dem Schwellenwert liegt, wird das Ungleichgewicht in Schritt 711 an den Host gemeldet.
  • Um auf 8 zurückzukommen, wird der Host in Schritt 711 auf das EOL-Ungleichgewicht aufmerksam gemacht. Wenn entweder der SLC-Abschnitt 613 oder der MLC-Abschnitt 611 relativ schnell altert, kann der Host beschließen, den Speicher neu einzurichten. Um mit dem obigen Beispiel fortzufahren, wird der SLC-Abschnitt mit hoher Belastbarkeit 613 stark beschrieben und der Host kann beschließen, einen Teil des MLC-Abschnitts 611 in den SLC-Abschnitt mit hoher Belastbarkeit 613 zu übertragen und anschließend Speicherzellen des übertragenen Teils im SLC-Modus zu betreiben. Der Host kann auch weitere Informationen aufweisen, z. B. Informationen, die angeben, dass die hohe Nutzungsrate des Abschnitts mit hoher Belastbarkeit 613 nur vorübergehend ist, und beschließen, zu diesem Zeitpunkt keine Neueinrichtung vorzunehmen. Wenn der Host beschließt, den Speicher in Schritt 713 neu einzurichten, fordert die Antwort des Hosts an das Speichersystem eine solche Neueinrichtung an, die in Schritt 715 ausgeführt wird, bevor zu Schritt 705 zurückgekehrt wird. Wenn der Speicher nicht neu eingerichtet werden soll, kehrt der Ablauf von Schritt 713 zu Schritt 705 zurück, um den Betrieb fortzusetzen, ohne den Speicher neu einzurichten.
  • Der Ansatz der intelligenten Partitionierung, der durch den Ablauf von 8 veranschaulicht wird, kann die Lebensdauer der Speichervorrichtung verlängern. Durch dynamisches Abbilden (Mapping) der am häufigsten verwendeten physischen Adressen auf den entsprechenden physischen Blocktyp kann die Gesamtlebensdauer des Speichers verlängert und das Risiko, dass eine „Rogue-App“, die einen bestimmten Satz logischer Adressen stark beschreiben würde, den Speicher zerstört, erheblich verringert werden. Zusätzlich zum dynamischen Abbilden der am häufigsten verwendeten physischen Adressen auf den entsprechenden physischen Speicherabschnitt kann die Speicherlebensdauer auch durch dynamische Zuweisungen von Apps (sowohl des Codes als auch der zugehörigen Datennutzlast) zu einem entsprechenden physischen Speicherabschnitt basierend auf der Nutzungsüberwachung verlängert werden, wie jetzt beschrieben wird.
  • Genauer gesagt wird ein Mechanismus eingeführt, mit dem das Speichersystem Apps identifizieren kann, die große Mengen an Datenschreibvorgängen generieren, und der eine Warnung an den Host auslöst. Der Host wiederum verwendet diese Informationen, um zu bestimmen, ob die App in eine Partitionierung mit hoher Belastbarkeit des Speichers verschoben werden soll. Je nach Ausführungsform können sowohl der Code der App als auch die Datennutzlast oder nur die Datennutzlast verschoben werden. Wenn dem Host gestattet wird, diese Entscheidung zu treffen, kann der Host die Entscheidung nicht nur basierend auf Nutzungsinformationen aus dem Speichersystem treffen, sondern auch basierend auf anderen Informationen, die dem Host möglicherweise zur Verfügung stehen. Selbst wenn der Host eine erste Vorstellung von dem entsprechenden Speicherabschnitt zum Speichern einer bestimmten App hat, kann sich die Nutzung im Laufe der Zeit ändern und auch zwischen verschiedenen Benutzern derselben App stark variieren. Beispielsweise könnte eine Video-Streaming-Anwendung auf einem Set-Top-Box-Host (STB-Host) aufgrund der Videopufferung anfangen, eine große Menge an Datenschreibvorgängen zu erfahren. Der STB ist jedoch möglicherweise bekannt, dass dieser Datenverkehr z. B. auf ein bestimmtes Sportereignis zurückzuführen ist und dass eine hohe Schreibrate im Zusammenhang mit der App nur von begrenzter Dauer ist, und bestimmt daher, die App nicht in einen Speicher mit hoher Belastbarkeit zu verschieben. Wenn der Host beschließt, die App zu verschieben, wird das Speichersystem informiert und die App wird in den Speicherabschnitt mit hoher Belastbarkeit verschoben. Bei diesem Mechanismus überwacht das Speichersystem die Speichernutzung der App als Ganzes, nicht nur bestimmte logische Adressen, die der App zugeordnet sein können, und verschiebt dann die App als Ganzes, entweder sowohl Code als auch Datennutzlast oder nur Datennutzlast, in den neu zugewiesenen Speicherabschnitt. Alternative Ausführungsformen können es dem Speichersystem auch ermöglichen, einige der Verschiebungsentscheidungen zusätzlich oder abwechselnd unabhängig vom Wirt zu treffen.
  • Konventionell besteht ein Ansatz zum Speichern von Apps in einem Speicher darin, dass der Host den gesamten Speicherverbrauch der App vorhersagt und die App basierend auf der Vorhersage auf einem entsprechenden Speicherabschnitt unterbringt. Üblicherweise werden alle Anwendungen in einer Speicherpartition untergebracht. Sobald diese auf der Speichervorrichtung gespeichert sind, werden die Apps nicht mehr basierend auf den tatsächlichen Schreibmustern zwischen den Partitionierungen verschoben. Auch wenn ein Host über eine Schätzung der wahrscheinlichen Nutzung einer App verfügen kann, kann die Nutzung einer App von Benutzer zu Benutzer und, selbst für denselben Benutzer, im Laufe der Zeit erheblich variieren. Benutzer können unterschiedliche Apps installieren und diese unterschiedlich verwenden. Beispielsweise könnten zwei unterschiedliche Benutzer eine Video-Streaming-App installieren, wobei ein Benutzer einige Stunden pro Tag Inhalte streamt, während der andere Benutzer nur gelegentlich einen oder zwei Clips pro Woche ansieht. Folglich kann die optimale Partitionierung für eine App sowohl von Benutzer zu Benutzer als auch im Laufe der Zeit variieren.
  • Zum genaueren Speichern einer App im entsprechenden Speicherabschnitt werden in der folgenden Erörterung Verfahren beschrieben, bei denen die Speichervorrichtung die logischen Adressen kennt, die unterschiedlichen Apps entsprechen (z. B. basierend auf einem „Kontext-ID“-Felde einer Anwendungsprogrammierschnittstelle), und Apps identifizieren kann, die umfangreich in den Speicher schreiben. Wenn ein bestimmter Schwellenwert erreicht wird (z. B. mehr als 30 GB Daten, die von einer App über einen Zeitraum von 1 Tag geschrieben wurden), kann das Speichersystem den Host warnen. Der Host wiederum kann entscheiden, die Anwendung in eine Speicherpartition mit höherer Belastbarkeit zu verschieben, und das Speichersystem benachrichtigen, die Verschiebung durchzuführen. Auf die gleiche Weise kann der Host entscheiden, eine Anwendung, die keine großen Datenmengen in den Speicher geschrieben hat (z. B. für die er während der letzten Woche keine Warnung erhalten hat), von einem Abschnitt mit hoher Belastbarkeit in einen Abschnitt mit geringer Belastbarkeit zu verschieben.
  • 10 veranschaulicht schematisch eine Ausführungsform für die dynamische Zuweisung von Apps zu einem Speicher basierend auf Nutzungsüberwachung. In 10 ist ein Host 820 mit dem Speichersystem 800 verbunden, bei dem es sich beispielsweise um einen eingebetteten Speicher, eine SSD oder eine Speicherkarte handeln kann. Das Speichersystem 800 schließt eine Steuerung 802 und einen oder mehrere Speicherchips ein, von denen einer unter 804 abgebildet ist. Die Elemente können wie vorstehend in Bezug auf das Speichersystem der 1-5 beschrieben sein.
  • Der Speicherchip 804 ist wie vorstehend in Bezug auf 7 beschrieben eingerichtet und weist einen Systemdatenbereich mit hoher Belastbarkeit 601; einen Benutzerdatenabschnitt mit geringerer Belastbarkeit und hoher Dichte 611; und einen Benutzerdatenabschnitt mit hoher Belastbarkeit 613 auf. In der in 10 veranschaulichten Ausführungsform ist jeder dieser drei Bereiche in einem einzelnen Chip eingeschlossen, aber in anderen Ausführungsformen können diese Bereiche auf mehrere Chips verteilt sein: In einer SSD-Ausführungsform könnten z. B. einer oder mehrere Chips SLC-spezifische Chips sein, während andere Chips MLC-Chips mit hoher Dichte sein könnten.
  • Betrachtet man eine bestimmte eingebettete Speicherausführungsform weiterhin, so könnte der Speicherchip 804 beispielsweise eine Kapazität von 8 GB aufweisen. Ein SLC-Systemdatenbereich 801 zum Speichern des Betriebssystems, von Kopien des Boot-Blocks und anderer Systemdaten kann mit 0,5 MB vorgegeben werden. Der MLC-Abschnitt mit hoher Dichte 811 kann mit 3 GB vorgegeben werden, weist eine Belastbarkeit von -5.000 P/E-Zyklen auf und wäre der Standardbereich, in dem Apps und andere verwendete Daten gespeichert werden. Der restliche Speicherplatz wird dem SLC-Abschnitt mit hoher Belastbarkeit 813 zugewiesen, der zum Speichern schreibintensiver Apps und anderer Benutzerdaten verwendet wird und eine Belastbarkeit von -50.000 P/E-Zyklen aufweist.
  • Der Prozess beginnt damit, dass eine oder mehrere Anwendungen vom Host 820 auf das Speichersystem 800 übertragen werden, wo sie von der Steuerung 802 empfangen werden. Jede der Anwendungen entspricht einem Bereich von logischen Adressen, wie z. B. einem bestimmten Satz von mehreren LBAs, die sowohl den Code als auch die Datennutzlast der einer bestimmten Anwendung zugehörigen Daten abdecken, die als einer bestimmten App entsprechend identifiziert werden. In einigen Ausführungsformen kann der Host den Speicherabschnitt spezifizieren, in den die App geschrieben werden soll. In anderen Ausführungsformen, oder wenn der Host nichts spezifiziert, wird die App in den Standardbereich für Apps und andere Benutzerdaten geschrieben, in der Regel in den MLC-Abschnitt mit hoher Dichte und geringer Belastbarkeit 811.
  • Die Steuerung 802 schreibt dann die empfangenen Apps entweder in den Standard- oder den spezifizierten Abschnitt des Speicherplatzes. In diesem Beispiel befinden sich alle Apps und die Nutzlast der App standardmäßig im MLC-Abschnitt 811. App 1 stellt eine Gruppe von Apps dar, die wenig Flash-Speicher verwenden, und App 2 stellt eine Gruppe von schreibintensiven Apps dar. Die Speichervorrichtung überwacht die Apps und verfolgt dadurch die Schreibintensität jeder App. Die Überwachung kann für die App als Ganzes erfolgen, nicht nur für einzelne LBAs, die der App zugeordnet sind, um die Aktivität einer App besser verfolgen zu können. In einigen Ausführungsformen kann die Steuerung 802 auch einzelne LBAs überwachen, um sowohl die App als Ganzes als auch einzelne logische Adressen, die der Anwendung zugeordnet sind, zu verfolgen.
  • Die Steuerung 802 kann den Host 820 warnen, wenn eine App, wie z. B. App 2, intensiv geschrieben wird. Wenn zum Beispiel die Gruppe der Schreibvorgänge von App 2 im Durchschnitt mehr als 30 GB pro Tag umfasst, wird der Host 820 gewarnt. Je nach Ausführungsform kann der Schwellenwert für die Warnung des Hosts ein fester Wert oder einstellbar sein. Die Schwellenwerte können auch mit der Zeit variieren, um eine Alterung der Vorrichtung oder eine Neueinrichtung des Speicherplatzes widerzuspiegeln, durch die unterschiedliche Anteile des Speicherplatzes einem Abschnitt mit hoher Belastbarkeit zugewiesen werden. In diesem Beispiel warnt die Speichersteuerung 802 den Host 820 vor einem hohen Schreibpegel für App 2 im Abschnitt mit geringer Belastbarkeit 811, aber in anderen Ausführungsformen kann die Steuerung auch Apps im Abschnitt mit hoher Belastbarkeit 813 überwachen, die nicht häufig geschrieben werden, so dass der Host entscheiden kann, diese Apps mit geringer Aktivität in den Abschnitt mit hoher Dichte 811 zu verschieben. In einigen Ausführungsformen kann die Steuerung 802 auch selbst Entscheidungen zum Verschieben einer App treffen, z. B. wenn ein zweiter, höherer Schwellenwert erreicht wurde oder wenn der Host 820 die Steuerung 802 zuvor angewiesen hat.
  • Der Host 820 bestimmt dann, ob die App mit hoher Schreibintensität in einen anderen Speicherabschnitt verschoben werden soll. Diese Entscheidung kann allein auf der Schreibrate basieren, die der App zugeordnet ist, oder auch auf anderen Informationen, die der Host 820 möglicherweise hat. Zum Beispiel kann der Host wissen, dass eine bestimmte App eine intensive Nutzung erfährt, aber nur für eine begrenzte Zeit. Dies könnte beispielsweise bei einer Video-Streaming-App der Fall sein, die stark für eine bestimmte Sportveranstaltung genutzt wird, die nur eine begrenzte Zeit andauert, bei der der Host 820 beschließen kann, die App nicht zu neu anzuordnen. Wenn eine App jedoch weiterhin den Speicher mit geringer Belastbarkeit bei einer hohen Nutzungsrate verwendet, kann dies dazu führen, dass das Speichersystem 800 relativ schnell das Ende seiner Lebensdauer erreicht. Wenn der Host 820 beschließt, die App mit hoher Schreibintensität zu verschieben, wird die Steuerung informiert, die dann die Verlagerung der Anwendung (App 2) in den SLC-Abschnitt mit hoher Belastbarkeit 813 veranlasst. Durch die Nutzung des Warnmechanismus und das Übertragen von App 2 in den SLC-Abschnitt 813 kann das Speichersystem 800 seine Lebensdauer erheblich verlängern. Je nach Ausführungsform können sowohl der Code als auch die Datennutzlast von App 2 oder nur die Datennutzlast verschoben werden, da die Nutzlast in der Regel die Quelle für die große Anzahl von Schreibvorgängen ist.
  • Einige Apps verwenden andere zugehörige Apps oder interagieren mit diesen, so dass eine stark genutzte App auch bewirkt, dass eine andere App eine große Anzahl von Schreibvorgängen generiert. Beispiel: Angenommen, App 1 ist eine Mapping-App und App 2 verwendet häufig Standortdaten, die von App 1 angefordert werden, dann kann App 2 bewirken, dass App 1 eine hohe Schreibrate aufweist. Unter diesen Umständen wäre es auch sinnvoll, App 1 oder mindestens die zugehörigen Daten, die sie aufgrund von App 2 generiert, in den schreibintensiven SLC-Abschnitt 813 zu verschieben. Der Host 820 kann die Beziehung der beiden Apps kennen oder bestimmen und die Entscheidung treffen, zusammengehörige Anwendungen gemeinsam zwischen Speicherbereichen zu übertragen. Alternativ oder zusätzlich kann die Steuerung 802 die Beziehung bestimmen oder durch den Host darauf aufmerksam gemacht werden.
  • 11 und 13 sind Flussdiagramme, die Ausführungsformen eines Prozesses zur dynamischen Zuweisung von Apps zu einem Speicher basierend auf Nutzungsüberwachung jeweils von der Seite des Speichersystems und von der Host-Seite aus gesehen beschreiben. Beginnend mit Schritt 901 in 11 empfängt die Steuerung 802 auf dem Speichersystem 800 eine App vom Host 820 zum Speichern auf der Speichervorrichtung 804. Bei Ausführungsformen, bei denen der Host die Möglichkeit hat, einen Speicherabschnitt zu spezifizieren, prüft die Steuerung 802 in Schritt 903, ob der Host spezifiziert hat, in welchem Speicherabschnitt die App gespeichert werden soll, wobei diese Entscheidung des Hosts beispielsweise auf typischen Nutzungsmustern für die App basieren kann. Wenn der Host einen bestimmten Speicherabschnitt spezifiziert hat, wird die App bei Schritt 905 entweder in den MLC-Abschnitt mit hoher Dichte 811 oder in den SLC-Abschnitt mit hoher Belastbarkeit 813 geschrieben, wie vom Host angegeben. Wenn, wie es in der Regel der Fall ist, der Host in Schritt 903 keinen bestimmten Speicherabschnitt spezifiziert hat (oder für Ausführungsformen, bei denen dies keine Option ist), dann wird die App in Schritt 907 in den Standardspeicherabschnitt geschrieben, wobei dies in der Regel der MLC-Abschnitt mit hoher Dichte 811 ist.
  • In Schritt 909 überwacht das Speichersystem die App-Nutzung und in Schritt 911 wird bestimmt, ob die Nutzungsrate einer der Apps einen Schwellenwert überschreitet. 12 stellt zusätzliche Details für die Schritte 909 und 911 bereit.
  • 12 ist ein Flussdiagramm, das eine Verkörperung eines Prozesses für die Schritte 909 und 911 von 11 beschreibt. Schritt 909 entspricht den Schritten 931 und 933 in 12. Sobald die App in die Speichervorrichtung 804 geschrieben ist, überwacht die Steuerung ihre Nutzung in Schritt 931. Für jede App kennt die Steuerung 802 die logischen Adressen, wie z. B. eine Reihe von LBAs, die der App entsprechen, sowohl ihren Code als auch ihre Datennutzlast. Die Steuerung überwacht die App als Ganzes, um bei 933 ihre Schreibrate zu bestimmen. Bei einer App im MLC-Abschnitt mit geringerer Belastbarkeit und hoher Dichte 811 wird die App im Hinblick auf intensive Schreibaktivität überwacht. Apps im SLC-Abschnitt mit hoher Belastbarkeit 813 können auch hinsichtlich relativ niedrigerer Aktivitätspegel überwacht werden, was darauf hinweist, dass sie möglicherweise nicht garantieren, sich in einem Abschnitt mit hoher Belastbarkeit zu befinden. In einem Speichersystem, das auch die Aktivität einer einzelnen LBA überwacht, kann das Vorhandensein einer besonders heißen LBA, die einer ansonsten nicht besonders aktiven Anwendung zugeordnet ist, ebenfalls als Grundlage für Host-Warnungen überwacht werden.
  • In Schritt 911 bestimmt die Steuerung 802, ob die Nutzung einer überwachten App einen Schwellenwert überschritten hat, wobei dies den Schritten 935, 937 und 939 in 12 entspricht. In Schritt 935 wird bestimmt, ob sich die App im Speicherabschnitt mit hoher Dichte 811 (Ja-Pfad) oder im Abschnitt mit hoher Belastbarkeit 813 (Nein-Pfad) befindet. Zur Bestimmung der intensiven Schreibaktivität in Schritt 937 kann dies bei einer bestimmten Menge an Datenschreibvorgängen über einen bestimmten Zeitraum sein, wie z. B. mehr als 30 GB Daten, die von einer App über einen Zeitraum von 1 Tag geschrieben wurden. Bei einer Bestimmung einer relativ inaktiven App in Schritt 939 könnte es sich z. B. um keine oder nur eine geringe Menge an Schreibvorgängen über einen Zeitraum von einer Woche handeln. Die Schwellenwerte können fest oder einstellbar sein, basierend auf Faktoren wie der Anzahl der Apps, die eine intensive Schreibaktivität durchlaufen, der Alterung der Vorrichtung, der Neueinrichtung der relativen Menge an Speicherplatz mit hoher Belastbarkeit oder anderen Faktoren. Wenn keine Schwellenwerte überschritten werden, geht der Ablauf zu Schritt 919 über und kehrt schließlich zu Schritt 909 zurück, um die Nutzungsüberwachung fortzusetzen.
  • Erneut Bezug nehmend auf 11: Wenn in Schritt 911 bestimmt wird, dass die Nutzung einen Schwellenwert überschreitet, benachrichtigt die Steuerung 802 den Host 820 in Schritt 913. Eine Antwort vom Host 820 wird an der Steuerung 802 bei Schritt 915 empfangen, wobei der Host anfordern kann, dass die App verschoben wird oder dort bleibt, wo sie sich gerade befindet. Der Host kann anfordern, dass sowohl der zugehörige Code als auch die Datennutzlast der App verschoben werden oder dass nur die Datennutzlast verschoben wird, wobei der Code an Ort und Stelle verbleibt. Wenn eine Verschiebung angefordert wird, wird bei Schritt 917 die App (ihr Code und ihre Datennutzlast oder nur die Datennutzlast) von einem Speicherabschnitt in einen anderen verschoben, wobei sie bei Apps mit hohen Schreibraten vom MLC-Abschnitt 811 in den SLC-Abschnitt 813 und/oder bei Apps mit geringer Aktivität vom SLC-Abschnitt 813 in den MLC-Abschnitt 811 übertragen wird. Der Host 820 kann auch Verschiebungen für eine oder mehrere andere Apps anfordern, die eine hohe Anzahl von Schreibvorgängen aufgrund der starken Nutzung der ursprünglichen App (d. h. derjenigen, mit der in Schritt 911 verglichen wurde) generieren oder generieren können. Der Ablauf geht dann zu Schritt 919 über.
  • In einigen Ausführungsformen kann der Ablauf auch einen Prozess des Überwachens der intelligenten Partitionierung einschließen, ähnlich dem zuvor in Bezug auf die 8 und 9 beschriebenen, um zu bestimmen, ob die Partitionierung der Speichervorrichtung 804 in den SLC-Abschnitt mit hoher Belastbarkeit 813 und den MLC-Abschnitt mit hoher Dichte 811 neu eingerichtet werden soll. In Schritt 919 überwacht die Steuerung 802 die relative Nutzung der unterschiedlichen Speicherabschnitte auf Abschnittsebene. Im Ablauf von 11 ist dies in der Rückkehr zu 909 von den Schritten 911 und 917 eingeschlossen, aber die Überwachung in Schritt 919 und (das anschließende Hin- und Herwechseln zwischen der Steuerung 802 und dem Host 820) kann gleichzeitig mit der Überwachung von Schritt 909 erfolgen.
  • In Schritt 921 werden die relativen Abnutzungsgrade der Abschnitte überprüft, um festzustellen, ob sich einer dieser Bereiche schneller seinem End-of-Life (EOL) nähert als ein anderer. Obwohl beispielsweise der SLC-Abschnitt 813 eine höhere Belastbarkeit aufweist als der MLC-Abschnitt 811, kann es sein, dass er immer noch sehr intensive Schreibvorgänge durchläuft, so dass er sich seinem EOL nähert, während der MLC-Abschnitt 811 noch relativ frisch ist. Wenn die unterschiedlichen Speicherabschnitte auf relativ ausgeglichene Art und Weise altern, z. B. wenn die Variation ihrer EOL-Werte weniger als irgendein Schwellenwert variiert (Nein-Pfad), geht der Ablauf zurück zu 909. Wenn stattdessen ein Ungleichgewicht festgestellt wird (Ja-Pfad), informiert die Steuerung 802 den Host 820 in Schritt 923. Die Steuerung 802 empfängt die Antwort vom Host 820 in Schritt 925, und wenn eine Neueinrichtung angefordert wird, richtet die Steuerung 802 die Speichervorrichtung 804 in Schritt 927 neu ein und überträgt einige der Speicherzellen des MLC-Abschnitts 811 in den SLC-Abschnitt 813 oder von dem SLC-Abschnitt 813 in den MLC-Abschnitt 811, wie vom Host angefordert. Nach Schritt 927 kehrt der Ablauf dann zurück zu 909.
  • 13 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zur dynamischen Zuweisung von Apps zu einem Speicher basierend auf Nutzungsüberwachung von der Host-Seite aus gesehen beschreibt, entsprechend zu dem Flussdiagramm aus 11 für die Speichersystemseite. Beginnend mit Schritt 1001 sendet der Host 820 eine App an das Speichersystem 800, wo sie in Schritt 901 auf dem Ablauf der Speichervorrichtung von 11 empfangen wird.
  • In Schritt 1003 bestimmt der Host 820, ob er eine Benachrichtigung vom Speichersystem 800 empfangen hat, wie sie von der Steuerung 802 in Schritt 913 gesendet wurde. Wenn nicht, geht der Ablauf bis 1009 weiter und setzt die Überwachung hinsichtlich Warnungen von dem Speichersystem 800 fort. Wenn der Host 820 in Schritt 1003 eine Warnung von der Steuerung empfangen hat, bestimmt der Host 820 basierend auf der Warnung und anderen Informationen, die der Host möglicherweise über die erwartete bevorstehende Nutzung der App, welche die Benachrichtigung ausgelöst hat, zur Verfügung steht, in Schritt 1005 eine Antwort, die er dann in Schritt 1007 (wobei sie in Schritt 915 empfangen wird) an die Steuerung 802 sendet und angibt, ob die App in einen anderen Speicherabschnitt verlagert werden soll oder nicht. Je nach Ausführungsform kann der Host 820 die Steuerung 802 anweisen, sowohl den Code der App als auch die Datennutzlast oder nur die Datennutzlast zu verschieben oder zwischen diesen Optionen zu wählen. Der Host kann auch eine Verschiebung für eine oder mehrere zugehörige Apps anfordern, die aufgrund der Interaktion mit der App, die mit der Warnung in Schritt 1003 verbunden ist, viele Schreibvorgänge aufweisen oder aufweisen können. Der Ablauf geht dann zu Schritt 1009 über.
  • In einigen Ausführungsformen kann der Host 820 in Schritt 1009 zusätzlich zur Überwachung von Schritt 1003 in Bezug auf die dynamische Verlagerung von Apps, die auf dem Speichersystem 800 gespeichert sind, auch gleichzeitig das Speichersystem 800 für die dynamische Partitionierung der Speicherabschnitte der Speichervorrichtung 804 überwachen. In Schritt 1009 überwacht der Host 820 die Speichervorrichtung hinsichtlich einer Benachrichtigung über ein EOL-Ungleichgewicht zwischen Speicherabschnitten, entsprechend der Benachrichtigung von Schritt 923 in 11. Wenn keine solche Warnung empfangen wird, kehrt der Ablauf zur weiteren Überwachung des Speichersystems 800 zu Schritt 1003 zurück. Wenn in Schritt 1009 eine EOL-Ungleichgewichtswarnung empfangen wird, bestimmt der Host in Schritt 1011, ob das Speichersystem 800 neu eingerichtet werden soll, und informiert in Schritt 1013 die Steuerung 802 (wo sie in Schritt 925 empfangen wird), bevor er zu Schritt 1003 zurückkehrt.
  • Die obige Erörterung erfolgte im Zusammenhang mit dem Speichersystem 800, das einen SLC-Abschnitt mit hoher Belastbarkeit 813 und einen MLC-Abschnitt mit hoher Dichte und geringerer Belastbarkeit 811 aufweist, aber die beschriebenen Ideen lassen sich allgemeiner anwenden. Beispielsweise kann die Speichervorrichtung mehr als zwei Bereiche oder Abschnitte mit unterschiedlicher Belastbarkeit oder anderen Eigenschaften aufweisen, zwischen denen Apps vom Host 820 als Reaktion auf das Überwachen der App-Nutzung durch die Steuerung 802 migriert werden können. In einigen Ausführungsformen hängt die Frage, ob ein Speicherabschnitt eine höhere oder niedrigere Belastbarkeit aufweist, möglicherweise nicht von der Anzahl der Zustände ab, die eine Speicherzelle zu speichern eingerichtet ist, sondern von anderen Eigenschaften, wie der Größe der Speicherzellen oder anderen Merkmalen, welche die Belastbarkeit beeinflussen können.
  • Die Erörterung wurde hauptsächlich für eine Ausführungsform erörtert, bei der die Speichervorrichtung ein einziger Chip ist, das Speichersystem weist jedoch häufig viele Chips auf, wobei jeder auf diese Weise unterteilt werden kann oder wobei die unterschiedlichen Speicherabschnitte auf unterschiedlichen Chips verteilt sind. Beispielsweise können in einem SSD-System einige Chips nur SLC-Speicher und andere nur MLC-Speicher sein. Auch wenn die beschriebene Unterteilung des Speichers auf der relativen Belastbarkeit der Speicherabschnitte basiert, können diese Techniken in ähnlicher Weise auf andere Eigenschaften angewendet werden, die verschiedene Speicherabschnitte differenzieren können. Beispielsweise kann der Speicher Bereiche oder Abschnitte mit unterschiedlichen Leistungspegeln (wie Lese- oder Schreibgeschwindigkeiten) aufweisen, und die Steuerung kann die App-Nutzung überwachen und Host-Warnungen ausgeben, die auf Leistungsanforderungen der Apps basieren. Bei jeder dieser Ausführungsformen kann durch dynamisches Optimieren des Speicherorts von Apps basierend auf ihrer tatsächlichen Speichernutzung die Gesamtlebensdauer der Speichervorrichtung verlängert und das Risiko, dass eine „Rogue-App“ den Speicher zerstört, erheblich verringert werden.
  • Eine Ausführungsform schließt eine nichtflüchtige Speichervorrichtung ein, die einen nichtflüchtigen Speicher und eine oder mehrere Steuerschaltungen aufweist. Der nichtflüchtige Speicher weist einen ersten Abschnitt und einen zweiten Abschnitt auf, wobei der zweite Abschnitt dazu eingerichtet ist, ein höheres Belastbarkeitsniveau als der erste Abschnitt aufzuweisen. Die eine oder die mehreren Steuerschaltungen sind dazu eingerichtet, eine Anwendung von einem Host zu empfangen, wobei die Anwendung Code zum Ausführen der Anwendung und die von der Anwendung verwendeten Daten einschließt, und die Anwendung in dem ersten Abschnitt des nichtflüchtigen Speichers zu speichern. Die eine oder die mehreren Steuerschaltungen sind weiterhin dazu eingerichtet, eine Häufigkeit des Neuschreibens der von der Anwendung verwendeten Daten zu überwachen und als Reaktion darauf, dass die Häufigkeit des Neuschreibens der von der Anwendung verwendeten Daten einen ersten Wert überschreitet, eine Benachrichtigung an den Host zu senden. Die eine oder die mehreren Steuerschaltungen sind auch dazu eingerichtet, die Speicherung der von der Anwendung verwendeten Daten vom ersten Abschnitt des nichtflüchtigen Speichers an den zweiten Abschnitt des nichtflüchtigen Speichers als Reaktion auf eine Antwort vom Host, in der angefordert wird, dass die von der Anwendung verwendeten Daten vom ersten Abschnitt des nichtflüchtigen Speichers an den zweiten Abschnitt des nichtflüchtigen Speichers übertragen werden, zu übertragen.
  • Eine Ausführungsform schließt ein Verfahren ein, welches das Speichern einer Anwendung in einem ersten Abschnitt eines nichtflüchtigen Speichersystems einschließt. Der erste Abschnitt ist eines von einem Abschnitt von Speicherzellen mit hoher Belastbarkeit oder einem Abschnitt von Speicherzellen mit hoher Dichte, die das nichtflüchtige Speichersystem aufweist. Die Anwendung schließt einen Code zum Ausführen der Anwendung und eine Datennutzlast der Anwendung ein. Das Verfahren schließt auch das Überwachen einer Häufigkeit des Neuschreibens des ersten Abschnitts, die durch die Anwendung verursacht wird und das Ausgeben einer Warnung durch das nichtflüchtige Speichersystem an den Host als Reaktion auf einen Vergleich der Häufigkeit des Neuschreibens mit einem ersten Schwellenwert ein. Das Verfahren schließt weiterhin das Empfangen einer Antwort von dem Host auf die Warnung, die das nichtflüchtige Speichersystem anweist, die Datennutzlast von dem ersten Abschnitt des nichtflüchtigen Speichersystems in einen zweiten Abschnitt des nichtflüchtigen Speichersystems zu verlagern, und das Verlagern der Datennutzlast der Anwendung in den zweiten Abschnitt des nichtflüchtigen Speichersystems als Reaktion auf die Antwort ein.
  • Noch eine andere Ausführungsform schließt ein nichtflüchtiges Speichersystem ein, das eine Vielzahl von nichtflüchtigen Speicherchips und eine Steuerung aufweist. Die nichtflüchtigen Speicherchips schließen einen ersten Abschnitt von Speicherzellen mit hoher Belastbarkeit und einen Abschnitt von Speicherzellen mit hoher Dichte ein. Die Steuerung ist dazu eingerichtet, die Speicherung von Daten von einem Host auf einer Vielzahl von nichtflüchtigen Speicherchips zu verwalten, was einschließt: Überwachen einer Speichernutzung eines ersten der Abschnitte der Speicherzellen durch eine Anwendung, die in dem ersten Abschnitt gespeichert ist; Ausgeben einer ersten Warnung an den Host als Reaktion auf einen Vergleich der Speichernutzung des ersten Abschnitts durch die Anwendung mit einem ersten Wert; und Verlagern der Anwendung von dem ersten Abschnitt zu einem zweiten der Abschnitte von Speicherzellen als Reaktion auf eine Antwort von dem Host auf den Alarm.
  • Eine Ausführungsform schließt eine nichtflüchtige Speichervorrichtung ein, die einen nichtflüchtigen Speicher aufweist, der einen Abschnitt mit hoher Belastbarkeit und einen Abschnitt mit hoher Datendichte aufweist. Die nichtflüchtige Speichervorrichtung schließt auch Mittel zum Speichern einer von einem Host empfangenen Anwendung entweder im Abschnitt mit hoher Belastbarkeit oder im Abschnitt mit hoher Datendichte des nichtflüchtigen Speichers ein, wobei die Anwendung Code und eine entsprechende Datennutzlast aufweist. Die nichtflüchtige Speichervorrichtung schließt weiterhin Mittel zum Überwachen einer Rate des Neuschreibens der durch die Anwendung generierten Datennutzlast ein. Die nichtflüchtige Speichervorrichtung schließt auch Mittel zum Benachrichtigen des Hosts als Reaktion auf das Überschreiten eines Schwellenwertes durch die Rate des Neuschreibens der von der Anwendung generierten Datennutzlast und Mittel zum Verlagern der Datennutzlast als Reaktion auf eine Antwort vom Host entweder vom Abschnitt mit hoher Belastbarkeit oder vom Abschnitt mit hoher Datendichte in den jeweils anderen von entweder dem Abschnitt mit hoher Belastbarkeit oder dem Abschnitt mit hoher Datendichte ein.
  • In einer Ausführungsform können die Mittel zum Speichern einer Anwendung die Speicherstruktur einschließen, die in Bezug auf die Struktur 326 in 5 beschrieben und in Bezug auf die 7 und 10, einschließlich der Lese-/Schreibschaltungen 328 und der Decodierschaltungen 324 und 332, zusammen mit der Steuerschaltung 310 auf dem Chip und der Steuerung 102 veranschaulicht sind. Die Mittel zum Überwachen der Datenschreibrate können in der Steuerung 102, wie in Bezug auf die 2 und 3 ausführlicher beschrieben, einschließlich der MML 158 und anderer Steuerungselemente sowie der Steuerschaltungen 310 auf dem Chip eingeschlossen sein. Die Mittel zum Benachrichtigen des Hosts und Verlagern der Anwendung können auch die Steuerung 102, wie in Bezug auf die 2 und 3 ausführlicher beschrieben, einschließlich der MML 158 und anderer Steuerungselemente sowie der Steuerschaltungen 310 auf dem Chip einschließen. Andere Software oder Hardware, die Teil einer Speichersteuerung sind, können ebenfalls verwendet werden.
  • Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
  • Im Sinne dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, so dass sie elektronische Signale untereinander übertragen können.
  • Für die Zwecke dieses Dokumentes kann der Begriff „basierend auf“ als „mindestens teilweise basierend auf“ gelesen werden.
  • Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung numerischer Ausdrücke, wie etwa ein „erstes“ Objekt, ein „zweites“ Objekt und ein „drittes“ Objekt möglicherweise keine Sortierung von Objekten, sondern kann stattdessen zu Identifikationszwecken verwendet werden, um verschiedene Objekte zu identifizieren.
  • Für die Zwecke dieses Dokuments kann sich der Ausdruck „Satz“ von Objekten auf einen „Satz“ von einem oder mehreren der Objekte beziehen.
  • Die vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht erschöpfend sein oder die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der vorgeschlagenen Technologie und ihre praktische Anwendung am besten zu erläutern und damit anderen Fachleuten die Möglichkeit zu geben, sie in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, die für die jeweilige vorgesehene Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Umfang durch die hier beigefügten Ansprüche definiert wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9721662 [0017]
    • US 9082502 [0018]

Claims (15)

  1. Vorrichtung, aufweisend: einen nichtflüchtigen Speicher, der einen ersten Abschnitt und einen zweiten Abschnitt aufweist, wobei der zweite Abschnitt dazu eingerichtet ist, ein höheres Belastbarkeitsniveau als der erste Abschnitt aufzuweisen; und eine oder mehrere Steuerschaltungen, die mit dem nichtflüchtigen Speicher verbunden sind, wobei die eine oder die mehreren Steuerschaltungen eingerichtet sind zum: Empfangen einer Anwendung von einem Host, wobei die Anwendung Code zum Ausführen der Anwendung und die von der Anwendung verwendeten Daten einschließt; Speichern der Anwendung in dem ersten Abschnitt des nichtflüchtigen Speichers; Überwachen einer Häufigkeit des Neuschreibens der von der Anwendung verwendeten Daten; Senden einer Benachrichtigung an den Host als Reaktion darauf, dass die Häufigkeit des Neuschreibens der von der Anwendung verwendeten Daten einen ersten Wert überschreitet; und Übertragen der Speicherung der von der Anwendung verwendeten Daten vom ersten Abschnitt des nichtflüchtigen Speichers an den zweiten Abschnitt des nichtflüchtigen Speichers als Reaktion auf eine Antwort vom Host, in der angefordert wird, dass die von der Anwendung verwendeten Daten vom ersten Abschnitt des nichtflüchtigen Speichers an den zweiten Abschnitt des nichtflüchtigen Speichers übertragen werden.
  2. Vorrichtung gemäß Anspruch 1, wobei die eine oder die mehreren Steuerschaltungen weiterhin eingerichtet sind zum: Überwachen der Häufigkeit des Neuschreibens der von der Anwendung verwendeten Daten im Anschluss an das Übertragen der Speicherung der von der Anwendung verwendeten Daten an den zweiten Abschnitt des nichtflüchtigen Speichers; Senden einer Benachrichtigung an den Host als Reaktion darauf, dass die Häufigkeit des Neuschreibens der von der Anwendung verwendeten Daten geringer als ein zweiter Wert ist; und Übertragen der Speicherung der von der Anwendung verwendeten Daten vom zweiten Abschnitt des nichtflüchtigen Speichers an den ersten Abschnitt des nichtflüchtigen Speichers als Reaktion auf eine Antwort vom Host, in der angefordert wird, dass die von der Anwendung verwendeten Daten vom zweiten Abschnitt des nichtflüchtigen Speichers an den ersten Abschnitt des nichtflüchtigen Speichers übertragen werden.
  3. Vorrichtung gemäß Anspruch 1, wobei, wenn die eine oder die mehreren Steuerschaltungen die Anwendung von dem Host empfangen, die eine oder mehreren Steuerschaltungen auch eine Anforderung von dem Host empfangen, die spezifiziert, dass die Anwendung in dem ersten Abschnitt gespeichert werden soll.
  4. Vorrichtung gemäß Anspruch 1, wobei die eine oder die mehreren Steuerschaltungen weiterhin dazu eingerichtet sind, die Speicherabschnitte neu einzurichten, um einen Teil eines von dem ersten Abschnitt oder dem zweiten Abschnitt dem anderen von dem ersten Abschnitt oder dem zweiten Abschnitt neu zuzuordnen.
  5. Vorrichtung gemäß Anspruch 1, wobei die eine oder die mehreren Steuerschaltungen weiterhin dazu eingerichtet sind, die Speicherung des Codes zum Ausführen der Anwendung von dem ersten Abschnitt des nichtflüchtigen Speichers an den zweiten Abschnitt des nichtflüchtigen Speichers als Reaktion auf die Antwort von dem Host zu übertragen, in der weiterhin angefordert wird, dass der Code zum Ausführen der Anwendung so übertragen wird.
  6. Vorrichtung gemäß Anspruch 1, wobei die eine oder die mehreren Steuerschaltungen weiterhin dazu eingerichtet sind, die Speicherung der von einer zugehörigen Anwendung verwendeten Daten von dem ersten Abschnitt des nichtflüchtigen Speichers an den zweiten Abschnitt des nichtflüchtigen Speichers als Reaktion auf die Antwort von dem Host zu übertragen, in der weiterhin angefordert wird, dass die von der zugehörigen Anwendung verwendeten Daten so übertragen werden.
  7. Vorrichtung gemäß Anspruch 1, wobei: der erste Abschnitt Multi-Level-Speicherzellen aufweist; und der zweite Abschnitt Single-Level-Speicherzellen aufweist.
  8. Vorrichtung gemäß Anspruch 1, wobei, wenn die eine oder die mehreren Steuerschaltungen die Anwendung von dem Host empfangen, die eine oder die mehreren Steuerschaltungen von dem Host auch eine Spezifizierung eines Bereichs logischer Adressen empfangen, die dem Code zum Ausführen der Anwendung und den von der Anwendung verwendeten Daten entsprechen.
  9. Verfahren, aufweisend: Speichern einer Anwendung in einem ersten Abschnitt eines nichtflüchtigen Speichersystems, wobei der erste Abschnitt eines von einem Abschnitt von Speicherzellen mit hoher Belastbarkeit oder einem Abschnitt von Speicherzellen mit hoher Dichte ist, die das nichtflüchtige Speichersystem aufweist, und wobei die Anwendung Code zum Ausführen der Anwendung und eine Datennutzlast der Anwendung einschließt; Überwachen einer Häufigkeit des Neuschreibens des ersten Abschnitts, die durch die Anwendung verursacht wird; Ausgeben einer Warnung durch das nichtflüchtige Speichersystem an den Host als Reaktion auf einen Vergleich der Häufigkeit des Neuschreibens mit einem ersten Schwellenwert; Empfangen einer Antwort von dem Host auf die Warnung, die das nichtflüchtige Speichersystem anweist, die Datennutzlast von dem ersten Abschnitt des nichtflüchtigen Speichersystems in einen zweiten Abschnitt des nichtflüchtigen Speichersystems zu verlagern; und Verlagern der Datennutzlast der Anwendung in den zweiten Abschnitt des nichtflüchtigen Speichersystems als Reaktion auf die Antwort.
  10. Verfahren gemäß Anspruch 9, weiterhin aufweisend: Empfangen der Anwendung und einer Spezifizierung des ersten Abschnitts des nichtflüchtigen Speichersystems zum Speichern der Anwendung am nichtflüchtigen Speichersystem vom Host vor dem Überwachen der Häufigkeit des Neuschreibens des ersten Abschnitts, wobei das Speichern der Anwendung im ersten Abschnitt des nichtflüchtigen Speichersystems als Reaktion auf die Spezifizierung erfolgt.
  11. Verfahren gemäß Anspruch 9, weiterhin aufweisend: Überwachen einer durch die Anwendung verursachten Häufigkeit des Neuschreibens des zweiten Abschnitts im Anschluss an das Verlagern der Datennutzlast in den zweiten Abschnitt; Ausgeben einer weiteren Warnung durch das nichtflüchtige Speichersystem an den Host als Reaktion auf einen Vergleich der Häufigkeit des Neuschreibens mit einem zweiten Schwellenwert; Empfangen einer Antwort von dem Host an dem nichtflüchtigen Speichersystem, die Datennutzlast von dem zweiten Abschnitt des nichtflüchtigen Speichersystems in den ersten Abschnitt des nichtflüchtigen Speichersystems zu verlagern, als Reaktion auf die weitere Warnung; und Verlagern der Datennutzlast von dem zweiten Abschnitt in den ersten Abschnitt des nichtflüchtigen Speichersystems.
  12. Verfahren gemäß Anspruch 9, weiterhin aufweisend: Verlagern des Codes zum Ausführen der Anwendung in den zweiten Abschnitt des nichtflüchtigen Speichersystems als Reaktion auf die Antwort.
  13. Verfahren gemäß Anspruch 9, weiterhin aufweisend: Überwachen einer Alterungsrate für den Abschnitt von Speicherzellen mit hoher Belastbarkeit; Überwachen einer Alterungsrate für den Abschnitt von Speicherzellen mit hoher Dichte; und Neuzuweisen von Speicherzellen von einem von dem Abschnitt von Speicherzellen mit hoher Belastbarkeit oder dem Abschnitt von Speicherzellen mit hoher Dichte an den anderen von dem Abschnitt von Speicherzellen mit hoher Belastbarkeit oder dem Abschnitt von Speicherzellen mit hoher Dichte als Reaktion auf ein Ungleichgewicht zwischen der Alterungsrate für den Abschnitt von Speicherzellen mit hoher Belastbarkeit und der Alterungsrate für den Abschnitt von Speicherzellen mit hoher Dichte.
  14. Verfahren gemäß Anspruch 13, wobei das Neuzuweisen als Reaktion auf eine Host-Anforderung durchgeführt wird.
  15. Verfahren gemäß Anspruch 9, weiterhin aufweisend: Empfangen der Anwendung und einer Spezifizierung eines Bereichs logischer Adressen, die dem Code zum Ausführen der Anwendung und der Datennutzlast der Anwendung entsprechen, am nichtflüchtigen Speichersystem vom Host vor dem Überwachen der Häufigkeit des Neuschreibens des ersten Abschnitts.
DE112019000139.6T 2018-06-28 2019-02-09 Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung Pending DE112019000139T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/021,231 US10713158B2 (en) 2018-06-28 2018-06-28 Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring
US16/021,231 2018-06-28
PCT/US2019/017395 WO2020005327A1 (en) 2018-06-28 2019-02-09 Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring

Publications (1)

Publication Number Publication Date
DE112019000139T5 true DE112019000139T5 (de) 2020-07-02

Family

ID=68986796

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000139.6T Pending DE112019000139T5 (de) 2018-06-28 2019-02-09 Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung

Country Status (4)

Country Link
US (1) US10713158B2 (de)
CN (1) CN111373375A (de)
DE (1) DE112019000139T5 (de)
WO (1) WO2020005327A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6968016B2 (ja) * 2018-03-22 2021-11-17 キオクシア株式会社 ストレージデバイスおよびコンピュータシステム
KR20200076531A (ko) 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20200099882A (ko) * 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11062756B2 (en) * 2019-10-14 2021-07-13 Western Digital Technologies, Inc. Extending operating temperature of storage device
US11145336B2 (en) * 2019-10-30 2021-10-12 Micron Technology, Inc. Program pulse control using environmental parameters
US10910048B1 (en) * 2020-01-16 2021-02-02 Micron Technology, Inc. Extended memory communication
US20230114966A1 (en) * 2020-01-28 2023-04-13 Micron Technology, Inc. Analog storage using memory device
US11140445B1 (en) * 2020-06-03 2021-10-05 Western Digital Technologies, Inc. Storage system and method for storing scalable video
CN113934360B (zh) * 2020-06-29 2024-04-12 戴尔产品有限公司 多存储设备生命周期管理系统
WO2022109898A1 (en) * 2020-11-26 2022-06-02 Micron Technology, Inc. Programming video data to different portions of memory
US11513691B2 (en) * 2021-01-09 2022-11-29 Western Digital Technologies, Inc. Systems and methods for power and performance improvement through dynamic parallel data transfer between device and host
CN113010112B (zh) * 2021-03-09 2022-11-11 重庆邮电大学 一种基于可变电阻式存储器的数据分配优化方法
US20220317898A1 (en) * 2021-04-03 2022-10-06 EMC IP Holding Company LLC Managing Application Storage Resource Allocations Based on Application Specific Storage Policies
JP2023044471A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリシステム及びメモリ制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347051B2 (en) 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
US5440631A (en) 1992-04-24 1995-08-08 Fijitsu Limited Information distribution system wherein storage medium storing ciphered information is distributed
US5345413A (en) 1993-04-01 1994-09-06 Microchip Technology Incorporated Default fuse condition for memory device after final test
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6400634B1 (en) 1997-12-23 2002-06-04 Macronix International Co., Ltd. Technique for increasing endurance of integrated circuit memory
US6321295B1 (en) 1998-03-19 2001-11-20 Insilicon Corporation System and method for selective transfer of application data between storage devices of a computer system through utilization of dynamic memory allocation
US20060282610A1 (en) 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
US20080244203A1 (en) 2007-03-30 2008-10-02 Gorobets Sergey A Apparatus combining lower-endurance/performance and higher-endurance/performance information storage to support data processing
US8060719B2 (en) * 2008-05-28 2011-11-15 Micron Technology, Inc. Hybrid memory management
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8407400B2 (en) 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
US8261009B2 (en) * 2008-12-30 2012-09-04 Sandisk Il Ltd. Method and apparatus for retroactive adaptation of data location
US20100174845A1 (en) 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
KR101861170B1 (ko) * 2011-08-17 2018-05-25 삼성전자주식회사 마이그레이션 관리자를 포함하는 메모리 시스템
KR20130060791A (ko) * 2011-11-30 2013-06-10 삼성전자주식회사 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
US9176862B2 (en) * 2011-12-29 2015-11-03 Sandisk Technologies Inc. SLC-MLC wear balancing
WO2013153581A1 (en) 2012-04-13 2013-10-17 Hitachi, Ltd. Storage apparatus and data management method
US20140108705A1 (en) 2012-10-12 2014-04-17 Sandisk Technologies Inc. Use of High Endurance Non-Volatile Memory for Read Acceleration
US9159406B2 (en) 2012-11-02 2015-10-13 Sandisk Technologies Inc. Single-level cell endurance improvement with pre-defined blocks
US8995184B2 (en) 2012-12-06 2015-03-31 Sandisk Technologies Inc. Adaptive operation of multi level cell memory
US9715445B2 (en) 2013-03-14 2017-07-25 Sandisk Technologies Llc File differentiation based on data block identification
US9965199B2 (en) 2013-08-22 2018-05-08 Sandisk Technologies Llc Smart dynamic wear balancing between memory pools
US9336129B2 (en) * 2013-10-02 2016-05-10 Sandisk Technologies Inc. System and method for bank logical data remapping
US9626108B2 (en) 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
US20170075812A1 (en) * 2015-09-16 2017-03-16 Intel Corporation Technologies for managing a dynamic read cache of a solid state drive
US10318163B2 (en) 2016-03-30 2019-06-11 EMC IP Holding Company LLC Balancing SSD wear in data storage systems
US10108555B2 (en) 2016-05-26 2018-10-23 Macronix International Co., Ltd. Memory system and memory management method thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming

Also Published As

Publication number Publication date
US20200004671A1 (en) 2020-01-02
CN111373375A (zh) 2020-07-03
WO2020005327A1 (en) 2020-01-02
US10713158B2 (en) 2020-07-14

Similar Documents

Publication Publication Date Title
DE112019000139T5 (de) Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112019005362T5 (de) Schnelles storage class memory mit write-once-memory-codierung
DE112007002437B4 (de) Leistungs-oder stromverbrauchsoptimierte Code-Datenspeicherung für nichtflüchtige Speicher
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE112014005346T5 (de) Temperaturbasierte Flashspeichersystemerhaltung
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102018130164A1 (de) Speicherungsvorrichtung mit programmierten zellenspeicherungsdichtenmodi, die eine funktion einer speicherungsvorrichtungskapazitätsnutzung sind
DE112019000147T5 (de) Partielle rücksetzung einer speichersteuerung
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102018105871A1 (de) Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung
DE102008033518A1 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE112020000162T5 (de) Nichtflüchtiges speicherungssystem mit filterung von daten-abtastwerten für eine überwachte betriebsstatistik
DE102019134294A1 (de) Nichtflüchtiges speichersystem mit schneller wiederherstellung nach nicht ordnungsgemässem herunterfahren
DE102018105277A1 (de) Auf Hamming-Abstand basierende Binärdarstellungen von Zahlen
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102021005946A1 (de) Verwaltung der digital gesteuerten ladungspumpen-operation in einem speicher-untersystem

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CALIF., US