DE102017128941A1 - Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung - Google Patents

Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung Download PDF

Info

Publication number
DE102017128941A1
DE102017128941A1 DE102017128941.0A DE102017128941A DE102017128941A1 DE 102017128941 A1 DE102017128941 A1 DE 102017128941A1 DE 102017128941 A DE102017128941 A DE 102017128941A DE 102017128941 A1 DE102017128941 A1 DE 102017128941A1
Authority
DE
Germany
Prior art keywords
storage system
garbage collection
data storage
data
block allocation
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.)
Ceased
Application number
DE102017128941.0A
Other languages
English (en)
Inventor
Ariel Navon
Micha Yonin
Alexander Bazarsky
Judah Gamliel Hahn
David Gur
Omer FAINZILBER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017128941A1 publication Critical patent/DE102017128941A1/de
Ceased 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)

Abstract

[0073] Ein Speichersystem und ein Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung werden bereitgestellt. Ein Verfahren enthält das Bestimmen, ob ein Datenspeicher in einem Speichersystem in einem ersten Verwendungsszenario oder in einem zweiten Verwendungsszenario verwendet wird; als Antwort auf das Bestimmen, dass der Datenspeicher in dem ersten Verwendungsszenario verwendet wird, Verwenden eines ersten Blockzuweisungsverfahrens; und als Antwort auf das Bestimmen, dass der Datenspeicher in dem zweiten Verwendungsszenario verwendet wird, Verwenden eines zweiten Blockzuweisungsverfahrens, wobei das erste Blockzuweisungsverfahren Blöcke zuweist, die die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren.

Description

  • Hintergrund
  • Ein Speichersystem [storage system] kann einen Datenspeicher [memory] besitzen, der in Blöcken organisiert ist. Im Zeitablauf können in einen Block geschriebene Daten für ungültig erklärt werden (z. B. aufgrund einer Host-Datenlöschung und/oder interner Datenübertragungen in dem Speichersystem). Die Speicherbereinigung ist ein Vorgang, der die gültigen Teile von verwendeten Datenspeicherblöcken sammelt (wobei die für ungültig erklärten Teile ignoriert werden) und sie in einen neuen Block bewegt. Wenn ein Block vollständig für ungültig erklärt wird, wird er in den Pool von freien Blöcken zurückgeführt. Die Speicherbereinigung kann durch Vorhalten eines „Gültigkeitszählers“ für jeden Block, um die Anzahl der gültigen Flash-Managementeinheiten in dem Block zu verfolgen, und/oder durch einen Programmier-/Löschzykluszähler, um die Haltbarkeit des Blocks zu überwachen, gesteuert werden. Ein Speicherbereinigungsalgorithmus kann durch Prüfen, welcher Block den niedrigsten „Gültigkeitszähler“, den höchsten Programmier-/Löschzykluszähler und/oder einen Programmier-/Löschzykluszähler, der unter einem Mittelwert liegt, besitzt, wählen, welcher Block als nächstes „bereinigt“ werden sollte.
  • Figurenliste
    • 1A ist ein Blockdiagramm eines nichtflüchtigen Speichersystems einer Ausführungsform.
    • 1B ist ein Blockdiagramm, das ein Speichermodul einer Ausführungsform darstellt.
    • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem einer Ausführungsform darstellt.
    • 2A ist ein Blockdiagramm, das Komponenten des Controllers des nichtflüchtigen Speichersystems, das in 1A dargestellt ist, gemäß einer Ausführungsform darstellt.
    • 2B ist ein Blockdiagramm, das Komponenten des Speichersystems mit nichtflüchtigem Datenspeicher, das in 1A dargestellt ist, gemäß einer Ausführungsform darstellt.
    • 3 ist ein Ablaufplan eines Verfahrens zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung einer Ausführungsform.
    • 4 ist ein Ablaufplan eines Verfahrens zum Speichern von Mustern in einem Datenspeicher einer Ausführungsform.
    • 5 ist ein Ablaufplan eines Verfahrens zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung einer Ausführungsform, in der ein Musterabgleich verwendet wird.
  • Genaue Beschreibung
  • Einleitend beziehen sich die unten beschriebenen Ausführungsformen auf ein Speichersystem und ein Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung. In einer Ausführungsform wird ein Verfahren zur Blockzuweisung bereitgestellt. Das Verfahren umfasst das Bestimmen, ob ein Datenspeicher in einem Speichersystem in einem ersten Verwendungsszenario oder einem zweiten Verwendungsszenario verwendet wird; als Antwort auf das Bestimmen, dass der Datenspeicher in dem ersten Verwendungsszenario verwendet wird, das Verwenden eines ersten Blockzuweisungsverfahrens; und als Antwort auf das Bestimmen, dass der Datenspeicher in dem zweiten Verwendungsszenario verwendet wird, das Verwenden eines zweiten Blockzuweisungsverfahrens, wobei das erste Blockzuweisungsverfahren Blöcke zuweist, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren.
  • In einigen Ausführungsformen wird das Bestimmen durch Vergleichen mehrerer Schreibanweisungen mit Mustern, die im Speichersystem gespeichert sind, durchgeführt, wobei das erste Blockzuweisungsverfahren einem der Muster zugeordnet ist und wobei das zweite Blockzuweisungsverfahren einem weiteren der Muster zugeordnet ist.
  • In einigen Ausführungsformen wird das Bestimmen unter Verwendung von maschinellem Lernen durchgeführt. In einigen Ausführungsformen verwendet das maschinelle Lernen überwachtes Lernen, wohingegen in weiteren Ausführungsformen das maschinelle Lernen nichtüberwachtes Lernen verwendet.
  • In einigen Ausführungsformen wird das Bestimmen durch Berechnen eines Verhältnisses von Einzeladressaktualisierungen durch den Anwender zu Laufwerksüberschreibvorgängen durchgeführt.
  • In einigen Ausführungsformen wird das Bestimmen durch Empfangen einer Angabe von einem Host, ob der Speicher in dem ersten Verwendungsszenario oder in dem zweiten Verwendungsszenario verwendet wird, durchgeführt.
  • In einigen Ausführungsformen umfasst das Verfahren ferner das Verändern einer Zeit der Speicherbereinigung.
  • In einigen Ausführungsformen wird die Zeit der Speicherbereinigung durch Anpassen mindestens eines Schwellenwertparameters zum Initiieren einer Speicherbereinigung verändert.
  • In einigen Ausführungsformen wird die Zeit der Speicherbereinigung durch Verändern eines Verhältnisses des Auslösens von Speicherbereinigungsvorgängen zu Host-Schreibvorgängen verändert.
  • In einigen Ausführungsformen wird die Zeit der Speicherbereinigung durch Verändern eines Verhältnisses von dynamischen zu statischen Speicherbereinigungsvorgängen verändert.
  • In einigen Ausführungsformen werden Daten, die in dem ersten Verwendungsszenario gespeichert werden, weniger häufig aktualisiert als Daten, die in dem zweiten Verwendungsszenario gespeichert werden.
  • In einigen Ausführungsformen umfasst der Speicher einen dreidimensionalen Datenspeicher.
  • In einigen Ausführungsformen wird das Verfahren in dem Speichersystem durchgeführt.
  • In einer weiteren Ausführungsform wird ein Speichersystem bereitgestellt, das einen Datenspeicher und einen Controller enthält. Der Controller ist konfiguriert, mehrere Schreibanweisungen zu empfangen; die mehreren Schreibanweisungen mit Mustern zu vergleichen, die in dem Speichersystem gespeichert sind; für jedes Muster eine Punktzahl zu erzeugen, die ein Übereinstimmungsniveau der mehreren Schreibanweisungen mit diesem Muster repräsentiert; zu bestimmen, welche Punktzahl einen Schwellenwert überschreitet und ein Blockzuweisungsschema zu wählen, das dem Muster, dessen Punktzahl den Schwellenwert überschreitet, zugeordnet ist.
  • In einigen Ausführungsformen weist ein Blockzuweisungsschema, das einem ersten Muster zugeordnet ist, Blöcke zu, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in einem Blockzuweisungsschema, das einem zweiten Muster zugeordnet ist.
  • In einigen Ausführungsformen ist der Controller ferner konfiguriert, mindestens einen Schwellenwertparameter zum Initiieren einer Speicherbereinigung anzupassen.
  • In einigen Ausführungsformen enthält der Datenspeicher einen dreidimensionalen Datenspeicher.
  • In einigen Ausführungsformen ist das Speichersystem in einem Host eingebettet.
  • In einigen Ausführungsformen ist das Speichersystem austauschbar mit einem Host verbunden.
  • In einer weiteren Ausführungsform wird ein Speichersystem bereitgestellt, das einen Datenspeicher; Mittel zum Bestimmen, wie der Datenspeicher verwendet wird; und Mittel zum Auswählen eines Blockzuweisungsverfahrens auf der Grundlage davon, wie der Datenspeicher verwendet wird, enthält, wobei ein erstes Blockzuweisungsverfahren als Antwort auf das Bestimmen, dass der Datenspeicher in einem ersten Verwendungsszenario verwendet wird, gewählt wird und wobei ein zweites Blockzuweisungsverfahren als Antwort auf das Bestimmen, dass der Datenspeicher in einem zweiten Verwendungsszenario verwendet wird, gewählt wird, wobei das erste Blockzuweisungsverfahren ferner Blöcke zuweist, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren.
  • In einigen Ausführungsformen enthalten die Mittel zum Bestimmen und die Mittel zum Auswählen einen Controller.
  • In einigen Ausführungsformen enthält der Datenspeicher einen dreidimensionalen Datenspeicher.
  • Weitere Ausführungsformen sind möglich, und jede der Ausführungsformen kann alleine oder in Kombination mit weiteren verwendet werden. Dementsprechend werden nun verschiedene Ausführungsformen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • Unter Bezugnahme auf die Zeichnungen sind in Fig. 1A-1C Speichersysteme gezeigt, die zur Verwendung beim Implementieren von Aspekten dieser Ausführungsformen geeignet sind. 1A ist ein Blockdiagramm, das ein nichtflüchtiges Speichersystem 100 gemäß einer Ausführungsform des hier beschriebenen Gegenstands darstellt. Unter Bezugnahme auf 1A enthält das nichtflüchtige Speichersystem 100 einen Controller 102 und einen nichtflüchtigen Datenspeicher, der aus einem oder mehreren nichtflüchtigen Datenspeicherchips 104 gebildet sein kann. Der Begriff Chip wie hierin verwendet bezieht sich auf die Sammlung von nichtflüchtigen Datenspeicherzellen und eine zugeordnete Schaltungsanordnung zum Managen des physikalischen Betriebs der nichtflüchtigen Datenspeicherzellen, die auf einem einzelnen Halbleitersubstrat gebildet sind. Der Controller 102 ist mit einem Host-System gekoppelt und überträgt Anweisungssequenzen für Lese-, Programmier- und Löschvorgänge an den nichtflüchtigen Datenspeicherchip 104.
  • Der Controller 102 (der ein Flash-Datenspeicher-Controller sein kann) kann die Form einer Verarbeitungsschaltungsanordnung, eines Mikroprozessors oder eines Prozessors und eines computerlesbaren Mediums, auf dem computerlesbarer Programmcode (z. B. Firmware) gespeichert ist, der z. B. durch den (Mikro-)Prozessor, Logikgatter, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC), einen programmierbaren Logikcontroller oder einen eingebetteten Mikrocontroller ausführbar ist, annehmen. Der Controller 102 kann mit Hardware und/oder Firmware konfiguriert sein, um die verschiedenen Funktionen durchzuführen, die unten beschrieben und in den Ablaufplänen gezeigt sind. Außerdem können einige der Komponenten, die als innerhalb des Controllers angeordnet gezeigt sind, ebenso außerhalb des Controllers gespeichert sein, und andere Komponenten können verwendet werden. Außerdem kann der Ausdruck „betriebstechnisch in Verbindung mit“ direkt in Verbindung mit oder indirekt (leitungsgebunden oder drahtlos) durch eine oder mehrere Komponenten, die hier gezeigt oder beschrieben sein können oder nicht, in Verbindung mit bedeuten.
  • Ein Flash-Datenspeicher-Controller wie hierin verwendet ist eine Einrichtung, die Daten, die in einem Flash-Datenspeicher gespeichert sind, managt und mit einem Host wie z. B. einem Computer oder einer elektronischen Einrichtung kommuniziert. Ein Flash-Datenspeicher-Controller kann zusätzlich zu der bestimmten, hier beschriebenen Funktionalität verschiedene Funktionalitäten aufweisen. Zum Beispiel kann der Flash-Datenspeicher-Controller den Flash-Datenspeicher formatieren, um zu gewährleisten, dass der Speicher ordnungsgemäß arbeitet, defekte Flash-Datenspeicherzellen austragen und Ersatzspeicherzellen zuweisen, um durch sie künftig ausgefallene Zellen zu ersetzen. Ein Teil der Ersatzspeicherzellen kann verwendet werden, um eine Firmware bereitzuhalten, um den Flash-Datenspeicher-Controller zu betreiben und weitere Funktionen zu implementieren. Wenn ein Host im Betrieb Daten aus dem Flash-Datenspeicher lesen oder in ihn schreiben muss, wird er mit dem Flash-Datenspeicher-Controller kommunizieren. Wenn der Host eine logische Adresse liefert, von der Daten gelesen oder an die Daten geschrieben werden sollen, kann der Flash-Datenspeicher-Controller die logische Adresse, die von dem Host empfangen wurde, in eine physikalische Adresse in dem Flash-Datenspeicher konvertieren (alternativ kann der Host die physikalische Adresse liefern). Der Flash-Datenspeicher-Controller kann außerdem verschiedene Datenspeichermanagementfunktionen wie z. B., jedoch nicht darauf eingeschränkt, einen Abnutzungsausgleich (Verteilen von Schreibvorgängen, um das Abnutzen bestimmter Datenspeicherblöcke zu vermeiden, in die sonst wiederholt geschrieben würde) oder eine Speicherbereinigung (Bewegen lediglich der gültigen Seiten mit Daten in einen neuen Block, nachdem ein Block voll ist, damit der volle Block gelöscht und wiederverwendet werden kann) durchführen.
  • Der nichtflüchtige Datenspeicherchip 104 kann jedes geeignete nichtflüchtige Speichermedium, einschließlich NAND-Flash-Datenspeicherzellen und/oder NOR-Flash-Datenspeicherzellen, enthalten. Die Datenspeicherzellen können die Form von Festkörper-Datenspeicherzellen (z. B. Flash-Datenspeicherzellen) annehmen und können einmal programmierbar, einige Male programmierbar oder vielfach programmierbar sein. Die Datenspeicherzellen können außerdem einstufige Zellen (SLC), mehrstufige Zellen (MLC) und dreistufige Zellen (TLC) sein oder weitere derzeit bekannte oder später entwickelte Datenspeicherzellstufentechnologien verwenden. Außerdem können die Datenspeicherzellen in einer zweidimensionalen oder einer dreidimensionalen Weise hergestellt sein.
  • Die Schnittstelle zwischen dem Controller 102 und dem nichtflüchtigen Datenspeicherchip 104 kann jede geeignete Flash-Schnittstelle wie z. B. Umschaltmodus [Toggle Mode] 200, 400 oder 800 sein. In einer Ausführungsform kann das Speichersystem 100 ein kartenbasiertes System wie z. B. eine sichere Digitalkarte (SD-Karte) oder eine sichere Mikrodigitalkarte (Mikro-SD-Karte) sein. In einer alternativen Ausführungsform kann das Speichersystem 100 ein Teil eines eingebetteten Speichersystems sein.
  • Obwohl das nichtflüchtige Speichersystem 100 (das hierin manchmal als ein Speichermodul bezeichnet wird) in dem in 1A dargestellten Beispiel einen einzelnen Kanal zwischen dem Controller 102 und dem nichtflüchtigen Datenspeicherchip 104 enthält, ist der hierin beschriebene Gegenstand nicht auf das Vorhandensein eines einzelnen Speicherkanals eingeschränkt. In einigen NAND-Speichersystemarchitekturen (wie z. B. den in 1B und 1C gezeigten) können abhängig vom Leistungsvermögen des Controllers z. B. 2, 4, 8 oder mehr NAND-Kanäle zwischen dem Controller und der NAND-Datenspeichereinrichtung vorliegen. In jeder der hierin beschriebenen Ausführungsformen kann mehr als ein Kanal zwischen dem Controller und dem Datenspeicherchip vorliegen, selbst wenn in den Zeichnungen ein einzelner Kanal gezeigt ist.
  • 1B stellt ein Speichermodul 200 dar, das mehrere nichtflüchtige Speichersysteme 100 enthält. Insofern kann das Speichermodul 200 einen Speicher-Controller 202 enthalten, der mit einem Host und mit dem Speichersystem 204 gekoppelt ist, das mehrere nichtflüchtige Speichersysteme 100 enthält. Die Schnittstelle zwischen dem Speicher-Controller 202 und den nichtflüchtigen Speichersystemen 100 kann eine Busschnittstelle wie z. B. ein serielles Zubehör mit fortschrittlicher Technologie (SATA) oder eine Peripheriekomponenten-Expressschnittstelle (PCIe) sein. Das Speichermodul 200 kann in einer Ausführungsform ein Festkörperlaufwerk (SSD-Laufwerk) sein, wie es z. B. in tragbaren Rechenvorrichtungen wie z. B. Laptop-Computern und Tablet-Computern zu finden ist.
  • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem darstellt. Ein hierarchisches Speichersystem 250 enthält mehrere Speicher-Controller 202, von denen jeder ein entsprechendes Speichersystem 204 steuert. Die Host-Systeme 252 können auf Datenspeicher in dem Speichersystem über eine Busschnittstelle zugreifen. In einer Ausführungsform kann die Busschnittstelle eine NVMe-Schnittstelle oder eine Glasfaserkanal-über-Ethernet-Schnittstelle (FCoE) sein. In einer Ausführungsform kann das in 1C dargestellte System ein in einem Rack einbaubares Massenspeichersystem sein, auf das von mehreren Host-Computern zugegriffen werden kann, wie es in einem Rechenzentrum oder an einem Ort, an dem ein Massenspeicher benötigt wird, zu finden wäre.
  • 2A ist ein Blockdiagramm, das Komponenten des Controllers 102 ausführlicher darstellt. Der Controller 102 enthält ein Frontend-Modul 108, das mit einem Host gekoppelt ist, ein Backend-Modul 110, das mit dem einen oder den mehreren nichtflüchtigen Datenspeicherchips 104 gekoppelt ist, und verschiedene weitere Module, die Funktionen durchführen, die nun ausführlich beschrieben werden. Ein Modul kann z. B die Form einer gekapselten, funktionellen Hardware-Einheit, die zur Verwendung mit anderen Komponenten entworfen ist, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware), der durch einen (Mikro-)Prozessor oder eine Verarbeitungsschaltungsanordnung ausführbar ist, der normalerweise eine bestimmte Funktion von ähnlichen Funktionen durchführt, oder eine eigenständige Hardware- oder Softwarekomponente, die mit einem größeren System gekoppelt ist, annehmen. Die Module des Controllers 102 können ein Blockzuweisungsmodul 111, das unten ausführlicher beschrieben wird, enthalten und können in Hardware oder Software/Firmware implementiert sein. Wie unten klar werden wird, kann der Controller 102 zusammen mit einer Hardware- und/oder Softwarekonfiguration zum Durchführen der hierin diskutierten und in den Zeichnungen gezeigten Algorithmen außerdem Mittel zum Vorhersagen des Nutzungsverhaltens des Datenspeichers und Mittel zum Zuweisen eines Blocks auf der Grundlage des vorhergesagten Nutzungsverhaltens bereitstellen.
  • Nochmals unter Bezugnahme auf Module des Controllers 102 managt ein Puffermanager/Bus-Controller 114 Puffer in einem Schreib/Lese-Speicher (RAM) 116 und steuert die interne Busarbitrierung des Controllers 102. Auf einem Festwertspeicher (ROM) 118 ist Systemstartcode gespeichert. Obwohl sie in 2A als von dem Controller 102 getrennt angeordnet dargestellt sind, können der RAM 116 und/oder der ROM 118 in anderen Ausführungsformen in dem Controller angeordnet sein. In nochmals anderen Ausführungsformen können Abschnitte des RAM und des ROM sowohl in dem Controller 102 als auch außerhalb des Controllers angeordnet sein.
  • Das Frontend-Modul 108 enthält eine Host-Schnittstelle 120 und eine Schnittstelle 122 der physikalischen Schicht (PHY), die die elektrische Schnittstelle zu dem Host oder zu dem Speicher-Controller der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 120 kann vom Typ des verwendeten Datenspeichers abhängen. Beispiele für Host-Schnittstellen 120 enthalten, sind jedoch nicht darauf eingeschränkt, SATA, SATA Express, SAS, Faserkanal, USB, PCIe und NVMe. Die Host-Schnittstelle 120 ermöglicht typischerweise die Übertragung von Daten, Steuersignalen und Zeitvorgabesignalen.
  • Das Backend-Modul 110 enthält eine Fehlerkorrektur-Controller-Engine (ECC-Engine) 124, die die Daten-Bytes, die von dem Host empfangen werden, codiert und die Datenbytes, die aus dem nichtflüchtigen Datenspeicher gelesen werden, decodiert und darin enthaltene Fehler korrigiert. Eine Anweisungsablaufsteuerung 126 erzeugt Anweisungsfolgen wie z. B. Programmier- und Löschanweisungsfolgen, die an den nichtflüchtigen Datenspeicherchip 104 übertragen werden sollen. Ein RAID-Modul (Modul mit einer redundanten Anordnung unabhängiger Laufwerke) 128 managt die Erzeugung der RAID-Parität und die Wiederherstellung beschädigter Daten. Die RAID-Parität kann als eine zusätzliche Ebene des Integritätsschutzes für die Daten, die in die Datenspeichereinrichtung 104 geschrieben werden, verwendet werden. In einigen Fällen kann das RAID-Modul 128 ein Teil der ECC-Engine 124 sein. Eine Datenspeicherschnittstelle 130 liefert die Anweisungsfolgen an den nichtflüchtigen Datenspeicherchip 104 und empfängt Zustandsinformationen von dem nichtflüchtigen Datenspeicherchip 104. In einer Ausführungsform kann die Datenspeicherschnittstelle 130 eine Schnittstelle mit doppelter Datenrate (DDR-Schnittstelle) wie z. B. eine Schnittstelle gemäß dem Umschaltmodus [Toggle Mode] 200, 400 oder 800 sein. Eine Flash-Datenspeicherschicht 132 steuert den Gesamtbetrieb des Backend-Moduls 110.
  • Das Speichersystem 100 enthält außerdem weitere diskrete Komponenten 140 wie z. B. externe elektrische Schnittstellen, externen RAM, Widerstände, Kondensatoren oder weitere Komponenten, die mit dem Controller 102 gekoppelt sein können. In alternativen Ausführungsformen sind die Schnittstelle 122 der physikalischen Schicht und/oder das RAID-Modul 128 und/oder die Medienmanagementschicht 138 und/oder das Puffer-Management/der Bus-Controller 114 optionale Komponenten, die in dem Controller 102 nicht erforderlich sind.
  • 2B ist ein Blockdiagramm, das die Komponenten des nichtflüchtigen Datenspeicherchips 104 ausführlicher darstellt. Der nichtflüchtige Datenspeicherchip 104 enthält die periphere Schaltungsanordnung 141 und die nichtflüchtige Datenspeicheranordnung 142. Die nichtflüchtige Datenspeicheranordnung 142 enthält die nichtflüchtigen Datenspeicherzellen, die verwendet werden, um Daten zu speichern. Die nichtflüchtigen Datenspeicherzellen können beliebige geeignete nichtflüchtige Datenspeicherzellen sein, die NAND-Flash-Datenspeicherzellen und/oder NOR-Flash-Datenspeicherzellen in einer zweidimensionalen und/oder einer dreidimensionalen Konfiguration enthalten. Die periphere Schaltungsanordnung 141 enthält eine Zustandsmaschine 152, die Zustandsinformationen an den Controller 102 liefert. Der nichtflüchtige Datenspeicherchip 104 enthält ferner einen Datenzwischenspeicher 156, der Daten zwischenspeichert.
  • Wie oben erwähnt kann ein Speichersystem einen Datenspeicher besitzen, der in Blöcken organisiert ist (ein Block wie hierin verwendet ist eine Gruppe von Datenspeicherzellen). Im Zeitablauf können in einen Block geschriebene Daten für ungültig erklärt werden (z. B. aufgrund einer Host-Datenlöschung und/oder interner Datenübertragungen in dem Speichersystem). Die Speicherbereinigung ist ein Vorgang, der die gültigen Teile von verwendeten Datenspeicherblöcken sammelt (wobei die für ungültig erklärten Teile ignoriert werden) und sie in einen neuen Block bewegt. Wenn ein Block vollständig für ungültig erklärt wird, wird er in den Pool von freien Blöcken zurückgeführt. Die Speicherbereinigung kann durch Vorhalten eines „Gültigkeitszählers“ für jeden Block, um die Anzahl der gültigen Flash-Managementeinheiten in dem Block zu verfolgen, und/oder durch einen Programmier-/Löschzykluszähler, um die Haltbarkeit des Blocks zu überwachen, gesteuert werden. Ein Speicherbereinigungsalgorithmus kann durch Prüfen, welcher Block den niedrigsten „Gültigkeitszähler“, den höchsten Programmier-/Löschzykluszähler und/oder einen Programmier-/Löschzykluszähler, der unter einem Mittelwert liegt, besitzt, wählen, welcher Block als nächstes „bereinigt“ werden sollte.
  • Die Speicherbereinigung kann die Host-Leistungsfähigkeit beeinträchtigen, da sie die Schnittstelle vom Controller des Speichersystems zum Datenspeicher verwendet und außerdem Raum sowohl im Controller des Speichersystems als auch in seinem Datenspeicher verwendet. Eine effiziente Speicherbereinigung sowohl hinsichtlich des Datenspeichers als auch der Leistungsfähigkeit ist sehr nützlich. Die folgenden Ausführungsformen stellen ein Verfahren zum Vorhersagen des Nutzungsverhaltens und zum Wählen eines Blockzuweisungsverfahrens, das die Speicherbereinigung wirksam verändern wird, bereit. Das heißt, diese Ausführungsformen können das vorhergesagte Verhalten eines Anwenders oder Hosts im Vorgang des Wählens des nächsten zuzuweisenden Blocks und/oder im Vorgang des Wählens des Speicherbereinigungsplans verwenden. Unter Verwendung einer adaptiven Blockzuweisung im Vorgang der Speicherbereinigung auf der Grundlage des Verwendungsszenarios der aktuellen Einrichtung können diese Ausführungsformen verwendet werden, um eine effizientere Vorgehensweise als frühere Entwürfe bereitzustellen.
  • Unter Bezugnahme auf die Zeichnungen ist 3 ein Ablaufplan 300 eines Verfahrens einer Ausführungsform zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung. Wie in 3 gezeigt ist, bestimmt in dieser Ausführungsform das Speichersystem 100 (z. B. der Controller 102 oder das Blockzuweisungsmodul 111), ob der Datenspeicher in einem ersten Verwendungsszenario oder einem zweiten Verwendungsszenario verwendet wird (Vorgang 310). Das Speichersystem 100 verwendet als Antwort auf das Bestimmen, dass der Datenspeicher 104 in dem ersten Verwendungsszenario verwendet wird, ein erstes Blockzuweisungsverfahren (Vorgang 320). Umgekehrt verwendet das Speichersystem 100 als Antwort auf das Bestimmen, dass der Datenspeicher 104 in dem zweiten Verwendungsszenario verwendet wird, ein zweites Blockzuweisungsverfahren (Vorgang 330). In einer Ausführungsform werden Daten, die in dem ersten Verwendungsszenario gespeichert werden, weniger häufig aktualisiert, als Daten, die in dem zweiten Verwendungsszenario gespeichert werden, und das erste Blockzuweisungsverfahren weist Blöcke zu, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren. In einer Ausführungsform kann sich ein Block näher daran befinden, eine Speicherbereinigung zu benötigen, als ein weiterer Block, wenn dieser Block einen Parameter (z. B. einen Wert eines gültigen Flash-Managementeinheitszählers (FMU-Zähler) und/oder eines Programmier-/Löschzykluszählers) aufweist, der näher an dem Schwellenwert zum Initiieren einer Speicherbereinigung liegt.
  • Zum Beispiel kann eine klare Unterscheidung zwischen einer Blockzuweisung für Speichersysteme/Datenspeicher, die zum Streamen von Videos verwendet werden (extremer Anwendungsfall: wobei der gesamte Datenspeicher 104 (z. B. ein Flash-Laufwerk) beschrieben und dann immer wieder unmittelbar erneut beschrieben wird), und für Speichersysteme/Datenspeicher, die zum Aktualisieren von Online-Inhalten verwendet werden (Anwendungsfall: wobei dieselbe logische Blockadresse (LBA) immer wieder beschrieben wird wie z. B. dann, wenn eine Protokolldatei geschrieben wird, Wartungsarbeiten durchgeführt werden oder eine Einzeladressaktualisierung durchgeführt wird) vorgenommen werden. In dem ersten Verwendungsszenario (Überschreiben eines Laufwerks) kann die Blockzuweisung in einer „konservativeren“ Weise erfolgen, da alle Daten gültig sind und kein Systemgewinn durch Freigeben von Blöcken durch Speicherbereinigungsvorgänge vorliegt. Allerdings kann in dem zweiten Verwendungsszenario die Blockzuweisung in einer „aggressiveren“ Weise erfolgen, da lediglich wenige Flash-Managementeinheiten (FMU) gültig sind und ein starker Anreiz vorliegt, Blöcke schnell durch Speicherbereinigungsvorgänge wiederzubeleben.
  • Daher können Daten, die in dem ersten Verwendungsszenario (z. B. „Kalt-Speichern“) geschrieben werden, Blöcken zugewiesen werden, die sich nahe an ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden (z. B. Blöcke mit einem hohen Programmier-/Löschzykluszähler (PEC-Zähler)). Obwohl sich die Blöcke nahe an ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden, weil die Daten nicht überschrieben werden (oder eine begrenzte Anzahl von Schreibwiederholungen aufweisen), liegt eine geringe Wahrscheinlichkeit vor, dass die Blöcke in naher Zukunft eine Speicherbereinigung benötigen werden. Zudem wäre dieser Typ von Blöcken nicht ideal für Situationen, in denen mehrere Schreibwiederholungen vorliegen (das zweite Verwendungsszenario), weil häufige Schreibwiederholungen in Blöcken, die sich nahe an ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden, eine Speicherbereinigung auslösen werden, was nicht bevorzugt sein könnte, wie oben diskutiert ist.
  • Im Gegensatz dazu können Daten, die in dem zweiten Verwendungsszenario geschrieben werden (z. B. „viele Schreibwiederholungen“), Blöcken zugewiesen werden, die sich weiter entfernt von ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden (z. B. Blöcke mit einem niedrigen Programmier-/Löschzykluszähler (PEC-Zähler) oder ein Block, der frisch einer Speicherbereinigung unterzogen wurde oder dessen Speicher vor dem geplanten Zeitpunkt bereinigt wurde). Derartige Blöcke sind besser für Daten geeignet, die überschrieben werden, als Blöcke, die sich näher an ihrem Speicherbereinigungs-Initiierungsschwellenwert befinden (z. B. Blöcke mit einem hohen Programm-/Löschzykluszähler (PEC-Zähler)), da derartige Blöcke mehreren Schreibwiederholungen standhalten, bevor sie den Speicherbereinigungs-Initiierungsschwellenwert erreichen.
  • Wie aus diesen Beispielen ersichtlich ist, verändert das Wählen eines Blockzuweisungsverfahrens auf der Grundlage eines vorhergesagten Nutzungsverhaltens wirksam, wann die Speicherbereinigung erfolgt, da die Frage, ob ein zugewiesener Block sich relativ näher daran oder weiter entfernt davon befindet, eine Speicherbereinigung zu benötigen, beeinflusst, wann die Speicherbereinigung dieses Blocks erfolgt. Wie oben erwähnt kann die Speicherbereinigung die Host-Leistungsfähigkeit beeinträchtigen, da sie die Schnittstelle von dem Controller 102 des Speichersystems zu dem Datenspeicher 104 verwendet und außerdem Raum sowohl in dem Controller 102 des Speichersystems als auch in seinem Datenspeicher 104 und/oder im RAM 116 verwendet. Das Verwenden einer Blockzuweisung auf der Grundlage eines Nutzungsverhaltens kann eine effiziente Speicherbereinigung sowohl hinsichtlich des Datenspeichers als auch der Leistungsfähigkeit bereitstellen. Diese Ausführungsformen können außerdem die für effiziente Speicherbereinigungsvorgänge erforderliche, überhöhte Datenspeicherbereitstellung verringern, da die Gesamtzahl der im Verlauf der Lebensdauer des Speichersystems zugewiesenen Blöcke für denselben Dateneingang niedriger sein kann. Diese Ausführungsformen können außerdem die Haltbarkeit und die Leistungsfähigkeit erhöhen, wenn der Datenspeicher 104 voll ist.
  • Während in dem obigen Beispiel lediglich zwei Verwendungsszenarios diskutiert wurden, sei erwähnt, dass zwischen diesen viele Verwendungsszenarien möglich sind. In einer Ausführungsform ist das Speichersystem 100 konfiguriert, das Blockzuweisungsschema auf der Grundlage des Verhaltens des Anwenders oder des Verwendungsszenarios dynamisch zwischen „konservativ“ und „aggressiv“ festzulegen.
  • Es sind viele Alternativen vorhanden, die mit diesen Ausführungsformen verwendet werden können. Zum Beispiel kann die Bestimmung, ob der Datenspeicher 104 in einem ersten Verwendungsszenario oder einem zweiten Verwendungsszenario (oder einer beliebigen Anzahl von Verwendungsszenarien) verwendet wird, auf einem beliebigen geeigneten Weg erfolgen. Zum Beispiel wird das Bestimmen in einer Ausführungsform durch Empfangen einer Angabe von einem Host, ob der Datenspeicher 104 in dem ersten Verwendungsszenario oder in dem zweiten Verwendungsszenario verwendet wird, durchgeführt. In einer weiteren Ausführungsform wird das Bestimmen durch das Speichersystem 100 durchgeführt, wobei der Controller 102 z. B. mit einem Algorithmus programmiert ist, der entscheidet, ob das Speichersystem 100/der Datenspeicher 104 in einem ersten Verwendungsszenario, einem zweiten Verwendungsszenario, usw. oder weder noch/in keinem davon verwendet wird. Zum Beispiel vergleicht der Controller 102 in einer Ausführungsform mehrere Schreibanweisungen mit Mustern, die in dem Speichersystem 100 gespeichert sind. Dieses Beispiel wird in Verbindung mit 4 und 5 ausführlicher diskutiert.
  • Wie in 4 gezeigt ist, können die Schreibmuster, die verschiedenen Schreibszenarien entsprechen, in dem Datenspeicher 104 (oder an einem anderen Speicherort (z. B. im ROM 118) in dem Speichersystem 100) gespeichert werden, wenn das Speichersystem 100 offline ist (z. B. während der Produktion, jedoch kann in einer Ausführungsform das gespeicherte Muster während des Betriebs des Speichermoduls 100 aktualisiert werden) (Vorgang 410). Zum Beispiel kann eine Anzahl (N) von Mustern gespeichert werden, die die Muster verkörpern, mit denen eine optimierte Blockzuweisung verbunden sein kann (z. B. kann ein erstes Blockzuweisungsverfahren einem der Muster zugeordnet sein und kann ein zweites Blockzuweisungsverfahren einem weiteren der Muster zugeordnet sein). Eine erfolgreiche Klassifizierung als ein Muster kann zu einer Blockzuweisungsoptimierung für das Muster führen. Diese Muster können z. B. logische Blockadressen (LBA) oder LBA-Bereiche enthalten, für die für ein gegebenes Verwendungsszenario erwartet wird, dass ein Anwender sie beschreibt. Der LBA-Schreibverlauf des Anwenders/Hosts kann aufgenommen werden und kann mit jedem der gespeicherten Muster abgeglichen werden.
  • 5 ist ein Ablaufplan 500 eines Verfahrens einer Ausführungsform, die Schreibadressen von Schreibanweisungen, die durch das Speichersystem 100 empfangen werden, mit Schreibadressmustern, die in dem Speichersystem 100 gespeichert sind, abgleicht. In dieser Ausführungsform werden die Vorgänge in diesem Ablaufplan 500 durchgeführt, wenn das Speichersystem 100 online ist. Wie in 5 gezeigt ist, prüft das Speichersystem 100 (z. B. der Controller 102 oder das Blockzuweisungsmodul 111) in dieser Ausführungsform kontinuierlich Schreibadressmuster aus mehreren Schreibanweisungen, die von dem Speichersystem 100 empfangen werden, gegen Muster, die in dem Speichersystem 100 gespeichert sind (Vorgang 510). Das Speichersystem 100 erzeugt daraufhin für jedes gespeicherte Muster eine Punktzahl, die ein Übereinstimmungsniveau des aktuellen Schreibmusters mit dem gespeicherten Muster repräsentiert (Vorgang 520). Daher wird für jedes der gespeicherten Muster eine Punktzahl erzeugt, die den Abgleich des Musters mit dem Schreibverlauf des Anwenders repräsentiert. Das Speichersystem 100 prüft anschließend die Übereinstimmungspunktzahl gegen einen Schwellenwert (Vorgang 530). Wenn eine geringe Übereinstimmung vorliegt, beginnt der Prozess erneut bei Vorgang 510. Wenn allerdings eine hohe Übereinstimmung vorliegt, ändert das Speichersystem 100 das Blockzuweisungsschema gemäß dem detektierten Schreibmuster (Vorgang 540). Dementsprechend wird ein erfolgreicher Abgleich erklärt, wenn eine der Punktzahlen einen bestimmten Schwellenwert durchläuft. Daher kann z. B. dann, wenn eines der Muster andauernd das Beschreiben desselben kleinen Bereichs von LBA darstellt und ein Anwender andauernd 1 LBA (oder einen Bereich von <100 LBA) beschreibt, dieses Muster identifiziert werden, und die Angabe kann an die Blockzuweisungseinheit weitergegeben werden, die daraufhin gemäß dem oben diskutierten Verwendungsszenario „erneutes Schreiben von Einzeladressen“ wirkt.
  • Es sei erwähnt, dass der oben beschriebene Algorithmus lediglich ein Beispiel war und dass andere Algorithmen und Verfahren verwendet werden können. Ferner können mit diesen Ausführungsformen viele weitere Alternativen verwendet werden. Zum Beispiel kann in dem Blockzuweisungsprozess zusätzlich zu oder als eine Alternative zu dem oben diskutierten Abgleichprozess ein „weiches“ Maß erzeugt und verwendet werden, das die Übereinstimmung des Musters mit dem Verlauf des Anwenders repräsentieren kann, z. B. durch Vorhersagen des Nutzungsverhaltens unter Verwendung von maschinellem Lernen. In dieser Alternative kann ein Algorithmus für maschinelles Lernen zum Lernen der Zugriffsmuster des Anwenders verwendet werden und dementsprechend die Entscheidung über die Speicherbereinigungsstrategie (z. B. zwischen dem aggressiven und dem konservativen Schema) treffen. Die Mustererkennung kann unter Verwendung einer Klassifikation mit einer Support-Vektor-Maschine (SVM), eines neuronalen Netzes oder anderer Gruppierungsverfahren wie z. B. des K-Mittelwerteverfahrens und/oder des Hauptkomponentenanalyseverfahrens (PCA-Verfahren) durchgeführt werden. Es können überwachte (vorkalibrierte) oder nichtüberwachte Lernalgorithmen verwendet werden (d. h. das Training/die Kalibrierung des Algorithmus kann mit einem oder ohne einen gekennzeichneten Datensatz erfolgen, der Ground-Truth-Bezeichnungen relevanter Trainingsbeispiele enthält, oder selbst ohne Vortraining/Kalibrierung des Modells, wobei das Klassifizieren direkt während der Lebensdauer der Einrichtung erfolgt (adaptives Lernen)). Als ein nochmals weiteres Beispiel kann das Speichersystem 100 das Nutzungsverhalten durch Berechnen eines Verhältnisses der Einzeladressaktualisierungen zu den Laufwerksüberschreibvorgängen vorhersagen und dementsprechend das Verhältnis des Auslösens von Speicherbereinigungsvorgängen zu Host-Schreibvorgängen und/oder das Verhältnis von dynamischen zu statischen Speicherbereinigungsvorgängen anpassen. Ferner kann anstelle dessen, dass das Speichersystem 100 das Vorhersagen durchführt, der Host das Vorhersagen durchführen und eine Angabe der Ergebnisse an das Speichersystem 100 senden.
  • Ferner kann das Speichersystem 100 zusätzlich zum oder anstelle des Zuweisens von Blöcken auf der Grundlage des Nutzungsverhaltens die Zeit der Initialisierung der Speicherbereinigung durch Anpassen mindestens eines Schwellenwertparameters zum Initiieren der Speicherbereinigung in einem Datenspeicherblock 104 verändern. Beispiele für Schwellenwertparameter enthalten, sind jedoch nicht darauf eingeschränkt, eine Anzahl gültiger Einheiten in dem Block und eine Anzahl von Programmier-/Löschzyklen, die in dem Block durchgeführt werden. Als ein weiteres Beispiel kann die Zeit der Initialisierung der Speicherbereinigung durch Durchführen eine Speicherbereinigung in einem Block vor dem Zeitplan geändert werden (z. B. als Antwort auf das Vorhersagen, dass Daten, die in dem Block gespeichert werden sollen, häufige Aktualisierungen aufweisen werden).
  • Schließlich kann, wie oben erwähnt, jeder geeignete Datenspeichertyp verwendet werden. Halbleiter-Datenspeichereinrichtungen enthalten flüchtige Datenspeichereinrichtungen wie z. B. Einrichtungen mit dynamischem Schreib/Lese-Speicher („DRAM“) oder statischem Schreib/Lese-Speicher („SRAM“), nichtflüchtige Datenspeichereinrichtungen wie z. B. resistive Schreib/Lese-Speicher („ReRAM“), elektrisch löschbare, programmierbare Festwertspeicher(„EEPROM“), Flash-Datenspeicher (die auch als eine Untergruppe der EEPROM betrachtet werden können), ferroelektrische Schreib/Lese-Speicher („FRAM“) und magnetoresistive Schreib/Lese-Speicher („MRAM“) und weitere Halbleiterelemente, die in der Lage sind, Informationen zu speichern. Jeder Typ einer Datenspeichereinrichtung kann verschiedene Konfigurationen aufweisen. Zum Beispiel können Flash-Datenspeichereinrichtungen in einer NAND- oder einer NOR-Konfiguration konfiguriert sein.
  • Die Datenspeichereinrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. In Form eines nicht einschränkenden Beispiels enthalten passive Halbleiterdatenspeicherelemente ReRAM-Einrichtungselemente, die in einigen Ausführungsformen ein resistives Umschaltspeicherelement wie z. B. eine Gegensicherung, ein Phasenänderungsmaterial usw. und wahlweise ein Lenkelement wie z. B. eine Diode usw. enthalten. Ferner in Form eines nicht einschränkenden Beispiels enthalten aktive Halbleiterdatenspeicherelemente EEPROM- und Flash-Datenspeichereinrichtungselemente, die in einigen Ausführungsformen Elemente enthalten, die einen Ladungsspeicherbereich wie z. B. ein schwebendes Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial enthalten.
  • Mehrere Datenspeicherelemente können derart konfiguriert sein, dass sie in Reihe geschaltet sind oder derart, dass auf jedes Element individuell zugegriffen werden kann. In Form eines nicht einschränkenden Beispiels enthalten Flash-Datenspeichereinrichtungen in einer NAND-Konfiguration (NAND-Datenspeicher) typischerweise in Reihe geschaltete Datenspeicherelemente. Eine NAND-Datenspeicheranordnung kann derart konfiguriert sein, dass die Anordnung aus mehreren Datenspeichersträngen besteht, in denen ein Strang aus mehreren Datenspeicherelementen besteht, die eine einzelne Bitleitung gemeinsam verwenden und auf die als eine Gruppe zugegriffen wird. Alternativ können Datenspeicherelemente derart konfiguriert sein, dass auf jedes Element individuell zugegriffen werden kann, z. B. als eine NOR-Datenspeicheranordnung. NAND- und NOR-Datenspeicherkonfigurationen sind Beispiele, und Datenspeicherelemente können anders konfiguriert sein.
  • Die Halbleiter-Datenspeicherelemente, die in und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen wie z. B. als eine zweidimensionale Datenspeicherstruktur oder eine dreidimensionale Datenspeicherstruktur angeordnet sein.
  • In einer zweidimensionalen Datenspeicherstruktur sind die Halbleiter-Datenspeicherelemente in einer einzelnen Ebene oder einer einzelnen Datenspeichereinrichtungsebene angeordnet. Typischerweise sind die Datenspeicherelemente in einer zweidimensionalen Datenspeicherstruktur in einer Ebene (z. B. in einer Ebene in x-z-Richtung) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats, das die Datenspeicherelemente trägt, erstreckt. Das Substrat kann ein Wafer sein, über oder in dem die Schichten der Datenspeicherelemente gebildet sind, oder es kann ein Trägersubstrat sein, das an den Datenspeicherelementen befestigt wird, nachdem sie gebildet wurden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie z. B. Silizium enthalten.
  • Die Datenspeicherelemente können auf der einzelnen Datenspeichereinrichtungsebene in einer geordneten Anordnung wie z. B. in mehreren Reihen und/oder Spalten angeordnet sein. Allerdings können die Datenspeicherelemente in unregelmäßigen oder nicht rechtwinkligen Konfigurationen angeordnet sein. Die Datenspeicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen wie z. B. Bitleitungen oder Wortleitungen aufweisen.
  • Eine dreidimensionale Datenspeicheranordnung ist derart ausgelegt, dass die Datenspeicherelemente mehrere Ebenen oder mehrere Datenspeichereinrichtungsebenen belegen, wodurch sie eine Struktur in drei Dimensionen (d. h. in den x-, y- und z-Richtungen, wobei die y-Richtung im Wesentlichen senkrecht und die x- und die z-Richtung im Wesentlichen parallel zu der Hauptoberfläche des Substrats sind) bilden.
  • Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Datenspeicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Datenspeichereinrichtungsebenen angeordnet sein. Als ein weiteres nicht einschränkendes Beispiel kann eine dreidimensionale Datenspeicheranordnung als mehrere vertikale Spalten angeordnet sein (z. B. Spalten, die im Wesentlichen senkrecht zu der Hauptoberfläche des Substrats, d. h. in der y-Richtung, verlaufen), wobei jede Spalte mehrere Datenspeicherelemente in jeder Spalte besitzt. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was zu einer dreidimensionalen Anordnung von Datenspeicherelementen mit Elementen auf mehreren vertikal gestapelten Datenspeicherebenen führt. Weitere Konfigurationen von Datenspeicherelementen in drei Dimensionen können ebenfalls eine dreidimensionale Datenspeicheranordnung bilden.
  • In Form eines nicht einschränkenden Beispiels können die Datenspeicherelemente in einer dreidimensionalen NAND-Datenspeicheranordnung derart zusammengekoppelt sein, dass sie einen NAND-Strang in einer einzelnen horizontalen (z. B. x-z) Datenspeichereinrichtungsebene bilden. Alternativ können die Datenspeicherelemente derart zusammengekoppelt sein, dass sie einen vertikalen NAND-Strang bilden, der über mehrere horizontale Datenspeichereinrichtungsebenen verläuft. Weitere dreidimensionale Konfigurationen sind vorstellbar, wobei einige NAND-Stränge Datenspeicherelemente in einer einzelnen Datenspeicherebene enthalten, während andere Stränge Datenspeicherelemente enthalten, die sich durch mehrere Datenspeicherebenen erstrecken. Dreidimensionale Datenspeicheranordnungen können außerdem in einer NOR-Konfiguration und in einer ReRAM-Konfiguration entworfen sein.
  • Typischerweise werden in einer monolithischen, dreidimensionalen Datenspeicheranordnung eine oder mehrere Datenspeichereinrichtungsebenen über einem einzelnen Substrat gebildet. Wahlweise kann die monolithische, dreidimensionale Datenspeicheranordnung ebenso eine oder mehrere Datenspeicherschichten zumindest teilweise in dem einzelnen Substrat aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie z. B. Silizium enthalten. In einer monolithischen, dreidimensionalen Anordnung sind die Schichten, die jede Datenspeichereinrichtungsebene der Anordnung bilden, typischerweise auf den Schichten der darunterliegenden Datenspeichereinrichtungsebenen der Anordnung gebildet. Allerdings können Schichten von benachbarten Datenspeichereinrichtungsebenen einer monolithischen, dreidimensionalen Datenspeicheranordnung gemeinsam verwendet werden oder eingreifende Schichten zwischen Datenspeichereinrichtungsebenen aufweisen.
  • Andererseits können zweidimensionale Anordnungen getrennt gebildet und anschließend zusammengepackt werden, um eine nicht monolithische Datenspeichereinrichtung zu bilden, die mehrere Datenspeicherschichten besitzt. Zum Beispiel können nicht monolithische, gestapelte Datenspeicher durch Bilden von Datenspeicherebenen auf getrennten Substraten und anschließendes Stapeln der Datenspeicherebenen aufeinander hergestellt werden. Die Substrate können vor dem Stapeln dünner gemacht oder von den Datenspeichereinrichtungsebenen entfernt werden; da die Datenspeichereinrichtungsebenen jedoch zunächst über getrennten Substraten gebildet werden, sind die resultierenden Datenspeicheranordnungen keine monolithischen, dreidimensionalen Datenspeicheranordnungen. Ferner können mehrere zweidimensionale Datenspeicheranordnungen oder dreidimensionale Datenspeicheranordnungen (monolithisch oder nicht monolithisch) auf getrennten Chips gebildet und anschließend zusammengepackt werden, um eine Datenspeichereinrichtung aus gestapelten Chips zu bilden.
  • Eine zugeordnete Schaltungsanordnung ist typischerweise für den Betrieb der Datenspeicherelemente und zur Kommunikation mit den Datenspeicherelementen erforderlich. Als nicht einschränkende Beispiele können Datenspeichereinrichtungen eine Schaltungsanordnung besitzen, die zum Steuern und Ansteuern von Datenspeicherelementen derart, dass sie Funktionen wie z. B. Programmieren und Lesen durchführen, verwendet wird. Diese zugeordnete Schaltungsanordnung kann sich auf demselben Substrat wie die Datenspeicherelemente und/oder auf einem getrennten Substrat befinden. Zum Beispiel kann ein Controller für Lese-/Schreibvorgänge auf dem Datenspeicher auf einem getrennten Controller-Chip und/oder auf demselben Substrat wie die Datenspeicherelemente angeordnet sein.
  • Ein Fachmann auf dem Gebiet wird erkennen, dass diese Erfindung nicht auf die beschriebenen, zweidimensionalen oder dreidimensionalen Strukturen eingeschränkt ist, sondern alle relevanten Datenspeicherstrukturen innerhalb des Erfindungsgedankens und des Umfangs der Erfindung, wie hierin beschrieben und wie von einem Fachmann verstanden, abdeckt.
  • Es ist beabsichtigt, dass die vorhergehende, ausführliche Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung verstanden wird. Lediglich die folgenden Patentansprüche einschließlich aller Entsprechungen sind bestimmt, den Umfang der beanspruchten Erfindung zu definieren. Schließlich sei erwähnt, dass jeder Aspekt jeder der hierin beschriebenen Ausführungsformen alleine oder in Kombination mit weiteren verwendet werden kann.

Claims (23)

  1. Verfahren zur Blockzuweisung, wobei das Verfahren Folgendes umfasst: Bestimmen, ob ein Datenspeicher in einem Speichersystem in einem ersten Verwendungsszenario oder einem zweiten Verwendungsszenario verwendet wird; als Antwort auf das Bestimmen, dass der Datenspeicher in dem ersten Verwendungsszenario verwendet wird, Verwenden eines ersten Blockzuweisungsverfahrens; und als Antwort auf das Bestimmen, dass der Datenspeicher in dem zweiten Verwendungsszenario verwendet wird, Verwenden eines zweiten Blockzuweisungsverfahrens, wobei das erste Blockzuweisungsverfahren Blöcke zuweist, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren.
  2. Verfahren nach Anspruch 1, wobei das Bestimmen durch Vergleichen mehrerer Schreibanweisungen mit Mustern, die in dem Speichersystem gespeichert sind, durchgeführt wird, wobei das erste Blockzuweisungsverfahren einem der Muster zugeordnet ist und wobei das zweite Blockzuweisungsverfahren einem weiteren der Muster zugeordnet ist.
  3. Verfahren nach Anspruch 1, wobei das Bestimmen unter Verwendung von maschinellem Lernen durchgeführt wird.
  4. Verfahren nach Anspruch 3, wobei das maschinelle Lernen überwachtes Lernen verwendet.
  5. Verfahren nach Anspruch 3, wobei das maschinelle Lernen nichtüberwachtes Lernen verwendet.
  6. Verfahren nach Anspruch 1, wobei das Bestimmen durch Berechnen eines Verhältnisses von Einzeladressaktualisierungen durch den Anwender zu Laufwerksüberschreibvorgängen durchgeführt wird.
  7. Verfahren nach Anspruch 1, wobei das Bestimmen durch Empfangen einer Angabe von einem Host, ob der Datenspeicher in dem ersten Verwendungsszenario oder in dem zweiten Verwendungsszenario verwendet wird, durchgeführt wird.
  8. Verfahren nach Anspruch 1, das ferner das Verändern einer Zeit der Speicherbereinigung umfasst.
  9. Verfahren nach Anspruch 8, wobei die Zeit der Speicherbereinigung durch Anpassen mindestens eines Schwellenwertparameters zum Initiieren der Speicherbereinigung verändert wird.
  10. Verfahren nach Anspruch 8, wobei die Zeit der Speicherbereinigung durch Verändern eines Verhältnisses des Auslösens von Speicherbereinigungsvorgängen zu Host-Schreibvorgängen verändert wird.
  11. Verfahren nach Anspruch 8, wobei die Zeit der Speicherbereinigung durch Verändern eines Verhältnisses von dynamischen zu statischen Speicherbereinigungsvorgängen verändert wird.
  12. Verfahren nach Anspruch 1, wobei Daten, die in dem ersten Verwendungsszenario gespeichert werden, weniger häufig aktualisiert werden, als Daten, die in dem zweiten Verwendungsszenario gespeichert werden.
  13. Verfahren nach Anspruch 1, wobei der Datenspeicher einen dreidimensionalen Datenspeicher umfasst.
  14. Verfahren nach Anspruch 1, wobei das Verfahren in dem Speichersystem durchgeführt wird.
  15. Speichersystem, das Folgendes enthält: einen Datenspeicher; und einen Controller in Kommunikation mit dem Datenspeicher, wobei der Controller konfiguriert ist: mehrere Schreibanweisungen zu empfangen; die mehreren Schreibanweisungen mit Mustern zu vergleichen, die in dem Speichersystem gespeichert sind; für jedes Muster eine Punktzahl zu erzeugen, die ein Übereinstimmungsniveau der mehreren Schreibanweisungen mit diesem Muster repräsentiert; zu bestimmen, welche Punktzahl einen Schwellenwert überschreitet; und ein Blockzuweisungsschema zu wählen, das dem Muster, dessen Punktzahl den Schwellenwert überschreitet, zugeordnet ist.
  16. Speichersystem nach Anspruch 15, wobei ein Blockzuweisungsschema, das einem ersten Muster zugeordnet ist, Blöcke zuweist, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in einem Blockzuweisungsschema, das einem zweiten Muster zugeordnet ist.
  17. Speichersystem nach Anspruch 15, wobei der Controller ferner konfiguriert ist, mindestens einen Schwellenwertparameter zum Initiieren der Speicherbereinigung anzupassen.
  18. Speichersystem nach Anspruch 15, wobei der Datenspeicher einen dreidimensionalen Datenspeicher enthält.
  19. Speichersystem nach Anspruch 15, wobei das Speichersystem in einen Host eingebettet ist.
  20. Speichersystem nach Anspruch 15, wobei das Speichersystem austauschbar mit einem Host verbunden ist.
  21. Speichersystem, das Folgendes enthält: einen Datenspeicher; Mittel zum Bestimmen, wie der Datenspeicher verwendet wird; und Mittel zum Wählen eines Blockzuweisungsverfahrens auf der Grundlage davon, wie der Datenspeicher verwendet wird, wobei ein erstes Blockzuweisungsverfahren als Antwort auf das Bestimmen, dass der Datenspeicher in einem ersten Verwendungsszenario verwendet wird, gewählt wird und wobei ein zweites Blockzuweisungsverfahren als Antwort auf das Bestimmen, dass der Datenspeicher in einem zweiten Verwendungsszenario verwendet wird, gewählt wird, wobei ferner das erste Blockzuweisungsverfahren Blöcke zuweist, die sich näher daran befinden, eine Speicherbereinigung zu benötigen, als jene in dem zweiten Blockzuweisungsverfahren.
  22. Speichersystem nach Anspruch 21, wobei die Mittel zum Bestimmen und die Mittel zum Wählen einen Controller enthalten.
  23. Speichersystem nach Anspruch 21, wobei der Datenspeicher einen dreidimensionalen Datenspeicher enthält.
DE102017128941.0A 2017-03-21 2017-12-06 Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung Ceased DE102017128941A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/465,367 2017-03-21
US15/465,367 US11188456B2 (en) 2017-03-21 2017-03-21 Storage system and method for predictive block allocation for efficient garbage collection

Publications (1)

Publication Number Publication Date
DE102017128941A1 true DE102017128941A1 (de) 2018-09-27

Family

ID=63450160

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017128941.0A Ceased DE102017128941A1 (de) 2017-03-21 2017-12-06 Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung

Country Status (3)

Country Link
US (1) US11188456B2 (de)
CN (1) CN108628763B (de)
DE (1) DE102017128941A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112020002792B4 (de) 2019-06-12 2023-05-04 International Business Machines Corporation Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3076002B1 (fr) * 2017-12-22 2021-05-07 Bull Sas Procede d'amelioration du temps d'execution d'une application informatique
KR102645142B1 (ko) * 2018-10-25 2024-03-07 삼성전자주식회사 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들
KR20200064499A (ko) * 2018-11-29 2020-06-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11580016B2 (en) * 2019-08-30 2023-02-14 Micron Technology, Inc. Adjustable garbage collection suspension interval
CN112650691B (zh) * 2019-10-10 2024-05-24 戴尔产品有限公司 基于改变频率的分层数据存储和垃圾回收系统
US11487455B2 (en) * 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
CN112860593A (zh) * 2021-02-09 2021-05-28 山东英信计算机技术有限公司 一种存储系统的gc性能预测方法、系统、介质及设备
US20230195351A1 (en) * 2021-12-17 2023-06-22 Samsung Electronics Co., Ltd. Automatic deletion in a persistent storage device
CN117891410B (zh) * 2024-03-14 2024-06-11 合肥康芯威存储技术有限公司 一种存储器系统及闪存存储器的数据处理方法

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08335357A (ja) 1995-06-08 1996-12-17 Fujitsu Ltd 記憶装置
US20050198542A1 (en) 2004-03-08 2005-09-08 David Freker Method and apparatus for a variable memory enable deassertion wait time
US7383457B1 (en) 2005-03-23 2008-06-03 Apple Inc. Adaptive power-reduction mode
US7386747B2 (en) 2005-05-10 2008-06-10 Qualcomm Incorporated Method and system for reducing power consumption of a programmable processor
KR100586171B1 (ko) * 2005-07-05 2006-06-07 삼성전자주식회사 시스템 온 칩에 임베드된 메모리의 워드라인 구동회로 및구동방법
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US8032724B1 (en) 2007-04-04 2011-10-04 Marvell International Ltd. Demand-driven opportunistic garbage collection in memory components
US8364918B1 (en) 2007-04-06 2013-01-29 Marvell International Ltd. Sensed opportunistic garbage collection in memory components
US7996642B1 (en) 2007-04-25 2011-08-09 Marvell International Ltd. Digital locked loop on channel tagged memory requests for memory optimization
US8448003B1 (en) 2007-05-03 2013-05-21 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for activating sleep mode
US7792850B1 (en) 2007-07-27 2010-09-07 Sonicwall, Inc. On-the-fly pattern recognition with configurable bounds
US8200587B2 (en) * 2008-04-07 2012-06-12 Microsoft Corporation Techniques to filter media content based on entity reputation
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
WO2010080172A1 (en) 2009-01-12 2010-07-15 Rambus Inc. Clock-forwarding low-power signaling system
US8175617B2 (en) * 2009-10-28 2012-05-08 Digimarc Corporation Sensor-based mobile search, related methods and systems
US20130290758A1 (en) 2010-01-11 2013-10-31 Qualcomm Incorporated Sleep mode latency scaling and dynamic run time adjustment
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8626986B2 (en) * 2010-06-30 2014-01-07 Sandisk Technologies Inc. Pre-emptive garbage collection of memory blocks
US8396905B2 (en) * 2010-11-16 2013-03-12 Actifio, Inc. System and method for improved garbage collection operations in a deduplicated store by tracking temporal relationships among copies
KR101222082B1 (ko) 2010-12-08 2013-01-14 삼성전자주식회사 Mla의 소비 전력을 줄이기 위한 멀티 포트 메모리 장치의 전원제어방법
US20120159098A1 (en) * 2010-12-17 2012-06-21 Microsoft Corporation Garbage collection and hotspots relief for a data deduplication chunk store
US9075652B2 (en) 2010-12-20 2015-07-07 Microsoft Technology Licensing, Llc Idle time service
US8817655B2 (en) * 2011-10-20 2014-08-26 Telefonaktiebolaget Lm Ericsson (Publ) Creating and using multiple packet traffic profiling models to profile packet flows
US9164676B2 (en) 2011-11-30 2015-10-20 International Business Machines Corporation Storing multi-stream non-linear access patterns in a flash based file-system
KR20130076429A (ko) * 2011-12-28 2013-07-08 삼성전자주식회사 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
CN102789423B (zh) * 2012-07-11 2014-12-10 山东华芯半导体有限公司 四池闪存磨损均衡方法
US8799561B2 (en) 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
KR101992940B1 (ko) 2012-08-08 2019-06-26 삼성전자주식회사 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템
KR20140050941A (ko) * 2012-10-22 2014-04-30 삼성전자주식회사 비휘발성 메모리 장치의 데이터 관리 방법
WO2014105829A2 (en) * 2012-12-31 2014-07-03 Sandisk Technologies Inc. Method and system for asynchronous die operations in a non-volatile memory
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9281021B2 (en) 2013-03-14 2016-03-08 Macronix International Co., Ltd. Method and apparatus for reduced read latency for consecutive read operations of memory of an integrated circuit
US9569352B2 (en) 2013-03-14 2017-02-14 Sandisk Technologies Llc Storage module and method for regulating garbage collection operations based on write activity of a host
US9015422B2 (en) 2013-07-16 2015-04-21 Apple Inc. Access map-pattern match based prefetch unit for a processor
US9921635B2 (en) 2013-10-31 2018-03-20 Advanced Micro Devices, Inc. Dynamic and adaptive sleep state management
KR20150068747A (ko) 2013-12-12 2015-06-22 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 모바일 장치 및 비휘발성 메모리 시스템의 동작방법
US10114557B2 (en) * 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) * 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10146448B2 (en) * 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656842B2 (en) * 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10031673B2 (en) * 2014-09-26 2018-07-24 SK Hynix Inc. Techniques for selecting amounts of over-provisioning
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
US10296452B2 (en) * 2015-05-11 2019-05-21 SK Hynix Inc. Data separation by delaying hot block garbage collection
US20160350214A1 (en) 2015-05-29 2016-12-01 Google Inc. Idle time software garbage collection
KR20160143259A (ko) * 2015-06-05 2016-12-14 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US10042416B2 (en) 2015-07-20 2018-08-07 Sandisk Technologies Llc Memory system and method for adaptive auto-sleep and background operations
US20170109101A1 (en) 2015-10-16 2017-04-20 Samsung Electronics Co., Ltd. System and method for initiating storage device tasks based upon information from the memory channel interconnect
JP6675290B2 (ja) 2016-09-09 2020-04-01 キオクシア株式会社 ストレージシステム及び方法
US10228860B2 (en) * 2016-11-14 2019-03-12 Open Drives LLC Storage optimization based I/O pattern modeling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112020002792B4 (de) 2019-06-12 2023-05-04 International Business Machines Corporation Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern

Also Published As

Publication number Publication date
US11188456B2 (en) 2021-11-30
CN108628763B (zh) 2022-08-19
CN108628763A (zh) 2018-10-09
US20180276113A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
DE102017128941A1 (de) Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung
DE102017128940B4 (de) System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem
US9921956B2 (en) System and method for tracking block level mapping overhead in a non-volatile memory
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE102017112013A1 (de) Adaptive Temperatur- und Speicherparameterdrosselung
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112017005887T5 (de) Speichersystem und Verfahren zur thermischen Drosselung über eine Befehlsarbitrierung
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet
DE102020105946A1 (de) Speicherzellen-fehlform-abschwächung
DE102018123494A1 (de) Speichervorrichtung, die zum aktualisieren einesfeldprogrammierbaren gate-arrays ausgestaltetist, und betriebsverfahren dafür
DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe
DE102021107443A1 (de) Dynamische speichersteuerung und verfahren zur verwendung damit
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final