DE112020000143T5 - Ssd-system, das einschaltzyklus-basierten read-scrub verwendet - Google Patents

Ssd-system, das einschaltzyklus-basierten read-scrub verwendet Download PDF

Info

Publication number
DE112020000143T5
DE112020000143T5 DE112020000143.1T DE112020000143T DE112020000143T5 DE 112020000143 T5 DE112020000143 T5 DE 112020000143T5 DE 112020000143 T DE112020000143 T DE 112020000143T DE 112020000143 T5 DE112020000143 T5 DE 112020000143T5
Authority
DE
Germany
Prior art keywords
lba
read
data
count
original
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
DE112020000143.1T
Other languages
English (en)
Inventor
Niles Yang
Lior Avital
Mrinal Kochar
Daniel Linnen
Rohit Sehgal
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 DE112020000143T5 publication Critical patent/DE112020000143T5/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Ein System und Verfahren für ein Einschaltzyklus-basiertes Read-Scrub einer Speichervorrichtung werden bereitgestellt. Eine Steuerung speichert einen Zugriffszähler, der angibt, wie oft auf eine logische Blockadresse (LBA) zugegriffen wurde. Beim Zugriff auf die LBA wird der LBA-Zähler inkrementiert. Wenn der LBA-Zähler einen Zählwert anzeigt, der größer als ein vorbestimmter Zählwert ist, werden in der LBA gespeicherte Daten dupliziert und die Duplikatdaten als Backup-Daten gespeichert. Ein nachfolgender Zugriff auf die LBA zeigt, dass der LBA-Zählwert größer als der vorbestimmte Zählwert ist, so dass auf die Backup-Daten anstatt auf die ursprüngliche LBA zugegriffen wird, wodurch ein lesebedingter Ausfall der Daten verhindert wird, der durch weitere wiederholte Zugriffe auf dieselbe LBA verursacht werden kann.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Anmeldung beansprucht Priorität und den Nutzen der nicht vorläufigen US-Anmeldung mit der Seriennummer 16/689,693, eingereicht am 20. November 2019 mit dem Titel „SSD SYSTEM USING POWER-CYCLE BASED READ SCRUB“ („SSD-SYSTEM MIT EINSCHALTZYKLUS-BASIERTEM READ-SCRUB“), deren Inhalt durch Bezugnahme hierin aufgenommen wird.
  • HINTERGRUND
  • TECHNISCHES GEBIET
  • Geräte und Verfahren beziehen sich auf ein Solid-State-Drive-System und -Verfahren (SSD-System und -Verfahren) und insbesondere auf ein Verfahren und Gerät zum Einschaltzyklus-basierten Read-Scrub.
  • BESCHREIBUNG DES STANDS DER TECHNIK
  • Ein 3D-NAND-Flashspeicher ist ein Typ eines nichtflüchtigen Flashspeichers, in dem Speicherzellen vertikal in mehreren Schichten gestapelt sind. 3D-NAND wurde entwickelt, um Herausforderungen anzugehen, die bei der Skalierung der zweidimensionalen (2D) NAND-Technologie angetroffen werden, um höhere Dichten bei niedrigeren Kosten pro Bit zu erreichen.
  • Eine Speicherzelle ist eine elektronische Vorrichtung oder Komponente, die elektronische Informationen speichern kann. Nichtflüchtige Speicher können Floating-Gate-Transistoren, Charge-Trap-Transistoren oder andere Transistoren als Speicherzellen verwenden. Dank der Fähigkeit zum Einstellen der Schwellenwertspannung eines Floating-Gate-Transistors oder eines Charge-Trap-Transistors kann der Transistor als nichtflüchtiges Speicherelement (d. h. eine Speicherzelle) wie eine einstufige Zelle (Single-Level Cell, SLC) fungieren, die ein einzelnes Datenbit speichert. In einigen Fällen kann mehr als ein Bit pro Speicherzelle vorgesehen sein (z. B. in einer Multi-Level-Speicherzelle) durch Programmieren und Lesen mehrerer Schwellenwertspannungen oder Schwellenwertspannungsbereiche. Zu solchen Zellen gehören eine mehrstufige Zelle (Multi-Level Cell, MLC), die zwei Bits pro Zelle speichert; eine dreistufige Zelle (Triple-Level Cell, TLC), die drei Bits pro Zelle speichert; und eine vierstufige Zelle (Quad-Level Cell, QLC), die vier Bits pro Zelle speichert.
  • 1 ist ein Diagramm eines exemplarischen 3D-NAND-Speicherarrays 260. In diesem Beispiel ist das Speicherarray 100 ein 3D-NAND-Speicherarray. Dies ist jedoch nur ein Beispiel für ein Speicherarray. Das Speicherarray 260 schließt mehrere physische Schichten ein, die monolithisch über einem Substrat 34 wie einem Siliziumsubstrat gebildet sind.
  • Die Speicherelemente, zum Beispiel Speicherzellen 301, sind in Arrays in den physikalischen Schichten angeordnet. Eine Speicherzelle 301 schließt eine Charge-Trap-Struktur 44 zwischen einer Wortleitung 300 und einem leitfähigen Kanal 42 ein. Ladung kann in die Charge-Trap-Struktur 44 eingespritzt oder aus ihr entnommen werden, indem der leitfähigen Kanal 42 relativ zu der Wortleitung 300 unter Vorspannung gesetzt wird. Beispielsweise kann die Charge-Trap-Struktur 44 Siliziumnitrid einschließen und kann von der Wortleitung 300 und dem leitfähigen Kanal 42 durch ein Gate-Dielektrikum, wie ein Siliziumoxid, getrennt werden. Eine Ladungsmenge in der Charge-Trap-Struktur 44 beeinflusst eine Strommenge durch den leitfähigen Kanal 42 während eines Lesevorgangs der Speicherzelle 301 und gibt einen oder mehrere Bitwerte an, die in der Speicherzelle 301 gespeichert sind.
  • Das 3D-Speicherarray 260 schließt mehrere Blöcke 80 ein. Jeder Block 80 schließt einen „vertikalen Schnitt“ der physikalischen Schichten ein, der einen Stapel von Wortleitungen 300 einschließt. Mehrere leitfähige Kanäle 42 (mit einer im Wesentlichen vertikalen Orientierung, wie in 1 gezeigt) erstrecken sich durch den Stapel von Wortleitungen 300. Jeder leitfähige Kanal 42 ist mit einem Speicherelement in jeder Wortleitung 300 gekoppelt, wodurch eine NAND-Kette von Speicherelementen ausgebildet wird, die sich entlang des leitfähigen Kanals 42 erstrecken. 1 zeigt drei Blöcke 80, fünf Wortleitungen 300 in jedem Block 80 und drei leitfähige Kanäle 42 in jedem Block 80 zur besseren Veranschaulichung. Jedoch kann das 3D-Speicherarray 260 mehr als drei Blöcke, mehr als fünf Wortleitungen pro Block und mehr als drei leitfähige Kanäle pro Block aufweisen.
  • Die physische Blockschaltlogik 450 ist mit den leitfähigen Kanälen 42 über mehrere leitfähige Leitungen gekoppelt: Bitleitungen, veranschaulicht als eine erste Bitleitung BL0, eine zweite Bitleitung BL1 und eine dritte Bitleitung BL2, an einem ersten Ende der leitfähigen Kanäle (z. B. einem Ende, das am weitesten von dem Substrat 34 entfernt ist), und Sourceleitungen, veranschaulicht als eine erste Sourceleitung SL0, eine zweite Sourceleitung SL1 und eine dritte Sourceleitung SL2, an einem zweiten Ende der leitfähigen Kanäle (z. B. einem Ende, das näher am oder innerhalb des Substrats 234 liegt). Die physische Blockschaltlogik 450 ist veranschaulicht als mit den Bitleitungen BL0 bis BL2 über „P“-Steuerleitungen gekoppelt, mit den Sourceleitungen SL0 bis SL2 über „M“-Steuerleitungen gekoppelt und mit den Wortleitungen über „N“-Steuerleitungen gekoppelt. Jede von P, M und N kann einen positiven ganzzahligen Wert auf Basis der spezifischen Konfiguration des 3D-Speicherarrays 260 haben.
  • Jeder der leitfähigen Kanäle 42 ist an einem ersten Ende mit einer Bitleitung BL und an einem zweiten Ende mit einer Sourceleitung SL gekoppelt. Dementsprechend kann eine Gruppe von leitfähigen Kanälen 42 in Reihe mit einer bestimmten Bitleitung BL und mit verschiedenen Sourceleitungen SL gekoppelt werden.
  • Es wird angemerkt, dass obwohl jeder leitfähige Kanal 42 als ein einzelner leitfähiger Kanal veranschaulicht ist, jeder der leitfähigen Kanäle 42 mehrere leitfähige Kanäle einschließen kann, die sich in einer Stapelkonfiguration befinden. Die mehreren leitfähigen Kanäle in einer gestapelten Konfiguration können durch einen oder mehrere Steckverbinder gekoppelt werden. Darüber hinaus können weitere Schichten und/oder Transistoren (nicht veranschaulicht) eingeschlossen sein, wie Fachleute auf dem Gebiet verstehen würden.
  • Wenn ein Speichersystem für einen längeren Zeitraum eingeschaltet bleibt, werden in der Regel mehrere Richtlinien wie Speicherbereinigung, Wear-Leveling, Read-Scrub und Lesestörung ausgeführt. Wenn eine Solid-State-Vorrichtung (SSD) nur Einschaltvorgänge erfährt, direkt gefolgt von Ausschaltvorgängen, dann können diese Steady-State-/Laufzeit-Richtlinien möglicherweise nicht vollständig ausgeführt werden, was zu Problemen führt. Genauer gesagt, bleibt bei wiederholten Einschaltvorgängen innerhalb kurzer Zeit, zum Beispiel bei Tausenden von Einschaltzyklen und Kaltstartzyklen von nur 1 s pro Einschaltzyklus, nicht genügend Zeit zwischen den Einschaltvorgängen zum Ausführen der erforderlichen Richtlinien. Neue oder geänderte Richtlinien sind erforderlich, um solche Probleme zu beheben.
  • KURZDARSTELLUNG
  • Ausführungsbeispiele können mindestens die vorstehenden Probleme und/oder Nachteile und andere Nachteile, die vorstehend nicht beschrieben sind, behandeln. Außerdem müssen Ausführungsbeispiele die vorstehend beschriebenen Nachteile nicht überwinden und können möglicherweise keines der vorstehend beschriebenen Probleme überwinden.
  • Ein oder mehrere Ausführungsbeispiele können ein Einschaltzyklus-basiertes Read-Scrub bereitstellen, das Daten, die auf einer logischen Blockadresse (LBA) gespeichert sind, auf die ursprünglich zugegriffen wurde, vor lesebedingter Beschädigung und/oder Ausfall aufgrund übermäßiger Lesevorgänge schützt.
  • Gemäß einem Gesichtspunkt eines Ausführungsbeispiels wird ein Verfahren zum Identifizieren einer Lesestörung einer Speichervorrichtung bereitgestellt. Das Verfahren schließt Einschalten der Speichervorrichtung und Bestimmen eines Einschaltzählwerts ein, bei dem es sich um die Anzahl von Einschaltungen der Speichervorrichtung seit einem letzten Datenschreibvorgang handelt. Wenn der Einschaltzählwert gleich oder größer als eine erste vorbestimmte Anzahl ist, wird bestimmt, ob ein unkorrigierbarer Fehler vorliegt. Wenn ein unkorrigierbarer Fehler vorliegt, wird eine Ausfallstatistik aufgezeichnet und eine Lesestörung am Ort des unkorrigierbaren Fehlers erkannt.
  • Wenn die Vorrichtung eingeschaltet ist, kann auch in die Speichervorrichtung geschrieben werden sowie eine Schreib-, Lese-, Vergleichsoperation durchgeführt werden. Die Speichervorrichtung kann dann ausgeschaltet und wieder eingeschaltet werden.
  • Wenn in dem Fall, dass der Einschaltzählwert gleich oder größer als die erste vorbestimmte Anzahl ist, bestimmt wird, dass kein nicht korrigierbarer Fehler vorliegt, kann die Speichervorrichtung ausgeschaltet werden, und das Verfahren kann dann wiederholt werden.
  • Gemäß einem Gesichtspunkt eines anderen Ausführungsbeispiels wird ein Einschaltzyklus-basiertes Read-Scrub-Verfahren einer Speichervorrichtung bereitgestellt. Erst wird die Speichervorrichtung eingeschaltet und eine ursprüngliche logische Blockadresse (LBA) identifiziert, die gelesen werden soll. Dann wird bestimmt, ob ein LBA-Zugriffszählwert größer oder gleich einem vorbestimmten Zählwert ist. Wenn der LBA-Zugriffszählwert kleiner als der vorbestimmte Zählwert ist, wird auf die ursprüngliche LBA zugegriffen und der LBA-Zugriffszählwert um eins inkrementiert.
  • Wenn der LBA-Zugriffszählwert größer als die vorbestimmte Menge ist, kann anstatt auf die ursprüngliche LBA auf Backup-Daten zugegriffen werden, die ein Duplikat von Daten aufweisen, die in der ursprünglichen LBA gespeichert sind.
  • Schließlich kann der LBA-Zähler geleert und die Speichervorrichtung ausgeschaltet werden. Eine Backup-Operation, die eine Read-Scrub-Operation an einer physischen Blockadresse (PBA) aufweist, die der ursprünglichen LBA entspricht, kann ebenfalls durchgeführt werden.
  • Sobald der LBA-Zugriffszählwert inkrementiert ist, können, wenn dieser größer als der vorbestimmte Zählwert ist, die Daten der ursprünglichen LBA dupliziert und als Backup-/Duplikatdaten in einem von einem einstufigen Zellenblock (Single-Level Cell, SLC), einem dreistufigen Zellenblock (Triple-Level Cell, TLC) und einem vierstufigen Zellenblock (Quad-Level Cell, QLC) gespeichert werden. Daten in einer oder mehreren physischen Blockadressen (PBA), die die ursprüngliche LBA umgeben, können auch dupliziert und als Backup-Daten gespeichert werden.
  • Gemäß einem Gesichtspunkt eines anderen Ausführungsbeispiels wird ein nichtflüchtiges Speichersystem bereitgestellt, aufweisend eine Speichersteuerung, aufweisend einen ersten Port, der dafür eingerichtet ist, mit einer Hostvorrichtung gekoppelt zu werden, und einen zweiten Port, der dafür eingerichtet ist, mit einem Speicherarray gekoppelt zu werden. Die Speichersteuerung ist dafür eingerichtet, eine Speichervorrichtung bei Steuerung durch die Hostvorrichtung einzuschalten, um eine ursprüngliche logische Blockadresse (LBA) des Speicherarrays zu identifizieren, die gelesen werden soll; zu bestimmen, ob ein LBA-Zugriffszählwert größer oder gleich einem vorbestimmten Zählwert ist; und wenn der LBA-Zugriffszählwert kleiner als der vorbestimmte Zählwert ist, die ursprüngliche LBA zu lesen und den LBA-Zugriffszählwert um eins zu inkrementieren.
  • Wenn der LBA-Zugriffszählwert größer als die vorbestimmte Menge ist, kann die Speichersteuerung Backup-Daten lesen, die ein Duplikat von Daten aufweisen, die in der ursprünglichen LBA gespeichert sind.
  • Die Speichersteuerung kann auch eine Backup-Operation durchführen, aufweisend eine Read-Scrub-Operation an einer physischen Blockadresse (PBA), die der ursprünglichen LBA entspricht; Leeren der LBA-Zähler- und Blockinformationen; und Ausschalten der Speichervorrichtung.
  • Die Speichersteuerung kann auch bestimmen, ob der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist. Wenn der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist, kann die Speichersteuerung die Daten der ursprünglichen LBA duplizieren und die Duplikatdaten als Backup-Daten in einem von einem einstufigen Zellenblock (Single-Level Cell, SLC), einem dreistufigen Zellenblock (Triple-Level Cell, TLC) und einem vierstufigen Zellenblock (Quad-Level Cell, QLC) speichern. Die Speichersteuerung kann weiterhin Daten in einer oder mehreren physischen Blockadressen (PBA) duplizieren, die die ursprüngliche LBA umgeben, und die duplizierten Daten der einen oder mehreren PBA als Backup-Daten speichern.
  • Figurenliste
  • Die vorstehenden und/oder andere Gesichtspunkte werden offensichtlich und leichter erkennbar durch die folgende Beschreibung von Ausführungsbeispielen in Verbindung mit den beigefügten Zeichnungen, wobei:
    • 1 ein Diagramm eines exemplarischen 3D-NAND-Speichers ist;
    • 2 ein Blockdiagramm einer exemplarischen Systemarchitektur ist;
    • 3 ein Flussdiagramm eines Verfahrens zum Bestätigen eines Einschaltzyklus- und Read-Scrub-Szenarios eines Ausführungsbeispiels ist;
    • 4 eine Vt-Verteilung eines Ausführungsbeispiels ist, die eine Lesestörungsanzeige veranschaulicht;
    • 5 ein Flussdiagramm eines Einschaltzyklus-basierten Read-Scrub-Verfahrens eines Ausführungsbeispiels ist; und
    • 6 ein Blockdiagramm eines 3D-NAND-Systems eines Ausführungsbeispiels ist.
  • DETAILLIERTE BESCHREIBUNG
  • Nun wird im Detail auf Ausführungsbeispiele Bezug genommen, die in den beigefügten Zeichnungen veranschaulichen sind, wobei gleiche Bezugszeichen stets gleiche Elemente bezeichnen. In dieser Hinsicht können die Ausführungsbeispiele verschiedene Formen annehmen und sind nicht als auf die hierin dargelegten Ausführungsformen beschränkt zu verstehen.
  • Es versteht sich, dass die Begriffe „einschließen“ und/oder „einschließlich“, „aufweisen“ oder „aufweisend“, wenn sie in dieser Patentschrift verwendet werden, das Vorhandensein von angegebenen Merkmalen, Einheiten, Schritten, Vorgängen, Elementen und/oder Komponenten bezeichnen, nicht aber das Vorhandensein oder die Hinzufügung von einer oder mehreren anderen Merkmalen, Einheiten, Schritten, Vorgängen, Elementen, Komponenten und/oder Gruppen von diesen ausschließen.
  • Weiterhin versteht sich, dass, obwohl die Begriffe „erster“, „zweiter“, „dritter“ usw. hierin zum Beschreiben verschiedener Elemente, Komponenten, Bereiche, Schichten und/oder Abschnitte verwendet werden können, diese Elemente, Komponenten, Bereiche, Schichten und/oder Abschnitte nicht durch diese Begriffe beschränkt sein können. Diese Begriffe werden nur verwendet, um ein Element, eine Komponente, einen Bereich, eine Schicht oder einen Abschnitt von einem anderen Element, einer anderen Komponente, einem anderen Bereich, einer anderen Schicht oder einem anderen Abschnitt zu unterscheiden.
  • Wie hierin verwendet, schließt der Begriff „und/oder“ beliebige und alle Kombinationen von einem oder mehreren der zugeordneten aufgeführten Positionen ein. Ausdrücke wie „mindestens eines von“, wenn sie einer Liste von Elementen vorangestellt sind, modifizieren die gesamte Liste von Elementen und nicht die individuellen Elemente der Liste. Zusätzlich beziehen sich Begriffe wie „Einheit“, „-er“ und „Modul“, die in der Patentschrift beschrieben sind, auf ein Element zum Durchführen mindestens einer Funktion oder Operation und können in Hardware, Software, oder der Kombination von Hardware und Software implementiert sein.
  • Verschiedene Begriffe werden verwendet, um auf bestimmte Systemkomponenten Bezug zu nehmen. Verschiedene Firmen können auf eine Komponente mit unterschiedlichen Namen Bezug nehmen. Dieses Dokument beabsichtigt nicht, zwischen Komponenten zu unterscheiden, die sich im Namen, jedoch nicht in der Funktion unterscheiden.
  • Belange dieser Ausführungsbeispiele, die für Fachleute auf dem technischen Gebiet, auf das sich diese Ausführungsbeispiele beziehen, offensichtlich sind, sind hier möglicherweise nicht im Detail beschrieben.
  • Diese Beschreibung bezieht sich auf 3D-NAND-Speichervorrichtungen. Es versteht sich jedoch, dass die Beschreibung hierin ebenfalls auf andere Speichervorrichtungen angewendet werden kann.
  • Wie hierin verwendet, bezeichnet der Ausdruck „Speicher“ „Halbleiterspeicher“. Arten von Halbleiterspeichern schließen flüchtige Speicher und nichtflüchtige Speicher ein. 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 nichtflüchtigen Speicher sind, ohne darauf beschränkt zu sein, Flashspeicher (z. B. NAND- und NOR-Flashspeicher), Electrically Erasable Programmable Read-Only Memory (EEPROM), ferroelektrische Speicher (z. B. FeRAM), magnetoresistive Speicher (z. B. MRAM), Spin-Transfer Torque Magnetic Random Access Memory (STT-RAM oder STT-MRAM), Resistive Random Access Memory (z. B. ReRAM oder RRAM) und Phase Change Memory (z. B. PRAM oder PCM).
  • 2 ist ein Blockdiagramm einer exemplarischen Systemarchitektur 100 mit nichtflüchtigem Speicher 110. Insbesondere schließt die exemplarische Systemarchitektur 100 ein Speichersystem 102 ein, das weiterhin eine Steuerung 104 einschließt, die über einen Bus 112 kommunikativ mit einem Host 106 gekoppelt ist. Der Bus 112 implementiert jedes bekannte oder nachträglich entwickelte Kommunikationsprotokoll, das die Kommunikation zwischen dem Speichersystem 102 und dem Host 106 ermöglicht. Einige nicht einschränkende Beispiele für ein Kommunikationsprotokoll schließen SD-Protokoll (Secure Digital), MS-Protokoll (Memory Stick), USB-Protokoll (Universal Serial Bus) und AMBA (Advanced Microcontroller Bus Architecture) ein.
  • Die Steuerung 104 hat mindestens einen ersten Port 116, der über eine Kommunikationsschnittstelle 114 mit einem nichtflüchtigen Speicher („NVM“) 110 gekoppelt ist. Der Speicher 110 ist innerhalb des Speichersystems 102 angeordnet. Die Steuerung 114 koppelt den Host 106 über einen zweiten Port 118 und den Bus 112. Der erste und zweite Port 116 und 118 der Steuerung können einen oder mehrere Kanäle einschließen, die den Speicher 110 bzw. den Host 106 koppeln.
  • Der Speicher 110 des Speichersystems 102 schließt mehrere Speicher-Dies 110-1 bis 110-N ein. Die Art und Weise, in der der Speicher 110 in Bezug auf 2 definiert ist, ist nicht als einschränkend zu verstehen. In einigen Ausführungsbeispielen definiert der Speicher 110 einen physischen Satz Speicher-Dies wie Speicher-Die 110-1 bis 110-N. In anderen Ausführungsbeispielen definiert der Speicher 110 einen logischen Satz Speicher-Dies, wobei der Speicher 110 Speicher-Dies aus mehreren physisch unterschiedlichen Sätzen Speicher-Dies einschließt. Die Speicher-Dies 110 schließen nichtflüchtige Speicherzellen ein, wie zum Beispiel vorstehend in Bezug auf 1 beschrieben, die Daten auch bei Störung der Stromversorgung beibehalten. Somit kann das Speichersystem 102 leicht transportiert werden und kann das Speichersystem 102 in Speicherkarten und anderen Speichervorrichtungen verwendet werden, die nicht immer an eine Stromversorgung angeschlossen sind.
  • In verschiedenen Ausführungsbeispielen sind die Speicherzellen im Speicher-Die 110 Solid-State-Speicherzellen (z. B. Flash), die einmal, wenige Male oder viele Male programmierbar sind. Zusätzlich können die Speicherzellen im Speicher-Die 110 einstufige Zellen (Single-Level Cell, SLC), mehrstufige Zellen (Multiple-Level Cell, MLC), dreistufige Zellen (Triple-Level Cell, TLC) oder vierstufige Zelle (Quad-Level Cell, QLC) einschließen. In einigen Ausführungsbeispielen können die Speicherzellen planar (z. B. 2D-NAND-Flash) oder gestapelt oder geschichtet (z. B. 3D-NAND-Flash) hergestellt sein.
  • Die Steuerung 104 und der Speicher 110 sind durch eine Schnittstelle 114 kommunikativ gekoppelt, die durch mehrere Kanäle (z. B. physische Verbindungen) implementiert ist, die zwischen der Steuerung 104 und den einzelnen Speicher-Dies 110-1 bis 110-N kommunikativ gekoppelt sind. Die Darstellung einer einzelnen Schnittstelle 114 ist nicht als einschränkend zu verstehen, da eine oder mehrere Schnittstellen zum kommunikativen Koppeln derselben Komponenten verwendet werden können. Die Anzahl von Kanälen, über die die Schnittstelle 114 aufgebaut ist, kann je nach Fähigkeiten der Steuerung 104 variieren. Zusätzlich kann ein einzelner Kanal dafür eingerichtet sein, mehr als einen Speicher-Die kommunikativ zu koppeln. Somit kann der erste Port 116 einen oder mehrere Kanäle, die die Schnittstelle 114 implementieren, koppeln. Die Schnittstelle 114 implementiert jedes bekannte oder nachträglich entwickelte Kommunikationsprotokoll. In Ausführungsbeispielen, bei denen das Speichersystem 102 ein Flash-Speicher ist, ist die Schnittstelle 114 eine Flash-Schnittstelle wie Toggle Mode 200, 400 oder 800 oder Common Flash Memory Interface (CFI).
  • In verschiedenen Ausführungsbeispielen kann der Host 106 jede Vorrichtung oder jedes System einschließen, die das Speichersystem 102 verwenden, z. B. eine Computervorrichtung, eine Speicherkarte, ein Flash-Laufwerk. In einigen Ausführungsbeispielen ist das Speichersystem 102 in den Host 106 eingebettet, z. B. ein Solid-State-Disk-Laufwerk (SSD-Laufwerk), das in einem Laptop-Computer installiert ist. In weiteren Ausführungsformen ist die Systemarchitektur 100 in den Host 106 eingebettet, so dass der Host 106 und das Speichersystem 102 einschließlich der Steuerung 104 auf einem einzigen integrierten Schaltkreis-Chip gebildet sind. In Ausführungsbeispielen, in denen die Systemarchitektur 100 innerhalb einer Speicherkarte implementiert ist, kann der Host 106 eine eingebaute Buchse oder Adapter für eine oder mehrere Typen von Speicherkarten oder Flash-Laufwerken (z. B. einen USB-Port oder einen Speicherkartenschlitz) einschließen.
  • Obwohl das Speichersystem 102 eine eigene Speichersteuerung und eigene Treiber (z. B. Steuerung 104) einschließt, ist das in 2 beschriebene Beispiel nicht als einschränkend zu verstehen. Andere Ausführungsbeispiele des Speichersystems 102 schließen reine Speichereinheiten ein, die stattdessen durch Software gesteuert werden, die von einer Steuerung auf dem Host 106 ausgeführt wird (z. B. steuert ein Prozessor einer Rechenvorrichtung die Speichereinheit 102 einschließlich deren Fehlerbehandlung). Zusätzlich kann jedes hierin beschriebene Verfahren, das von der Steuerung 104 ausgeführt wird, auch von der Steuerung des Hosts 106 ausgeführt werden.
  • Weiterhin Bezug nehmend auf 2, schließt der Host 106 seine eigene Steuerung (z. B. einen Prozessor) ein, die dafür eingerichtet ist, im Speichersystem 102 gespeicherte Anweisungen auszuführen, und weiterhin greift der Host 106 auf im Speichersystem 102 gespeicherte Daten zu, die hierin als „Host-Daten“ bezeichnet werden. Die Host-Daten schließen Daten ein, die von den auf dem Host 106 ausgeführten Anwendungen stammen und sich auf diese beziehen. In einem Beispiel greift der Host 106 auf die im Speichersystem 102 gespeicherten Host-Daten zu, indem er der Steuerung 104 eine logische Adresse (z. B. eine logische Blockadresse (LBA)) bereitstellt, die die Steuerung 104 in eine physische Adresse (z. B. eine physische Blockadresse (PBA)) verwandelt. Die Steuerung 104 greift auf die Daten oder einen bestimmten Speicherort zu, der der PBA zugeordnet ist, und erleichtert das Übertragen von Daten zwischen dem Speichersystem 102 und dem Host 106. In einer oder mehreren Ausführungsformen, in denen das Speichersystem 102 einen Flash-Speicher einschließt, formatiert die Steuerung 104 den Flash-Speicher, um sicherzustellen, dass der Speicher ordnungsgemäß funktioniert, legt fehlerhafte Flash-Speicherzellen fest und weist Ersatzzellen als Ersatz für in Zukunft ausfallende Zellen oder zum Speichern von Firmware für den Betrieb der Flash-Speicher-Steuerung (z. B. Steuerung 104) zu. Somit kann die Steuerung 104 beliebige von verschiedenen Speicherverwaltungsfunktionen ausführen wie Wear-Leveling (z. B. Verteilen von Schreibvorgängen zur Verlängerung der Lebensdauer der Speicherblöcke), Speicherbereinigung (z. B. Verschieben gültiger Datenseiten in einen neuen Block und Löschen des zuvor verwendeten Blocks) und Fehlererkennung und -korrektur (z. B. Lesefehlerbehandlung).
  • Wie vorstehend erörtert, können wiederholte Einschaltzyklen einer SSD innerhalb eines kurzen Zeitraums Probleme verursachen, die aus unzureichender Zeit zum Ausführen erforderlicher Richtlinien resultieren.
  • In bestimmten Situationen liest die Plattform bei jedem Einschalten eines Speichersystems denselben LBA-Ort. Dies bedeutet, dass bezüglich desselben Laufwerks beim Einschalten des Systems wiederholt auf denselben physischen Ort zugegriffen wird. Ein dadurch verursachtes Problem besteht darin, dass bei wiederholten Einschaltzyklen innerhalb kurzer Zeit, zum Beispiel bei Tausenden von Einschaltzyklen und Kaltstartzyklen von nur 1 s pro Einschaltzyklus, die Zeit zwischen den Einschaltzyklen nicht ausreicht, um alle durch den intensiven Lesevorgang verursachten Probleme an der LBA zu beheben. Mit anderen Worten, es bleibt nicht genügend Zeit, um die bestehende Gegenmaßnahme, das so genannte Read-Scrub, durchzuführen, bei dem ein Scan zum Auffinden und Korrigieren von Bitfehlern durchgeführt wird, um die betroffenen Daten zu behandeln, bevor sie einen Ausfall verursachen. Ein Read-Scrub-Prozess schließt einen Lesescan ein, während dem ein Speicherlaufwerk selbst einen Scan zum Bestimmen von Bitfehlerorten durchführt. Wenn während eines Lesescans festgestellt wird, dass an einem Ort eine hohe Bitfehlerrate (Bit Error Rate, BER) vorliegt, wird bestimmt, die Daten von dem Ort mit hoher BER zu verschieben.
  • Doch bei Geschwindigkeiten von einer Sekunde pro Arbeitszyklus bleibt nicht genügend Zeit für einen Read-Scrub, sei dies zum Durchführen des Read-Scrub oder zum Abdecken der wiederholt adressierten LBA.
  • Identifizieren lesebedinater Fehler im Hinblick auf wiederholte Einschaltzyklus-Lesemuster.
  • In einem oder mehreren Ausführungsbeispielen wird ein intelligenter Lesemuster-Erkennungsalgorithmus verwendet, um wiederholte, sehr schnelle Einschaltzyklus-Lesemuster zu identifizieren und zu adressieren, und bewirkt somit Datenschutz über die Daten hinaus, die durch Verwendung von Read-Scrub-Operationen geschützt sind.
  • Eine statistische Analyse, wo das Laufwerk gelesen wird, und eine Funktion zum Bestimmen, wie viele Zugriffe erfolgt sind und ob somit ein besonders intensives Read-Scrub in einem bestimmten Bereich erforderlich ist.
  • 3 ist ein Flussdiagramm eines Verfahrens zum Bestätigen eines Einschaltzyklus- und Read-Scrub-Szenarios eines Ausführungsbeispiels.
  • Beim Schreiben in ein Speichersystem wird eine Schreib-, Lese-, Vergleichsoperation (Write, Read, Compare, WRC) durchgeführt (202), um genaues Schreiben der Daten zu bestätigen. WRC schließt Schreiben von Daten in einem festen Datenmuster (202), Lesen an einem bestimmten Ort in dem Datenmuster und Vergleichen der gelesenen Daten mit den Daten, die an dem Ort geschrieben wurden, ein, um zu bestimmen, ob die geschriebenen Daten und die gelesenen Daten identisch sind. Die geschriebenen und gelesenen Daten sollten identisch sein.
  • In dem Ausführungsbeispiel von 3 wird ein Verfahren auf Basis von WRC durchgeführt. Wie gezeigt, wird nach Durchführen von WRC (203) erwartet, dass die geschriebenen Daten korrekt sind. Das Laufwerk wird dann ausgeschaltet (204), und nach einer Zeit, z. B. 1 Sekunde, wird das Laufwerk wieder eingeschaltet (205). Der Ausschaltvorgang (204) und Einschaltvorgang (205) werden eine vorbestimmte Anzahl von Malen n1 wiederholt (206). In diesem Fall kann die vorbestimmte Anzahl n1 100 Mal oder eine andere Anzahl sein, wie Fachleute auf dem Gebiet verstehen würden. Dies ahmt effektiv nach, was passiert, wenn ein Kunde wiederholt ein- und ausschaltet, zum Beispiel mit Einschaltzyklen von nur 1 Sekunde.
  • Wenn der Zyklus aus Ausschalten (204) / Einschalten (205) weniger als n1 Mal durchgeführt wurde (206=NEIN), wird der Zyklus erneut wiederholt. Wenn der Zyklus n1 Mal durchgeführt wurde (206=JA), wird eine bestimmte LBA gelesen (207). Es sei darauf hingewiesen, dass sich während dieses Prozesses von 2 diese spezielle LBA nicht ändert. Anschließend wird der Fehlerbitzählwert (Failure Bit Count, FBC) dieser LBA ermittelt. Wenn festgestellt wird, dass keine nicht korrigierbare Fehlercodekorrektur (UECC) vorliegt (208=NEIN), wird dieser Zyklus von Operationen (204 bis 208) n2 Mal wiederholt (210). In diesem Fall kann n2 1000 oder eine andere Zahl sein, wie Fachleute auf dem Gebiet verstehen würden. Wenn festgestellt wird, dass eine UECC vorliegt, d. h. dass die Daten nicht decodierbar sind und über die Korrektur hinaus fehlerhaft sind (208=JA), bedeutet dies, dass der Ausfall auf einen lesebedingten Fehler zurückzuführen ist, da WRC (203) ein genaues Schreiben der Daten bestätigt hat. In diesem Fall werden die Fehlerstatistiken aufgezeichnet (209). Die Zellen-Vt-Verteilung (CVD) wird aus fehlerhaften LBAs und aus umgebenden Orten erfasst. Grundsätzlich erfasst das System die Vt-Verteilung schrittweise, und der niedrigste Zustand kann einen Höcker zeigen, der den Lesestörungseffekt veranschaulicht, wie in 4 gezeigt.
  • Wie in 4 gezeigt, erfolgt nach einem Löschvorgang ein Programmieren in Zustand A bis G, und wenn ein bestimmter Ort wiederholt gelesen wird, erfolgt eine Lesestörungsanzeige, wie gezeigt.
  • Sobald bestimmt wurde, dass der Gesamtzyklus n2 Mal durchgeführt wurde (210=JA), werden Fehlerstatistiken aufgezeichnet (211).
  • Einschaltzyklus-basiertes Read-Scrub-Verfahren.
  • 5 ist ein Flussdiagramm eines Einschaltzyklus-basierten Read-Scrub-Verfahrens eines Ausführungsbeispiels. Angesichts der Möglichkeit eines Ausfalls aufgrund eines lesebedingten Fehlers, wie in Bezug auf 3 erörtert, kann ein Verfahren aus 5 implementiert werden, um einen solchen Ausfall zu verhindern.
  • Bei diesem Verfahren speichert die SSD zur Übersicht Informationen darüber, wie oft in einem Einschaltzyklus auf eine LBA zugegriffen wird. Wenn eine vorbestimmte Anzahl von Malen, z. B. 1000 Mal, auf eine bestimmte LBA zugegriffen wurde, wird eine Duplikatkopie der LBA und eines Adressbereichs, der die LBAs umgibt, in einem neuen „Backup-Block“ erstellt. Anschließend wird, wenn auf die ursprüngliche LBA zugegriffen werden soll, tatsächlich das Backup gelesen, wodurch die ursprünglichen LBA-Daten vor wiederholtem Lesezugriff „geschützt“ werden.
  • Bei einem Einschaltvorgang zu Beginn eines Einschaltzyklus greift eine Plattform (z. B. Personal Computer) ein erstes Mal für BiOS-Zwecke (Built in Operation System) oder Bot-Zwecke auf die SSD zu und identifiziert zunächst eine bestimmte logische Blockadresse (LBA), die gelesen werden soll. Zu diesem Zeitpunkt ist die SSD in der Lage, die LBA zu identifizieren, die das System zu lesen versucht. Im Laufwerk ist ein Zähler eingebaut, der angibt, wie oft auf die jeweilige LBA bereits zugegriffen wurde.
  • Wenn auf das Laufwerk zugegriffen wird, wird somit bestimmt, ob die LBA zuvor gelesen wurde, und wenn ja, ob öfter als eine vorbestimmte Schwellenanzahl n3 (302) auf die LBA zugegriffen wurde. Der vorbestimmte Schwellenwert n3 kann zum Beispiel 1000 sein oder eine andere Zahl, wie Fachleute auf dem Gebiet verstehen würden.
  • Wenn festgestellt wird, dass der LBA-Zugriffszählwert den Schwellenwert n3 nicht erreicht hat (302=NEIN), fährt das Laufwerk fort und liest die LBA wie ursprünglich gespeichert (303). Das Laufwerk zeichnet die LBA, auf die zugegriffen wurde, und ihre zugehörige physische Blockadresse (PBA) (304) auf, und es wird festgestellt, ob auf die LBA, auf die zugegriffen wurde, bereits beim Einschalten zugegriffen wurde (305). Wenn zuvor nicht auf die LBA zugegriffen wurde (305=NEIN), wird ein Zähler zunächst auf 1 gesetzt (306), und das Laufwerk fährt mit anderen Systemoperationen fort (310), einschließlich einer Read-Scrub-Operation, ohne jedoch darauf beschränkt zu sein. Nach den anderen Operationen werden die LBA-Zähler- und Blockinformation geleert (311) und das Laufwerk ausgeschaltet (312).
  • Wenn zuvor auf die LBA zugegriffen wurde (305=JA), wird der Zähler um einen Zählwert inkrementiert (307), und es wird festgestellt, ob der inkrementierte Zähler den vorbestimmten Schwellenwert n3 (308) erreicht hat. Wenn der Zähler den vorbestimmten Schwellenwert n3 nicht erreicht hat (308=NEIN), fährt das Laufwerk mit anderen Systemoperationen fort (310) und leert schließlich die LBA-Zähler- und Blockinformationen (311) und schaltet aus (312).
  • Wenn der Zähler den vorbestimmten Schwellenwert n3 erreicht hat (308=JA), wird eine Kopie der Daten an der PBA, die der LBA zugeordnet ist, sowie der Daten an benachbarten PBA in einen neuen Backup-Block geschrieben. Die benachbarten PBA können eine oder mehrere Wortleitungen und/oder Zeichenketten einschließen, die an die ursprünglich identifizierte PBA angrenzen, die der LBA zugeordnet ist. Der neue Backup-Block kann ein neuer SLC-Block sein, der eine schnelle Programmiergeschwindigkeit aufweist, oder ein neuer Block, wenn die Programmierzeit nicht kritisch ist. Die ursprünglichen Daten sind weiterhin gültig, und für die neuen Blöcke wird aufgrund des Zeitaufwands zur Behandlung der neuen XOR-Parität keine neue XOR-Parität erstellt. Wenn in einem Szenario mit schnellem Einschaltzyklus Zeit zur Verfügung steht, kann die neue XOR-Behandlung durchgeführt werden.
  • Wenn das Laufwerk wieder eingeschaltet wird und erneut auf die gleiche LBA zugegriffen werden soll, wird festgestellt, dass der LBA-Zähler den Schwellenwert erreicht hat (302=JA). Dann wird anstatt auf die ursprüngliche LBA auf den duplizierten SLC-, TLC- oder QLC-Backup-Block zugegriffen (309), und jeder weitere LBA-Zugriff wird auf das Backup verlagert. Die Daten können korrekt aus dem neuen SLC-, TLC- oder QLC-Block gelesen werden, da es sich um aktualisierte, nicht gestörte Daten handelt. Die ursprünglichen Daten bei der ursprünglichen PBA sind weiterhin gültig. So können bei Ausfall des neuen Backup-Blocks, zum Beispiel weil dafür keine XOR-Parität gebildet ist, die ursprünglichen Daten weiterhin von der ursprünglichen PBA gelesen werden. In einem solchen Fall kann ein neues Duplikat der ursprünglichen Daten erstellt werden.
  • Wenn eine Möglichkeit für eine Hintergrundoperation (310) besteht, kann das System ein formales Read-Scrub auf den ursprünglichen PBAs ausführen und eine Read-Scrub-Verschiebung vornehmen, um die Daten bei Bedarf zu aktualisieren, was ein Verschieben auf Blockebene erfordern kann, auch wenn nur ein Bruchteil des Blocks gefährdet ist. In diesem Fall kann der SLC-Block geleert werden.
  • Host-seitige Verminderung lesebedingter Fehler.
  • In einem anderen Ausführungsbeispiel kann zusätzlich zu den Operationen der Ausführungsform von 5 auch ein Host angewiesen werden, Schritte zu unternehmen, um Probleme im Zusammenhang mit dem Lesen derselben LBA bei wiederholtem Einschalten zu mindern. Genauer gesagt, kann ein Host angewiesen werden, dass der BiOS-Bootsektor aktualisiert werden muss und/oder dass eine BiOS-Aktualisierung durchzuführen ist, um die LBA-Daten zu verschieben und neue LBAs für zukünftige BiOS-Operationen zuzuweisen, um Datenbeschädigungen zu vermeiden. Diese Operationen in Bezug auf den Host können in Verbindung mit oder getrennt von den Operationen des Ausführungsbeispiels aus 5 durchgeführt werden.
  • Wenn zum Beispiel bestimmt wird, dass der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist (308, JA), kann der Host angewiesen werden, den BIOS-Bootsektor zu aktualisieren und/oder eine BIOS-Aktualisierung durchzuführen, um die Daten zu verschieben.
  • System
  • 6 ist ein Blockdiagramm eines NAND-Systems mit einem Schaltlogikmodul 400, das die Operationen von 3 und 5 ausführt, wie vorstehend erörtert. Das Schaltlogikmodul schließt eine anwendungsspezifische integrierte Schaltung (ASIC), die die Steueroperationen vornimmt und zugehörige Firmware ausführt; eine Paritätsprüfung geringer Dichte (LDPC) zur Fehlerdecodierung; Direktzugriffsspeicher (RAM) und Analog-Top-Schaltlogik ein. Obwohl ASIC, IDPC, RAM und Analog-Top-Schaltlogik als ein einziges Modul 400 dargestellt sind, ist die veranschaulichte Architektur nicht als einschränkend zu verstehen. Zum Beispiel können ASIC, IDPC, RAM und Analog-Top-Schaltlogik auch separat angeordnet und über einen oder mehrere Busse verbunden sein. Wie hierin verwendet, kann der Begriff Modul eine verpackte funktionelle Hardwareeinheit, die zur Verwendung mit anderen Komponenten konzipiert ist, einen Satz von Anweisungen, die von einer Steuerung (z. B. einem Software oder Firmware ausführenden Prozessor) auszuführen sind, Verarbeitungsschaltlogik, die eingerichtet ist, um eine bestimmte Funktion durchzuführen, und eine abgeschlossene Hardware- oder Softwarekomponente, die Schnittstellen zu einem größeren System aufweist, einschließen.
  • Wie oben erörtert, bleibt bei wiederholten Einschaltvorgängen eines Speichersystems innerhalb eines kurzen Zeitraums wahrscheinlich nicht genügend Zeit zum Implementieren notwendiger Richtlinien. Somit stellt ein Ausführungsbeispiel einen Satz von Boot-Richtlinien für die SSD bereit, die vorsehen: spezielle Handhabung der LBAs, auf die der Host anfänglich zugreift; spezielle Handhabung der zuletzt geschriebenen LBAs beim sicheren Herunterfahren, Verfolgung von Richtlinieneinbindung, Beschleunigung von Richtlinien basierend auf Einbindung und Drosselung, um Richtlinieneinbindung zu ermöglichen und/oder zu erzwingen. Hierin beschriebene Lösungen können in Kombination miteinander oder einzeln verwendet werden.
  • Verfolgung und Analyse des Boot-Leistungsverhaltens können einschließen: Notieren eines Boot-Tokens; Notieren der zuletzt geschriebenen LBA; Notieren der zuerst gelesenen LBA; Vergleichen der Überlappung zwischen den zuletzt geschriebenen LBAs und den zuerst gelesenen LBAs, um zu bestimmen, was für zukünftige Boot-Vorgänge zwischengespeichert werden sollte; Vergleichen der zuerst gelesenen LBAs von einem bestimmten Boot-Vorgang mit denen vorheriger Boot-Vorgänge, um zu bestimmen, was in einem Cache verbleiben und was besser verschoben werden sollte; Betrachten einer Überlappung von LBAs, auf die zugegriffen wird, um Priorität für das Zwischenspeichern zu ermöglichen, je nachdem, wie häufig eine LBA adressiert wird; Notieren eines Betriebszeit-Tokens für frühe Boot-Zeiten (z. B. Ablegen eines Token pro 100 ms), um ein Erfassen der Betriebszeit bei nachfolgenden Boot-Vorgängen zu ermöglichen; Notieren des Beginns von Speicherbereinigung, Read-Scrub, Lesestörung, Wear-Leveling und anderer NAND-Richtlinien durch bestimmte Token, damit der Fortschritt von NAND-Richtlinien seit jedem Boot-Vorgang angezeigt werden kann; Notieren von Lese- und Schreib-Token als separat kann für Host-Hintergrundaktivität von Vorteil sein; Vergleichen von NAND-Richtlinien-Aktionen durch Zählen von Richtlinien-, Zeit- und Boot-Token-Metriken; und Ablegen eines Entwarnungstoken zur Angabe, dass das Laufwerk nach dem Booten in den stationären Betrieb übergegangen ist.
  • Solche Token mögen teuer erscheinen, können aber sehr vorteilhaft sein. Token lösen Schreibvorgänge aus, was die Wahrscheinlichkeit von Richtlinienproblemen durch geringe Schreibgeschwindigkeiten verringert. Schreibvorgänge erzwingen zum Beispiel Speicherbereinigung, verringern partielle Blockfälle und kompensieren unausgewogene Lese-Workloads. Token werden auch nur in der Bootzeit abgelegt. Nach einem vorbestimmten Zeitraum werden die Token nicht mehr abgelegt, so dass je nach Richtlinien nur wenige MB an Token pro Boot-Vorgang abgelegt werden können. Token werden auch durch Host-Aktivität wie Einschaltzyklus, Lesen/Schreiben und dergleichen angesteuert, so dass sie an einen Host-Schreibort gelangen, aber nicht bereinigt werden müssen. Zusätzlich werden viele Token zum Checkpointing verwendet. Bei einem Laufwerk mit Hold-up-Caps könnten Token auf die zusammenfassenden Informationen jedes Boot-Vorgangs reduziert werden.
  • Vielen Laufwerken sind SLC-Caches für Host-Schreibvorgänge in Anwendungen mit Burst-Workloads zugeordnet. Diese Caches können auch zum Implementieren von Boot-Leistungs-Richtlinien verwendet werden. Gleichermaßen verfügen Steuerungen üblicherweise über SRAM-Caches, die zum Beschleunigen der Boot-Leistung verwendet werden können.
  • Um Boot-Caching zu implementieren, könnte eine Überprüfung früherer Boot-Informationen verwendet werden, um einen wahrscheinlichen Ausblick auf den aktuellen Boot-Vorgang zu geben, so dass die LBAs, die beim vorherigen Booten zuerst gelesen wurden, vorab in die Steuerung geladen und in den SLC geschrieben werden könnten, wenn sie dort nicht bereits vorhanden waren. Die Reihenfolge des Zugriffs auf die LBAs könnte auch im Hinblick auf Fälle beachtet werden, bei denen der Speicher der Steuerung im Verhältnis zur Boot-Anforderung sehr begrenzt ist. Dies würde die Wiedergabe von Daten in der Lesereihenfolge des vorherigen Boot-Vorgangs ermöglichen. Bei dieser Verfolgung und Wiedergabe könnte besonderes auf geringere Rückläufe geachtet werden. Zum Beispiel könnte eine Verfolgung und Wiedergabe über 2 Sekunden oder 100 MB hinaus keinen zusätzlichen Vorteil bei Cache-Treffern ergeben.
  • Boot-bezogene Daten könnten im SLC-Cache verbleiben und würden nicht zum Falten herangezogen werden, obwohl nicht gelesene Daten natürlich gefaltet werden könnten. Da die Daten während der gesamten Zyklen bestehen bleiben, könnten sie gleichmäßiger im NAND verteilt werden, um die Leistung weiter zu verstärken. Zum Beispiel könnten Daten in der Reihenfolge geschrieben werden, in der sie gelesen werden, um ein optimales Abrufen der Daten zu ermöglichen.
  • Da der nichtflüchtige Cache SLC wäre, würde dies die Lesestörungsleistung inhärent erhöhen.
  • Beim Wiedergeben der vorherigen Daten und beim Zwischenspeichern könnten die Daten ungeachtet der Host-Verwendung neu geschrieben werden, um die Blöcke zyklisch zu durchlaufen.
  • Es versteht sich, dass die hierin beschriebenen Ausführungsbeispiele nur in einem beschreibenden Sinn und nicht zu Zwecken der Einschränkung betrachtet werden können. Beschreibungen von Merkmalen oder Gesichtspunkten in jedem Ausführungsbeispiel können als für andere ähnliche Merkmale oder Gesichtspunkte in anderen Ausführungsbeispielen verfügbar betrachtet werden.
  • Während Ausführungsbeispiele unter Bezugnahme auf die Figuren beschrieben wurden, werden Fachleute auf dem Gebiet verstehen, dass verschiedene Änderungen in Form und Details darin vorgenommen werden können, ohne vom Geist und Schutzumfang der folgenden Patentansprüche abzuweichen.

Claims (21)

  1. Verfahren zum Identifizieren einer Lesestörung einer Speichervorrichtung, wobei das Verfahren aufweist: Durchführen eines Einschaltvorgangs der Speichervorrichtung; Bestimmen eines Einschaltzählwerts, bei dem es sich darum handelt, wie oft die Speichervorrichtung seit dem Schreiben von Daten eingeschaltet wurde; wenn der Einschaltzählwert gleich oder größer als eine erste vorbestimmte Anzahl ist, dann Bestimmen, ob ein nicht korrigierbarer Fehler vorliegt; und wenn ein nicht korrigierbarer Fehler vorliegt, dann Aufzeichnen von Fehlerstatistiken und Identifizieren einer Lesestörung am Ort des nicht korrigierbaren Fehlers.
  2. Verfahren gemäß Anspruch 1, wobei der Einschaltvorgang der Speichervorrichtung aufweist: Schreiben in die Speichervorrichtung; Durchführen einer Schreib-, Lese-, Vergleichsoperation; Ausschalten der Speichervorrichtung; und Einschalten der Speichervorrichtung.
  3. Verfahren gemäß Anspruch 1, weiterhin aufweisend: wenn kein nicht korrigierbarer Fehler vorliegt, dann Ausschalten der Speichervorrichtung und Wiederholen der Einschalt-, Bestimmungs- und Aufzeichnungsoperation.
  4. Verfahren gemäß 3, wobei der Einschaltvorgang der Speichervorrichtung aufweist: Schreiben in die Speichervorrichtung; Durchführen einer Schreib-, Lese-, Vergleichsoperation; Ausschalten der Speichervorrichtung; und Einschalten der Speichervorrichtung.
  5. Einschaltzyklus-basiertes Read-Scrub-Verfahren einer Speichervorrichtung, wobei das Verfahren aufweist: Einschalten einer Speichervorrichtung und Identifizieren einer ursprünglichen logischen Blockadresse (LBA), die gelesen werden soll; Bestimmen, ob ein LBA-Zugriffszählwert größer oder gleich einem vorbestimmten Zählwert ist; und nach dem Bestimmen, dass der LBA-Zugriffszählwert kleiner als der vorbestimmte Zählwert ist: Lesen der ursprünglichen LBA und Inkrementieren eines LBA-Zugriffszählwerts.
  6. Verfahren gemäß Anspruch 5, weiterhin aufweisend: nach dem Bestimmen, dass der LBA-Zugriffszählwert größer als die vorbestimmte Menge ist, Lesen von Backup-Daten, die ein Duplikat der Daten aufweisen, die in der ursprünglichen LBA gespeichert sind.
  7. Verfahren gemäß Anspruch 6, weiterhin aufweisend: Leeren des LBA-Zählers; und Ausschalten der Speichervorrichtung.
  8. Verfahren gemäß Anspruch 6, weiterhin aufweisend: Durchführen einer Backup-Operation, die eine Read-Scrub-Operation an einer physischen Blockadresse (PBA) aufweist, die der ursprünglichen LBA entspricht.
  9. Verfahren gemäß Anspruch 5, weiterhin aufweisend: Bestimmen, ob der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist; und nach dem Bestimmen, dass der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist, Duplizieren der Daten der ursprünglichen LBA und Speichern der Duplikatdaten als Backup-Daten.
  10. Verfahren gemäß Anspruch 9, wobei das Speichern der Duplikatdaten als Backup-Daten das Speichern der Duplikatdaten in einem einstufigen Zellenblock (Single-Level Cell, SLC), einem dreistufigen Zellenblock (Triple-Level Cell, TLC) und einem vierstufigen Zellenblock (Quad-Level Cell, QLC) aufweist.
  11. Verfahren gemäß Anspruch 9, wobei das Speichern der Duplikatdaten Duplizieren von Daten an einer oder mehreren physischen Blockadressen (PBAs), die die ursprüngliche LBA umgeben, und Speichern der Duplikatdaten der einen oder mehreren PBAs als Backup-Daten aufweist.
  12. Verfahren gemäß Anspruch 9, weiterhin aufweisend: Durchführen einer Backup-Operation, die eine Read-Scrub-Operation an einer physischen Blockadresse (PBA) aufweist, die der ursprünglichen LBA entspricht.
  13. Verfahren gemäß Anspruch 12, weiterhin aufweisend: Leeren der LBA-Zähler- und Blockinformationen; und Ausschalten der Speichervorrichtung.
  14. Nichtflüchtiges Speichersystem, aufweisend: eine Speichersteuerung, aufweisend einen ersten Port, der dafür eingerichtet ist, mit einer Hostvorrichtung gekoppelt zu werden, und einen zweiten Port, der dafür eingerichtet ist, mit einem Speicherarray gekoppelt zu werden; wobei die Speichersteuerung eingerichtet ist zum: Einschalten des Speicherarrays bei Steuerung von der Hostvorrichtung Identifizieren einer ursprünglichen logischen Blockadresse (LBA) des Speicherarrays, die gelesen werden soll; Bestimmen, ob ein LBA-Zugriffszählwert größer oder gleich einem vorbestimmten Zählwert ist; nach dem Bestimmen, dass der LBA-Zugriffszählwert kleiner als der vorbestimmte Zählwert ist: Lesen der ursprünglichen LBA und Inkrementieren eines LBA-Zugriffszählwerts.
  15. System gemäß Anspruch 14, wobei die Speichersteuerung weiterhin eingerichtet ist zum: nach dem Bestimmen, dass der LBA-Zugriffszählwert größer als die vorbestimmte Menge ist, Lesen von Backup-Daten, die ein Duplikat von Daten aufweisen, die in der ursprünglichen LBA gespeichert sind.
  16. System gemäß Anspruch 15, wobei die Speichersteuerung weiterhin eingerichtet ist zum: Durchführen einer Backup-Operation, die eine Read-Scrub-Operation an einer physischen Blockadresse (PBA) aufweist, die der ursprünglichen LBA entspricht.
  17. System gemäß Anspruch 16, wobei die Speichersteuerung weiterhin eingerichtet ist zum: Leeren des LBA-Zählers; und Ausschalten der Speichervorrichtung.
  18. System gemäß Anspruch 14, wobei die Speichersteuerung weiterhin eingerichtet ist zum: Bestimmen, ob der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist; und nach dem Bestimmen, dass der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist, Duplizieren der Daten der ursprünglichen LBA und Speichern der Duplikatdaten als Backup-Daten.
  19. System gemäß Anspruch 18, wobei die Speichersteuerung eingerichtet ist zum Speichern der Duplikatdaten als Backup-Daten zu speichern, indem die Duplikatdaten in einem von einem einstufigen Zellenblock (Single-Level Cell, SLC), einem dreistufigen Zellenblock (Triple-Level Cell, TLC) und einem vierstufigen Zellenblock (Quad-Level Cell, QLC) gespeichert werden.
  20. System gemäß Anspruch 18, wobei die Speichersteuerung weiterhin eingerichtet ist zum Duplizieren von Daten an einer oder mehreren physischen Blockadressen (PBAs), die die ursprüngliche LBA umgeben, und Speichern der Duplikatdaten der einen oder mehreren PBAs als Backup-Daten.
  21. Verfahren zum Behandeln von lesebedingten Fehlern, wobei das Verfahren aufweist: Einschalten einer Speichervorrichtung und Identifizieren einer ursprünglichen logischen Blockadresse (LBA), die gelesen werden soll; Bestimmen, ob ein LBA-Zugriffszählwert größer oder gleich einem vorbestimmten Zählwert ist; nach dem Bestimmen, dass der LBA-Zugriffszählwert kleiner als der vorbestimmte Zählwert ist: Lesen der ursprünglichen LBA und Inkrementieren eines LBA-Zugriffszählers um eins. Bestimmen, ob der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist; und nach dem Bestimmen, dass der inkrementierte LBA-Zugriffszählwert größer als der vorbestimmte Zählwert ist, Anweisen eines Hosts, mindestens eines von Folgendem durchzuführen: eine Aktualisierung eines BIOS-Bootsektors (Basic Input/Output System); eine BIOS-Aktualisierung.
DE112020000143.1T 2019-11-20 2020-03-24 Ssd-system, das einschaltzyklus-basierten read-scrub verwendet Pending DE112020000143T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/689,693 2019-11-20
US16/689,693 US20210149800A1 (en) 2019-11-20 2019-11-20 Ssd system using power-cycle based read scrub
PCT/US2020/024413 WO2021101581A1 (en) 2019-11-20 2020-03-24 Ssd system using power-cycle based read scrub

Publications (1)

Publication Number Publication Date
DE112020000143T5 true DE112020000143T5 (de) 2021-11-11

Family

ID=75909469

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000143.1T Pending DE112020000143T5 (de) 2019-11-20 2020-03-24 Ssd-system, das einschaltzyklus-basierten read-scrub verwendet

Country Status (3)

Country Link
US (1) US20210149800A1 (de)
DE (1) DE112020000143T5 (de)
WO (1) WO2021101581A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210074849A (ko) * 2019-12-12 2021-06-22 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
US11550733B2 (en) * 2020-07-01 2023-01-10 Arm Limited Method, system and circuit for managing a secure memory partition
US11847335B2 (en) * 2021-03-25 2023-12-19 Micron Technology, Inc. Latent read disturb mitigation in memory devices
US11626182B2 (en) 2021-08-04 2023-04-11 Micron Technology, Inc. Selective power-on scrub of memory units
US11966752B2 (en) * 2021-12-22 2024-04-23 Micron Technology, Inc. Data caching for fast system boot-up
TWI810095B (zh) * 2022-10-18 2023-07-21 慧榮科技股份有限公司 資料儲存裝置與寫入緩存器管理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873885B1 (en) * 2004-01-20 2011-01-18 Super Talent Electronics, Inc. SSD test systems and methods
WO2013027642A1 (en) * 2011-08-19 2013-02-28 Kabushiki Kaisha Toshiba Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device
US8966343B2 (en) * 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8930778B2 (en) * 2012-11-15 2015-01-06 Seagate Technology Llc Read disturb effect determination
US9230689B2 (en) * 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories

Also Published As

Publication number Publication date
WO2021101581A1 (en) 2021-05-27
US20210149800A1 (en) 2021-05-20

Similar Documents

Publication Publication Date Title
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet
DE102019123709A1 (de) Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102018115163A1 (de) Routing von datenblöcken während einer thermodrosselung
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE112016004629T5 (de) Datencodiertechniken für eine Vorrichtung
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE102017128940A1 (de) System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102017128941A1 (de) Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102021107443A1 (de) Dynamische speichersteuerung und verfahren zur verwendung damit
DE102021107436A1 (de) Speichersystem und Verfahren zum direkten Quad-Level-Cell-Programmieren (QLC-Programmieren)
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MEWBURN ELLIS LLP, DE

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE