DE112019005506T5 - Systeme und verfahren zum finden einer letzten guten seite in einem offenen nand-block - Google Patents

Systeme und verfahren zum finden einer letzten guten seite in einem offenen nand-block Download PDF

Info

Publication number
DE112019005506T5
DE112019005506T5 DE112019005506.2T DE112019005506T DE112019005506T5 DE 112019005506 T5 DE112019005506 T5 DE 112019005506T5 DE 112019005506 T DE112019005506 T DE 112019005506T DE 112019005506 T5 DE112019005506 T5 DE 112019005506T5
Authority
DE
Germany
Prior art keywords
page
memory
writes
queue
controller
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
DE112019005506.2T
Other languages
English (en)
Inventor
Tomer Eliash
Evgeny Mekhanik
David Rozman
Yair Chasdai
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 DE112019005506T5 publication Critical patent/DE112019005506T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

Ein Verfahren zum Finden einer letzten guten Seite in einem Speichersystem schließt das Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem Speicherblock des Speichersystems ein. Das Verfahren schließt auch das Bestimmen ein, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt. Das Verfahren schließt auch das Bestimmen ein, basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, ob eine zweite Seite in dem Speicherblock leer ist. Das Verfahren schließt auch das Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite ein.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Anmeldung beansprucht die Priorität und den Nutzen der nicht vorläufigen US-Anmeldung Seriennummer 16/398,591 , eingereicht am 30. April 2019.
  • TECHNISCHES GEBIET
  • Diese Offenbarung bezieht sich auf Speichersysteme und insbesondere auf Verfahren und Systeme zum Finden einer letzten guten Seite in einem offenen NAND-Block.
  • HINTERGRUND
  • Nichtflüchtige Speichersysteme sind eine Art von Speicher, der gespeicherte Informationen behält, ohne dass eine externe Stromquelle erforderlich ist. Ein nichtflüchtiger Speicher wird weithin in verschiedenen elektronischen Vorrichtungen und in unabhängigen Speichervorrichtungen verwendet. Zum Beispiel ist ein nichtflüchtiger Speicher in Laptops, digitalen Audiowiedergabegeräten, Digitalkameras, Smartphones, Videospielen, wissenschaftlichen Instrumenten, Industrierobotern, medizinischer Elektronik, Festkörperlaufwerken, USB-Laufwerken, Speicherkarten und dergleichen zu finden. Ein nichtflüchtiger Speicher kann elektronisch programmiert/umprogrammiert und gelöscht werden.
  • In der Regel schließt ein Speichersystem einen oder mehrere Speicherchips ein. Jeder des einen oder der mehreren Speicherchips schließt eine oder mehrere Speicherebenen ein, die jeweils aus einer Vielzahl von Speicherblöcken bestehen. Während des Programmierens des Speichersystems führt eine Steuerung des Speichersystems Vorgänge (z. B. Lesevorgänge, Schreibvorgänge, andere geeignete Vorgänge oder eine Kombination davon) auf Seiten eines Speicherblocks gemäß Befehlen aus, die von der Steuerung empfangen werden. Wenn die Steuerung alle Vorgänge für den Speicherblock abschließt, speichert die Steuerung Informationen im persistenten Speicher, die angeben, dass das Programmieren des Speicherblocks abgeschlossen ist. Die Steuerung kann dann mit dem Ausführen von Vorgängen auf Seiten eines anderen Speicherblocks des Speichersystems beginnen und kann mit dem Ausführen von Vorgängen auf Seiten jedes Speicherblocks des Speichersystems fortfahren, bis das Programmieren des Speichersystems abgeschlossen ist.
  • Während des Programmierens kann die Stromversorgung des Speichersystems verloren gehen, was das Programmieren des Speichersystems unterbrechen kann. Wenn die Stromversorgung des Speichersystems wiederhergestellt ist, kann die Steuerung eine letzte gute Seite des Speichersystems finden. Die letzte gute Seite schließt eine letzte Seite ein, die von der Steuerung geschrieben wurde, bevor die Stromversorgung des Speichersystems verloren ging. Die Steuerung kann die im persistenten Speicher gespeicherten Informationen verwenden, um den Speicherblock zu identifizieren, der programmiert wurde, bevor die Stromversorgung des Speichersystems verloren ging. In der Regel führt die Steuerung eine binäre Suche auf dem Speicherblock aus, der programmiert wurde, bevor die Stromversorgung des Speichersystems verloren ging, um die letzte gute Seite des Speicherblocks zu finden.
  • KURZDARSTELLUNG
  • Diese Offenbarung bezieht sich allgemein auf Speicherverwaltungssysteme und -verfahren.
  • Ein Gesichtspunkt der offenbarten Ausführungsformen ist ein Verfahren zum Finden einer letzten guten Seite in einem Speichersystem. Das Verfahren schließt das Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem Speicherblock des Speichersystems ein. Das Verfahren schließt auch das Bestimmen ein, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt. Das Verfahren schließt auch das Bestimmen ein, basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, ob eine zweite Seite in dem Speicherblock leer ist. Das Verfahren schließt auch das Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite ein.
  • Ein weiterer Gesichtspunkt der offenbarten Ausführungsformen ist ein Speichersystem, das einen nichtflüchtigen Speicher mit einem Array von Speicherblöcken und eine Steuerung in Kommunikation mit den Speicherblöcken einschließt. Die Steuerung ist eingerichtet zum: Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem Speicherblock der Speicherblöcke Bestimmen, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt; basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, Bestimmen, ob eine zweite Seite in dem Speicherblock leer ist; und Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite.
  • Ein weiterer Gesichtspunkt der offenbarten Ausführungsformen ist ein Verfahren zum Finden einer letzten guten Seite für jeden Speicherchip in einem Speichersystem mit mehreren Speicherchips. Das Verfahren schließt das Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem ersten Speicherblock eines ersten Speicherchips ein. Das Verfahren schließt auch das Bestimmen ein, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt. Das Verfahren schließt das Bestimmen ein, basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, ob eine zweite Seite in dem ersten Speicherblock des ersten Speicherchips leer ist. Das Verfahren schließt auch das Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, einer letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite ein. Das Verfahren schließt auch das Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite nicht leer ist, der letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips unter Verwendung einer zweiten Anzahl an Schreibvorgängen in einer zweiten Warteschlange auf der zweiten Seite in dem ersten Speicherblock des ersten Speicherchips ein. Das Verfahren schließt auch das Identifizieren einer letzten guten Seite in einem zweiten Speicherblock eines zweiten Speicherchips unter Verwendung der letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips und einer Delta-Seitenanzahl ein.
  • Diese und andere Gesichtspunkte der vorliegenden Offenbarung werden in der folgenden detaillierten Beschreibung der Ausführungsformen, den beigefügten Ansprüchen und den begleitenden Figuren offenbart.
  • Figurenliste
  • Die Offenbarung ist am besten aus der folgenden detaillierten Beschreibung zu verstehen, wenn sie in Verbindung mit den beigefügten Zeichnungen gelesen wird. Es wird betont, dass, gemäß der üblichen Praxis, die verschiedenen Merkmale der Zeichnungen nicht maßstabsgetreu sind. Hingegen können die Maße der verschiedenen Merkmale aus Gründen der Verständlichkeit absichtlich vergrößert oder verkleinert sein.
    • 1A-1B veranschaulichen allgemein ein Blockdiagramm eines beispielhaften nichtflüchtigen Speichersystems gemäß den Prinzipien der vorliegenden Offenbarung.
    • 2A veranschaulicht allgemein ein Blockdiagramm von beispielhaften Komponenten einer Steuerung gemäß den Prinzipien der vorliegenden Offenbarung.
    • 2B veranschaulicht allgemein ein Blockdiagramm von beispielhaften Komponenten eines nichtflüchtigen Speicherspeicherungssystems gemäß den Prinzipien der vorliegenden Offenbarung.
    • 3 veranschaulicht allgemein einen Speicherblock gemäß den Prinzipien der vorliegenden Offenbarung.
    • 4 veranschaulicht allgemein eine Vorgangswarteschlange gemäß den Prinzipien der vorliegenden Offenbarung.
    • 5 ist ein Ablaufdiagramm, das ein Verfahren zum Finden der letzten guten Seite gemäß den Prinzipien der vorliegenden Offenbarung veranschaulicht.
    • 6 ist ein Ablaufdiagramm, das ein alternatives Verfahren zum Finden der letzten guten Seite gemäß den Prinzipien der vorliegenden Offenbarung veranschaulicht.
    • 7 ist ein Ablaufdiagramm, das ein alternatives Verfahren zum Finden der letzten guten Seite gemäß den Prinzipien der vorliegenden Offenbarung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende Erörterung richtet sich auf verschiedene Ausführungsformen der Erfindung. Wenngleich eine oder mehrere dieser Ausführungsformen bevorzugt sein können, dürfen die offenbarten Ausführungsformen nicht als den Schutzumfang der Offenbarung, einschließlich der Ansprüche, einschränkend ausgelegt oder anderweitig verwendet werden. Außerdem wird der Fachmann erkennen, dass die folgende Beschreibung breite Anwendung hat, und die Erörterung einer beliebigen Ausführungsform soll nur beispielhaft für diese Ausführungsform sein und soll nicht darauf hindeuten, dass der Schutzumfang der Offenbarung, einschließlich der Ansprüche, auf diese Ausführungsform beschränkt ist.
  • Wie beschrieben, sind nichtflüchtige Speichersysteme eine Art von Speicher, der gespeicherte Informationen behält, ohne dass er eine externe Stromquelle erfordert. Ein nichtflüchtiger Speicher wird weithin in verschiedenen elektronischen Vorrichtungen und in unabhängigen Speichervorrichtungen verwendet. Zum Beispiel ist ein nichtflüchtiger Speicher in Laptops, digitalen Audiowiedergabegeräten, Digitalkameras, Smartphones, Videospielen, wissenschaftlichen Instrumenten, Industrierobotern, medizinischer Elektronik, Festkörperlaufwerken, USB-Laufwerken, Speicherkarten und dergleichen zu finden. Ein nichtflüchtiger Speicher kann elektronisch programmiert/umprogrammiert und gelöscht werden.
  • In der Regel schließt ein Speichersystem einen oder mehrere Speicherchips ein. Zum Beispiel kann das Speichersystem 4 Speicherchips, 8 Speicherchips, 16 Speicherchips, 32 Speicherchips oder eine beliebige geeignete Anzahl an Speicherchips einschließen. Jeder des einen oder der mehreren Speicherchips schließt eine oder mehrere Speicherebenen ein, die jeweils aus einer Vielzahl von Speicherblöcken bestehen. Speicherblöcke jedes des einen oder der mehreren Speicherchips können an dieselbe logische Entität (z. B. einen Metablock) gebunden sein, die zur gleichen oder im Wesentlichen zur gleichen Zeit programmiert, umprogrammiert und/oder gelöscht werden kann.
  • Während des Programmierens des Speichersystems führt eine Steuerung des Speichersystems Vorgänge gemäß Befehlen durch, die von der Steuerung (z. B. von einem Host, der dem Speichersystem zugeordnet ist) auf Seiten eines Speicherblocks empfangen werden. Zum Beispiel kann die Steuerung einen Schreibvorgang auf einer Seite eines ersten Speicherblocks einer ersten Speicherebene eines ersten Speicherchips gemäß den Befehlen ausführen. Die Steuerung kann dann fortfahren, Vorgänge auf nachfolgenden Seiten des ersten Speicherblocks durchzuführen, bis das Programmieren des ersten Speicherblocks abgeschlossen ist. Wenn die Steuerung alle Vorgänge für einen Speicherblock (z. B. den ersten Speicherblock) abschließt, speichert die Steuerung Informationen im persistenten Speicher, die angeben, dass das Programmieren des Speicherblocks abgeschlossen ist. Die Steuerung fährt dann fort, andere Speicherblöcke der ersten Speicherebene und Speicherblöcke jeder Speicherebene des ersten Speicherchips und für jede Speicherebene jedes anderen Speicherchips in dem Speichersystem gemäß den von der Steuerung empfangenen Befehlen zu programmieren.
  • In der Regel kann die Steuerung, um eine hohe Leistung aufrechtzuerhalten und den Umfang des Schreibzugriffs auf das Speichersystem zu reduzieren, eine Speicheradresse der nächsten zu schreibenden Seite in einem Direktzugriffsspeicher (RAM) speichern, der dem Speichersystem zugeordnet ist. Während des Programmierens kann jedoch die Stromversorgung des Speichersystems verloren gehen, was die Steuerung unterbrechen kann, während die Steuerung Vorgänge auf einer Seite eines Speicherblocks (z. B. eines zweiten Speicherblocks) durchführt. Zusätzlich oder alternativ können die im RAM gespeicherten Informationen, wie die Speicheradresse der nächsten zu schreibenden Seite und/oder verschiedene Speicherverwaltungstabellen, verloren gehen. Dementsprechend kann die Steuerung die verloren gegangenen Verwaltungstabellen wiederherstellen und die nächste zu schreibende Seite finden, wenn die Stromversorgung des Speichersystems wiederhergestellt ist. Zum Beispiel kann die Steuerung eine letzte gute Seite des Speichersystems finden, um das Programmieren fortzusetzen (z. B. das Ausführen von Vorgängen gemäß den Befehlen fortzusetzen). Die letzte gute Seite schließt eine letzte Seite ein, die von der Steuerung geschrieben wurde, bevor die Stromversorgung des Speichersystems verloren ging.
  • Die Steuerung kann die im persistenten Speicher gespeicherten Informationen verwenden, um den Speicherblock zu identifizieren, der programmiert wurde, bevor die Stromversorgung des Speichersystems verloren ging. Zum Beispiel speichert die Steuerung, wie beschrieben, Informationen im persistenten Speicher, die angeben, dass das Programmieren eines Speicherblocks abgeschlossen ist. Die Informationen können eine Speicheradresse und/oder andere geeignete Informationen einschließen. Die Steuerung kann die Speicheradresse des letzten zu programmierenden Speicherblocks (z. B. des ersten Speicherblocks) aus dem persistenten Speicher abrufen. Die Steuerung springt dann zu dem Speicherblock, der auf den letzten Speicherblock folgt, der zu programmieren ist (z. B. zu dem zweiten Speicherblock). Das heißt, die Steuerung verwendet die Speicheradresse des letzten zu programmierenden Speicherblocks, um den Speicherblock zu identifizieren, der programmiert wurde, als die Stromversorgung des Speichersystems verloren ging.
  • In der Regel führt die Steuerung eine binäre Suche (z. B. 0(logN)) auf dem Speicherblock (z. B. dem zweiten Speicherblock) durch, der programmiert wurde, bevor die Stromversorgung des Speichersystems verloren ging, um die letzte gute Seite des Speicherblocks zu finden. Zum Beispiel kann die Steuerung bestimmen, ob eine erste Seite mit einer Speicheradresse, die sich an oder nahe einer Mitte der Speicheradressen des zweiten Blocks befindet, leer ist. Wenn die Steuerung bestimmt, dass die erste Seite leer ist (z. B. nicht geschrieben wurde, bevor die Stromversorgung des Speichers verloren ging), bestimmt die Steuerung, ob eine Seite mit einer Speicheradresse, die sich zwischen einer ersten Speicheradresse des zweiten Speicherblocks und der Speicheradresse, die der ersten Seite entspricht, befindet, leer ist. Wenn die Steuerung hingegen bestimmt, dass die erste Seite nicht leer ist (z. B. geschrieben wurde, bevor die Stromversorgung des Speichersystems verloren ging), bestimmt die Steuerung, ob eine Seite mit einer Speicheradresse, die sich zwischen der Speicheradresse, die der ersten Seite entspricht, und der letzten Speicheradresse des zweiten Speicherblocks befindet, leer ist.
  • Die Steuerung fährt auf diese Weise fort, bis die Steuerung die letzte gute Seite in dem zweiten Block findet (z. B. die letzte Seite, die geschrieben wurde, bevor die Stromversorgung des Speichersystems verloren ging). Die Steuerung kann dann fortfahren, Vorgänge gemäß den von der Steuerung empfangenen Befehlen auf der Seite durchzuführen, die der letzten guten Seite, die geschrieben wurde, bevor die Stromversorgung des Speichersystems verloren ging, am nächsten ist (z. B. fährt die Steuerung dort fort, wo die Steuerung aufhörte, bevor die Stromversorgung des Speichersystems verloren ging).
  • Während die Verwendung einer binären Suche zum Finden der letzten guten Seite effektiv sein kann, da die Anzahl an Seiten, Speicherblöcken, Speicherebenen und Speicherchips in Speichersystemen weiter zunimmt, kann die Verwendung einer solchen binären Suche suboptimal sein, was zu einer erhöhten Systemstartzeit beitragen kann. Dementsprechend können Systeme und Verfahren wie die hierin beschriebenen Systeme und Verfahren, die effizient die letzte gute Seite eines Speicherblocks finden, wünschenswert sein. In einigen Ausführungsformen sind die hierin beschriebenen Systeme und Verfahren dazu eingerichtet, Informationen in einem Pager-Kopf einer Seite zu speichern, die von der Steuerung geschrieben wird. Die Informationen können einen Wert einschließen, der eine Anzahl an Schreibvorgängen darstellt, die in einer Warteschlange von Vorgängen verbleiben, die von der Steuerung durchzuführen sind. In einigen Ausführungsformen können die Informationen Fehlererkennungsinformationen, Fehlerkorrekturinformationen und/oder andere geeignete Informationen einschließen.
  • In einigen Ausführungsformen sind die hierin beschriebenen Systeme und Verfahren dazu eingerichtet, im Fall eines unerwarteten Verlusts der Stromversorgung (z. B. nicht ordnungsgemäßes Herunterfahren (UGSD)) des Speichersystems eine letzte gute Seite eines Speicherblocks unter Verwendung der im persistenten Speicher gespeicherten Informationen und der Seitenkopfinformationen zu finden. Zum Beispiel können die hierin beschriebenen Systeme und Verfahren dazu eingerichtet sein, einen Speicherblock zu identifizieren, der unter Verwendung der Informationen im persistenten Speicher programmiert wurde, als die Stromversorgung des Speichersystems verloren ging. Die hierin beschriebenen Systeme und Verfahren können, wie noch beschrieben wird, den Wert verwenden, der die Anzahl an Schreibvorgängen in der Warteschlange darstellt, um nach der letzten guten Seite des Speicherblocks zu suchen. Zum Beispiel können die hierin beschriebenen Systeme und Verfahren die Anzahl an Schreibvorgängen in der Warteschlange auf einer ersten Seite des Speicherblocks bestimmen. Die hierin beschriebenen Systeme und Verfahren können dazu eingerichtet sein, unter Verwendung der Anzahl an Schreibvorgängen in der Warteschlange zu einer zweiten Seite zu springen. Die hierin beschriebenen Systeme und Verfahren können fortfahren, Seiten in dem Speicherblock unter Verwendung einer Anzahl an Schreibvorgängen in der Warteschlange auf jeweiligen Seiten des Speicherblocks zu suchen, bis die Systeme und Verfahren die letzte gute Seite des Speicherblocks finden.
  • In einigen Ausführungsformen kann das Speichersystem eine oder mehrere Speicherebenen einschließen. Die hierin beschriebenen Systeme und Verfahren können eine letzte gute Seite für einen Speicherblock finden, der einer ersten Speicherebene zugeordnet ist, und die letzte gute Seite des der ersten Speicherebene zugeordneten Speicherblocks verwenden, um eine letzte gute Seite in einem anderen Speicherblock zu finden, der einer zweiten Speicherebene zugeordnet ist. Die hierin beschriebenen Systeme und Verfahren können fortfahren, die letzte gute Seite des Speicherblocks der ersten Speicherebene zu verwenden, um nachfolgende letzte gute Seiten für andere Speicherblöcke anderer Speicherebenen zu finden.
  • In einigen Ausführungsformen kann das Speichersystem eine Vielzahl von Speicherchips einschließen. Die hierin beschriebenen Systeme und Verfahren können eine letzte gute Seite für einen Speicherblock finden, der einem ersten Speicherchip zugeordnet ist, und die letzte gute Seite des dem ersten Speicherchip zugeordneten Speicherblocks verwenden, um eine letzte gute Seite in einem anderen Speicherblock zu finden, der einem zweiten Speicherchip zugeordnet ist. Die hierin beschriebenen Systeme und Verfahren können fortfahren, die letzte gute Seite des Speicherblocks des ersten Speicherchips zu verwenden, um nachfolgende letzte gute Seiten für andere Speicherblöcke anderer Speicherchips zu finden. Die hierin beschriebenen Systeme und Verfahren können das Finden der letzten guten Seite für einen Speicherblock verbessern, indem die Anzahl an Schreibvorgängen in der Warteschlange verwendet wird, was unter anderem die Systemstartzeit verbessern kann. Die Beschreibung wendet sich nun einer beispielhaften Computerarchitektur zu, die Speicher gemäß beispielhaften Ausführungsformen benutzt.
  • 1A veranschaulicht ein Blockdiagramm einer beispielhaften Systemarchitektur 100 einschließlich eines nichtflüchtigen Speichers. Insbesondere schließt die beispielhafte Systemarchitektur 100 das Speicherungssystem 102 (das z. B. als ein Speichersystem bezeichnet werden kann), eine Steuerung 104 und einen Host 106 ein. In verschiedenen Ausführungsformen kann der Host 106 eine beliebige Vorrichtung oder ein beliebiges System einschließen, die bzw. das das Speichersystem 102 benutzt. In einigen Ausführungsformen können verschiedene Gesichtspunkte der Steuerung 104 durch den Host 106 implementiert sein, oder der Host 106 kann seine eigene Steuerung (z. B. einen Prozessor) einschließen, der dazu eingerichtet ist, Anweisungen auszuführen, die in dem Speicherungssystem 102 gespeichert sind, und weiterhin kann der Host 106 auf Daten zugreifen, die in dem Speicherungssystem 102 gespeichert sind.
  • Beispiele für den Host 106 schließen Rechenvorrichtungen ein, wie einen Desktop-Computer, einen Rackserver, einen Laptop, ein Smartphone, ein Tablet oder andere geeignete Rechenvorrichtungen. Host 106 kann auch Systeme und Vorrichtungen wie ein Spielsystem, ein digitales Telefon, eine Digitalkamera (z. B. digitale Standbildkameras und digitale Filmkameras), tragbaren Medienspieler, digitalen Fotorahmen, Fernsteuerung, TV-Stick, Smart-Fernsehen und dergleichen einschließen. Des Weiteren kann die Systemarchitektur 100 in einer Speicherkarte wie einer SD (Secure Digital)-Karte oder einer Mikro-SD (Micro Secure Digital)-Karte implementiert sein. In einigen Ausführungsformen ist die Systemarchitektur 100 in dem Host eingebettet, zum Beispiel als ein Festkörperplatten-Laufwerk (SSD-Laufwerk), das in einem Laptop-Computer installiert ist.
  • In Ausführungsformen, in denen die Systemarchitektur 100 innerhalb einer Speicherkarte implementiert ist, kann der Host 106 eine eingebaute Aufnahme für einen oder mehrere Typen von Speicherkarten oder Flash-Laufwerken (z. B. einen Anschluss für einen universellen seriellen Bus (USB-Anschluss) oder einen Speicherkartensteckplatz) einschließen. Zusätzlich oder alternativ kann der Host 106 Adapter einschließen, in die eine Speicherkarte eingesteckt werden kann. Die vorstehenden Beispiele eines Hosts sind nicht als einschränkende Beispiele zu verstehen. Vielmehr kann ein Host 106 jede Art von Vorrichtung, System und Apparat einschließen, die bzw. das. bzw. der auf das Speicherungssystem 102 zugreift.
  • In 1A schließt das Speicherungssystem 102 eine Speichersteuerung und Treiber (z. B. Steuerung 104) ein - wie weiter unten beschrieben wird -, jedoch kann in einigen Ausführungsformen des Speicherungssystems 102 das Speicherungssystem 102 Nur-Speicher-Einheiten einschließen, die stattdessen durch Software gesteuert werden, die von einer Steuerung auf dem Host 106 ausgeführt wird (z. B. ein Prozessor einer Rechenvorrichtung steuert, einschließlich Fehlerbehandlung, des Speicherungssystems 102). Des Weiteren ist das Speicherungssystem 102, obwohl 1A das Speicherungssystem 102 als getrennt von dem Host 106 veranschaulicht, in manchen Ausführungsformen mit dem Host 106 eingebettet, wobei der Speicher, die Steuerung und Treiber auf einem einzigen integrierten Schaltungschip ausgebildet sind.
  • Der Host 106 kann mit dem Speicherungssystem 102 kommunizieren, indem er einen Bus 112 verwendet, der ein beliebiges bekanntes oder später entwickeltes Kommunikationsprotokoll implementiert, das dem Speicherungssystem 102 und dem Host 106 zu kommunizieren ermöglicht. Das Kommunikationsprotokoll kann ein Secure Digital-Protokoll (SD-Protokoll), Memory Stick-Protokoll (MS-Protokoll), USB-Protokoll, Advanced Microcontroller Bus Architecture (AMBA) oder ein anderes geeignetes Kommunikationsprotokoll einschließen.
  • In verschiedenen Ausführungsformen fungiert die Steuerung 104 als eine Schnittstelle zwischen dem Host 106 und dem Speicherungssystem 102. Der Host 102 kann mit der Steuerung 104 über eine Busschnittstelle kommunizieren, die dem Bus 112 zugeordnet ist. Die Steuerung 104 kann einzelne Schaltungskomponenten, Verarbeitungsschaltung (z. B. Logik-Gates und Schalter), einen Prozessor, einen Mikroprozessor, einen Mikrocontroller mit Steuerungssoftware oder ein Field Programmable Gate Array (FPGA) einschließen. Des Weiteren schließt die beispielhafte Steuerung 104 ein computerlesbares Medium ein, das computerlesbaren Programmcode (z. B. Software oder Firmware) speichert, der durch den Prozessor ausführbar ist. In einigen Ausführungsformen ist die Steuerung 104 eine Flash-Speicher-Steuerung. In einigen Ausführungsformen ist die Steuerung 104 ein Prozessor, der in dem Host 106 ausführt.
  • Weiterhin Bezug nehmend auf 1A fungiert die Steuerung 104 gemäß einigen Ausführungsformen als eine Schnittstelle zwischen dem Host 106 und dem Speicherungssystem 102 und verwaltet Daten, die auf dem Speicherungssystem 102 gespeichert sind. Zum Beispiel kann der Host 106 auf im Speicherungssystem 102 gespeicherte Daten zugreifen, indem er der Steuerung 104 über die dem Bus 112 zugehörige Busschnittstelle eine logische Adresse bereitstellt, welche die Steuerung 104 in eine physische Adresse umwandelt. Die Steuerung 104 kann auf Daten und/oder einen bestimmten Speicherort zugreifen, der der physischen Adresse zugeordnet ist, und das Übertragen von Daten zwischen dem Speichersystem 102 und dem Host 106 erleichtern. In einigen Ausführungsformen, in denen das Speicherungssystem 102 einen Flash-Speicher einschließt, formatiert die Steuerung 104 den Flash-Speicher, um die ordnungsgemäße Funktionsweise des Speichers zu gewährleisten, legt schlechte Flash-Speicherzellen fest und weist Ersatzzellen zu, die als Austausch für zukünftige ausgefallene Zellen oder zum Aufbewahren von Firmware für den Betrieb der Steuerung des Flash-Speichers (z. B. der Steuerung 104) verwendet werden.
  • Entsprechend führt die Steuerung 104 verschiedene Speicherverwaltungsfunktionen durch, wie Abnutzungsausgleich (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) sowie Fehlererkennung und -korrektur (z. B. Lesefehlerbehandlung).
  • Weiterhin Bezug nehmend auf 1A schließt das Speicherungssystem 102 den nichtflüchtigen Speicherblock (NVM-Block) 110 ein, der mehrere Speicherchips 110-N - 110-N einschließen kann. In einigen Ausführungsformen definiert der NVM-Block 110 einen physischen Satz von Speicherchips, wie die Speicherchips 110-1 - 110-N. In anderen Ausführungsformen definiert der NVM-Block 110 einen logischen Satz von Speicherchips, wobei der NVM-Block 110 Speicherchips aus mehreren physisch unterschiedlichen Sätzen von Speicherchips einschließt. Die Art und Weise, wie der NVM-Block 110 in 1A definiert ist, ist nicht als einschränkend zu verstehen.
  • Jeder Speicherchip, zum Beispiel Speicherchip 110-1, schließt nichtflüchtige Speicherzellen, wie NAND-Flash-Speicherzellen, NOR-Flash-Speicherzellen oder andere geeignete Speicherzellen ein. Da die Speicherzellen nichtflüchtig sind, behalten die Speicherzellen in dem Speicherungssystem 102 Daten auch dann, wenn es eine Unterbrechung der Stromversorgung der Speicherzellen und/oder des Speicherungssystem 102 gibt. Somit kann das Speicherungssystem 102 leicht transportiert werden, und das Speicherungssystem 102 kann in Speicherkarten und anderen Speichervorrichtungen verwendet werden, die nicht immer an eine Stromversorgung angeschlossen sind.
  • In verschiedenen Ausführungsformen sind die Speicherzellen in dem Speicherchip 110 Festkörperspeicherzellen (z. B. Flash) und sind einmal programmierbar, wenige Male programmierbar oder viele Male programmierbar. Zusätzlich können die Speicherzellen in dem Speicherchip 110 einstufige Zellen (SLC), mehrstufige Zellen (MLC) oder dreistufige Zellen (TLC) einschließen. In einigen Ausführungsformen werden die Speicherzellen planar (z. B. 2D NAND (NOT-AND) Flash) oder gestapelt oder geschichtet (z. B. 3D NAND Flash) hergestellt. Das heißt, ein planarer Flash-Speicher schließt eine einzelne Schicht Speicherzellen ein, während ein gestapelter Flash-Speicher Speicherzellen einschließt, die vertikal in mehreren Schichten gestapelt sind (z. B. als Ebenen bezeichnet).
  • In einigen Ausführungsformen und wie in 1A gezeigt, sind die Steuerung 104 und der NVM-Block 110 durch eine Schnittstelle 114 kommunikativ gekoppelt, die ein beliebiges bekanntes oder später entwickeltes Kommunikationsprotokoll implementiert. In Ausführungsformen, bei denen das Speicherungssystem 102 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ührungsformen kann die Schnittstelle 114 durch mehrere Kanäle (d. h. physische Verbindungen) implementiert sein, die zwischen der Steuerung 104 und den einzelnen Speicherchips 110-1 - 110-N angeordnet sind. Des Weiteren variiert die Anzahl an Kanälen, über die die Schnittstelle 114 hergestellt ist, je nach den Fähigkeiten der Steuerung 104. Zusätzlich kann ein einzelner Kanal dazu eingerichtet sein, mehr als einen Speicherchip kommunikativ zu koppeln. Die Darstellung einer einzelnen Schnittstelle 114 ist nicht als einschränkend zu verstehen. Vielmehr ist die einzelne Schnittstelle repräsentativ für eine beispielhafte Schnittstelle, die zwischen Komponenten verwendet werden kann, und eine oder mehrere Schnittstellen können verwendet werden, um die gleichen Komponenten kommunikativ zu koppeln.
  • 1B veranschaulicht allgemein ein Blockdiagramm einer Systemarchitektur 100 gemäß den Prinzipien der vorliegenden Offenbarung. Die Systemarchitektur 100 kann als Teil einer größeren Systemarchitektur implementiert sein. Zum Beispiel, wie in 1B gezeigt, schließt die Systemarchitektur 150 ein Speicherungsmodul 156 ein, das weiterhin mehrere Speicherungssysteme 102 einschließt. In der beispielhaften Systemarchitektur 150 ist das Speicherungsmodul 156 durch eine Speicherungssteuerung 152 kommunikativ mit dem Host 106 gekoppelt. Insbesondere schließt eine Schnittstelle 154 zwischen dem Host 106 und dem Speicherungsmodul 156 eine Busschnittstelle ein, die ein beliebiges bekanntes oder später entwickeltes Kommunikationsprotokoll implementiert, wie eine Serial-Advanced-Technology-Attachment-(SATA)- oder Peripheral-Component-Interface-Express- (PCIe) Schnittstelle. In einigen Ausführungsformen ist das Speicherungsmodul 156 ein SSD (z. B. in einem Laptop-Computer oder einem Tablet).
  • Einige Implementierungen der Systemarchitektur 100 schließen ein hierarchisches Speicherungssystem ein. Ein hierarchisches Speicherungssystem kann eine Vielzahl von Speicherungssteuerungen 152 einschließen, von denen jede ein entsprechendes Speicherungssystem 102 steuert. Des Weiteren kann eine Vielzahl von Hosts 106 jeweils auf das hierarchische Speicherungssystem zugreifen. Hosts 106 können auf Speicher innerhalb des hierarchischen Speicherungssystems über eine Busschnittstelle zugreifen, die ein beliebiges bekanntes oder später entwickeltes Kommunikationsprotokoll implementiert, einschließlich einer Non-Volatile-Memory-Express(NVMe)- oder einer Fibre-Channel-over-Ethernet (FCoE)-Schnittstelle. Das hierarchische Speicherungssystem kann als ein Rack-Speicherungssystem implementiert sein, das für mehrere Hostcomputer zugänglich ist (z. B. ein Datenzentrum).
  • Die Schnittstelle 154 kann durch mehrere Kanäle (d. h. physische Verbindungen) implementiert sein, die zwischen der Speicherungssteuerung 152 und dem Speicherungsmodul 156 angeordnet sind. In einigen Ausführungsformen variiert die Anzahl an Kanälen, über die eine Schnittstelle 154 hergestellt ist, basierend auf den Fähigkeiten der Speicherungssteuerung 152. Die Darstellung einer einzelnen Schnittstelle ist nicht als beschränkend zu verstehen und die einzelne Schnittstelle ist repräsentativ für eine beispielhafte Schnittstelle, die zwischen Komponenten verwendet werden kann, wo eine oder mehrere Schnittstellen verwendet werden können, um verschiedene Komponenten kommunikativ zu koppeln.
  • 2A veranschaulicht allgemein ein Blockdiagramm 200 des Speicherungssystems 102 gemäß den Prinzipien der vorliegenden Offenbarung. Das Blockdiagramm 200 des Speicherungssystems 102 schließt Komponenten ein, die zuvor in 1A beschrieben wurden, wie die Steuerung 104 und den NVM-Speicherblock 110. Zusätzliche Komponenten, die innerhalb des Speicherungssystems 102 vorhanden sein können, schließen einen Direktzugriffsspeicher (RAM) 230, einen Nur-Lese-Speicher (ROM) 232 und andere Komponenten 234 ein. In einigen Ausführungsformen speichert der ROM 232 Systemstartcode.
  • Obwohl der RAM 230 und der ROM 232 als separate Module in dem Speicherungssystem 102 gezeigt sind, ist die veranschaulichte Architektur nicht als einschränkend zu verstehen. Zum Beispiel können sich der RAM 230 und der ROM 232 innerhalb der Steuerung 104 befinden. In einigen Ausführungsformen befinden sich Abschnitte des RAM 230 bzw. ROM 232 außerhalb der Steuerung 104 und innerhalb der Steuerung 104. In anderen Ausführungsformen können sich die Steuerung 104, der RAM 230 und der ROM 232 auf separaten Halbleiterchips befinden. In verschiedenen Ausführungsformen schließen die anderen Komponenten 234 externe elektrische Schnittstellen, externen RAM, Widerstände, Kondensatoren, Logik-Gates oder andere Komponenten ein, die eine Schnittstelle mit der Steuerung 104 aufweisen.
  • In einigen Ausführungsformen schließt die Steuerung 104 ein Modul 202 ein, das eine Schnittstelle mit dem Host 106 aufweist, ein Modul 204, das eine Schnittstelle mit dem NVM-Speicherblock 110 aufweist, sowie verschiedene andere Module, die weiter unten beschrieben sind. Die Module innerhalb der Steuerung (z. B. Module 202 und 204) sind durch einen Bus 206 kommunikativ miteinander gekoppelt.
  • Die folgende Erörterung der verschiedenen Module, die innerhalb der Steuerung 104 dargestellt sind, soll veranschaulichend und nicht einschränkend sein. Zum Beispiel sind die verschiedenen Module, die allgemein in 2A veranschaulicht sind, nicht darauf beschränkt, innerhalb der Steuerung 104 ausgeführt zu werden, und in einigen Ausführungsformen können ein oder mehrere Module außerhalb der Steuerung 104 ausgeführt werden.
  • Das Modul 202 weist eine Schnittstelle mit dem Host 106 auf und schließt eine Hostschnittstelle 208 und eine Schnittstelle 210 der physischen Schicht ein, welche die elektrische Schnittstelle zwischen dem Host 106 oder der Speichersteuerung der nächsten Ebene und der Steuerung 104 bereitstellt. Die Hostschnittstelle 208 erleichtert das Übertragen von Daten, Steuersignalen und Taktsignalen. Beispiele für die Hostschnittstelle 208 schließen SATA, SATA express, Serial Attached SCSI (SAS), Faserkanal, USB, PCle und NVMe ein.
  • Weiterhin auf 2A Bezug nehmend, ist das Modul 204 in verschiedenen Ausführungsformen dazu eingerichtet, mit dem NVM-Block 110 zu kommunizieren und schließt eine Fehlerkorrekturcode (ECC)-Maschine 212 ein. In einigen Ausführungsformen codiert die ECC-Maschine 212 von dem Host 106 empfangene Daten und speichert die codierten Daten in dem NVM-Block 110. Wenn die Daten aus dem NVM-Speicherblock 110 ausgelesen werden, decodiert die ECC-Maschine 212 die Daten und korrigiert in den Daten detektierte Fehler. Um Fehler zu detektieren, implementiert die ECC-Maschine 212 verschiedene Arten von Fehlerüberprüfung unter Verwendung von Algorithmen, wie eines Paritätsprüfungscodes niedriger Dichte (LDPC), Bose-Chaudhuri-Hocquenghem (BCH)-Code, einen Soft-Read und/oder zusätzliche Parität.
  • Das beispielhafte Modul 204 schließt auch einen Sequenzer 214 und ein Redundant-Array-of-Independent-Drives (RAID)-Modul 216 ein. In verschiedenen Ausführungsformen erzeugt der Sequenzer 214 Befehlssequenzen, wie Programmier- und Löschbefehlssequenzen, die an den NVM-Speicherblock 110 übertragen werden. Das RAID-Modul 216 erzeugt RAID-Parität und Wiederherstellung fehlerhafter Daten. Die RAID-Parität kann verwendet werden, um eine zusätzliche Stufe von Integritätsschutz für Daten bereitzustellen, die in den NVM-Speicherblock 110 geschrieben werden. In einigen Ausführungsformen implementiert die ECC-Maschine 212 die Funktionen des RAID-Moduls 216.
  • Das beispielhafte Modul 204 schließt auch eine Speicherschnittstelle 218 ein, welche die Befehlssequenzen an den NVM-Speicherblock 110 bereitstellt und Statusinformationen von dem NVM-Speicherblock 110 empfängt. Zum Beispiel implementiert die Speicherschnittstelle 218 ein beliebiges bekanntes oder später entwickeltes Kommunikationsprotokoll einschließlich einer Schnittstelle mit doppelter Datenrate (DDR-Schnittstelle), wie einer Toggle-Mode-200-, -400- oder -800-Schnittstelle. Das Modul 204 schließt auch eine Flash-Steuerschicht 220 ein, die den Gesamtbetrieb des Moduls 204 steuert.
  • Weiterhin Bezug nehmend auf beispielhafte Module innerhalb der Steuerung 104 in 2A schließen zusätzliche Module innerhalb der Steuerung 104 ein Dummy-Wortleitungs (DW)-Mustererzeugungsmodul 222, ein DW-Fehleranalysemodul 224 und ein Leseparametereinstellmodul 226 ein. Dummy-Wortleitungen werden auf nichtflüchtige Speicherchips platziert, die zum Zwecke des Analysierens und Verfolgens von Verhalten und Zustand eines jeweiligen nichtflüchtigen Speicherchips verwendet werden. In verschiedenen Ausführungsformen platziert das DW-Mustererzeugungsmodul 222 ein bekanntes Datenmuster in eine Dummy-Wortleitung und verfolgt oder prüft periodisch auf Fehler, indem es die Daten wieder aus der Dummy-Wortleitung ausliest und die Daten mit dem bekannten Datenmuster vergleicht.
  • In verschiedenen Ausführungsformen stellt das Leseparametereinstellmodul 226 Parameter ein, die einem bestimmten nichtflüchtigen Speicherchip zugehörig sind. Zum Beispiel - und wie weiter unten erörtert - kann das Leseparametereinstellmodul 226 Parameter, die einem bestimmten nichtflüchtigen Speicherchip zugehörig sind, während eines Vorgangs - z. B. eines Lesens oder Schreibens - einstellen, um die Leseparameter einzustellen oder neu einzustellen. Während des Vorgangs zum erneuten Einstellen der Leseparameter stellt das Leseparametereinstellmodul 226 die Leseparameter für einen bestimmten Speicherblock ein, liest Daten aus dem Speicherblock aus und verifiziert eine resultierende BER. Wenn die resultierende BER auf eine angestrebte oder erwartete BER sinkt oder sie unterschreitet, speichert das Leseparametereinstellmodul 226 die Leseparameter für den Speicherblock. Anschließend werden die gespeicherten Leseparameter während eines Lesens jeglicher Wortleitung in dem Speicherblock verwendet. Somit können Leseparameter für einen Speicherblock eindeutig sein.
  • Zusätzliche Module innerhalb der beispielhaften Steuerung 104 schließen eine Pufferverwaltung/Bussteuerung 228 ein, die zum Beispiel Puffer in dem RAM 230 verwaltet und die interne Busarbitrierung des Bus 206 in der Steuerung 104 steuert. Zusätzlich oder alternativ kann die Steuerung 104 eine Medienverwaltungsschicht 236 einschließen, die Abnutzungsausgleich des NVM-Speicherblocks 110 durchführt. Wie zuvor erwähnt, sind die verschiedenen Module, die in Bezug auf die Steuerung 104 beschrieben sind, nicht als die Architektur der Steuerung 104 einschränkend zu verstehen. Zum Beispiel können die Schnittstelle 210 der physischen Schicht, das RAID-Modul 216, die Medienverwaltungsschicht 236 und die Pufferverwaltung/Bussteuerung 228 Beispiele für optionale Komponenten innerhalb der Steuerung 104 sein.
  • Des Weiteren kann in Ausführungsformen, in denen das Speicherungssystem 102 Flash-Speicher einschließt, die Medienverwaltungsschicht 236 als Teil der Flash-Verwaltung integriert sein, die Flash-Fehler handhabt und eine Schnittstelle mit dem Host 106 aufweist. Insbesondere kann die Medienverwaltungsschicht 236 einen Algorithmus (z. B. Firmware in der Speichervorrichtung) einschließen, der einen von dem Host 106 empfangenen Schreibbefehl in ein Schreiben auf den NVM-Speicherblock 110 übersetzt.
  • 2B veranschaulicht allgemein ein Blockdiagramm mit verschiedenen Merkmalen des NVM-Speicherblocks 110 innerhalb des Speicherungssystems 102. Da Einzelheiten der Steuerung 104 zuvor beschrieben worden sind (in 2A), ist in 2B die Steuerung 104 als ein einziger Block veranschaulicht. Zusätzlich sind der zuvor beschriebene RAM 230, der ROM 232 und die anderen Komponenten 234 in 2B eingeschlossen, um dem Leser die Orientierung zu erleichtern. Als Nächstes werden Einzelheiten in einem beispielhaften Speicherchip 110-1 erörtert. Wenngleich sich die Erörterung auf den Speicherchip 110-1 konzentriert, gilt jedes der in Bezug auf den Speicherchip 110-1 erörterten Merkmale gleichermaßen für alle Speicherchips innerhalb des NVM-Speicherblocks 110.
  • In einigen Ausführungsformen schließt der beispielhafte Speicherchip 110-1 Steuerschaltung 250, Lese/Schreib-Schaltungen 252, einen Zeilendecoder 254, einen Spaltendecoder 256 und ein Speicherarray 260 ein. Das Speicherarray 260 kann ein zweidimensionales Array oder ein dreidimensionales Array von Speicherzellen einschließen. Die Lese/Schreib-Schaltungen 252 lesen und programmieren Speicherseiten in dem Speicherchip 110-1 parallel. In verschiedenen Ausführungsformen wird auf das Speicherarray 260 nach Wortleitungen über einen Zeilendecoder 254 und nach Bitleitungen über den Spaltendecoder 256 zugegriffen.
  • Die Architektur des Speicherchips 110-1 ist nicht als einschränkend zu verstehen, und eine beliebige bekannte Architektur, welche die Funktionen des Zugreifens auf das Speicherarray 260 durchführen kann, kann verwendet werden, ohne vom Umfang dieser Offenbarung abzuweichen. Zum Beispiel kann in verschiedenen Ausführungsformen Zugriff auf das Speicherarray 260 durch verschiedene periphere Schaltungen auf eine symmetrische Weise auf gegenüberliegenden Seiten des Speicherarrays 260 implementiert sein, was die Dichten von Zugriffsleitungen und Schaltungen auf jeder Seite des Speicherarrays 260 reduziert.
  • Weiterhin Bezug nehmend auf 2B schließt, in verschiedenen Ausführungsformen, die beispielhafte Steuerschaltung 250 eine Leistungssteuerschaltung 266, einen Adressdecoder 268 und eine Zustandsmaschine 270 ein. In einigen Ausführungsformen können die Leistungssteuerschaltung 266, der Adressdecoder 268 und die Zustandsmaschine 270 zusammen als Verwaltungsschaltungen bezeichnet werden. Die Steuerschaltung 250 und ihre verschiedenen Verwaltungsschaltungen sind durch verschiedene Schnittstellen (z. B. Schnittstellen 262 und 264) kommunikativ an den Zeilendecoder 254 und den Spaltendecoder 256 gekoppelt. In verschiedenen Ausführungsformen führt die Steuerschaltung 250 verschiedene Vorgänge an dem Speicherarray 260 durch, die Lesen oder Schreiben in die Speicherzellen einschließen.
  • Die Leistungssteuerschaltung 266 steuert den Strom und die Spannung, mit dem bzw. der die Wortleitungen und Bitleitungen während des Betriebs des Speicherchips 260 versorgt werden. Der Adressdecoder 268 stellt eine Adressschnittstelle bereit, die Adressen zwischen den von dem Host 106 bereitgestellten Adressen und den von dem Zeilendecoder 254 und dem Spaltendecoder 256 verwendeten Adressen übersetzt. Der beispielhafte Adressdecoder 268 wandelt eine von dem Host 106 bereitgestellte Adresse in eine Adresse um, die verstanden wird und kompatibel ist mit einem Format, das von dem Zeilendecoder 254 und dem Spaltendecoder 256 verwendet wird. Die Zustandsmaschine 270 stellt eine Steuerung von Speichervorgängen auf Chipebene bereit.
  • Somit schließt das Speicherungssystem 102 verschiedene Komponenten ein, einschließlich der Steuerung 104 und des NVM-Speicherblocks 110, von denen Einzelheiten oben in 1A, 1B, 2A und 2B beschrieben wurden. Die Erörterung wendet sich nun einer beispielhaften Architektur eines beispielhaften Speicherarrays 260 zu und insbesondere Verfahren, die durchgeführt werden können, um eine Leistung eines Lesens in dem Speicherungssystem 102 zu verbessern.
  • 3 veranschaulicht weiterhin das Speicherarray 260. Das Speicherarray 260 ist in mehrere Speicherblöcke 302 unterteilt. In einem Flash-Speicher ist ein Speicherblock als eine Löscheinheit definiert. Das heißt, jeder Speicherblock 302 schließt eine Anzahl an Speicherzellen ein, die zusammen oder als ein Block gelöscht werden. In einigen Ausführungsformen kann das Speicherarray 260 in eine beliebige Anzahl an Blöcken unterteilt sein, zum Beispiel schließt das Speicherarray 260 1.024 Blöcke ein. Zusätzlich oder alternativ kann jeder der Speicherblöcke 302 konzeptionell in eine Anzahl an Seiten unterteilt sein, die als eine Programmiereinheit definiert sind. In einigen Ausführungsformen kann eine Seite von Daten in einer Zeile von Speicherzellen gespeichert werden. Jede Seite kann Benutzerdaten und Overhead-Daten einschließen, wobei die Overhead-Daten CC einschließen, das aus den Benutzerdaten berechnet wurde.
  • Jeder Speicherblock 302, zum Beispiel Speicherblock 302-1, schließt mehrere Bitleitungen 304, Wortleitungen 306 und Auswahlleitungen 308 ein. Jede Bitleitung, beispielsweise Bitleitung 304-1, ist mit mehreren in Reihe geschalteten Speicherzellen verbunden. Genauer sind, in einer Ausführungsform, bei der jede Speicherzelle ein Floating-Gate-Transistor ist, die Floating-Gate-Transistoren in Reihe geschaltet, um eine NAND-Kette 310 zu bilden (z. B. in dem gestrichelten Feld veranschaulicht). Obwohl vier Speicherzellen in 3 gezeigt sind, soll die Anzahl an Speicherzellen innerhalb der NAND-Kette nicht einschränkend sein. Zum Beispiel können 16, 32, 64, 128 oder jede andere Anzahl an Speicherzellen in einer NAND-Kette verbunden sein. Jede jeweilige Bitleitung 304 ist mit einer entsprechenden NAND-Kette innerhalb des Blocks 302 gekoppelt.
  • Weiterhin Bezug nehmend auf 3 schließt ein Verfahren zum Lesen von Daten, die in einer bestimmten Speicherzelle - z. B. Speicherzelle 316 - gespeichert sind, das Anlegen einer Spannung an die Auswahlleitungen 308 des Blocks 302 ein, die wiederum mit entsprechenden NAND-Ketten innerhalb des Blocks 302 gekoppelt sind, einschließlich der NAND-Kette 310, die die Speicherzelle 316 einschließt. Die an die Auswahlleitungen 308 angelegte Spannung ist größer als die Schwellenspannungen der Auswahltransistoren 312 und 314. Der Auswahltransistor 312 wird durch die Auswahlgate-Drain-Leitung (SGD) 308-1 gesteuert, und der Auswahltransistor 314 wird durch die Auswahlgate-Source-Leitung (SGS) 308-2 gesteuert. Zusätzlich sind, um Daten in der Speicherzelle 316 zu lesen, alle anderen Speicherzellen oder nicht ausgewählten Speicherzellen in der NAND-Kette 319 eingeschaltet (z. B. Strom leitend, unabhängig davon, ob sie programmiert oder gelöscht sind). Die nicht ausgewählten Speicherzellen weisen eine Lesedurchgangsspannung - d. h. Leseparameter - auf, die an ihre jeweiligen Wortleitungen angelegt ist, die die nicht ausgewählten Speicherzellen einschalten.
  • Während des beispielhaften Lesevorgangs werden verschiedene Lesevergleichsniveaus - d. h. Spannungen - an die Wortleitung 306-2 angelegt, um den in der Speicherzelle 316 gespeicherten Wert zu bestimmen. In einigen Ausführungsformen wird der Leitungsstrom der Speicherzelle 316 gemessen, um den in der Speicherzelle 316 gespeicherten Wert zu bestimmen. Das Verfahren, mit dem auf jede Speicherzelle zugegriffen wird, und die Anzahl an Speicherzellen, auf die während eines Lesens oder Schreibens zugegriffen wird, variiert. Zum Beispiel können alle Bitleitungen des Speicherblocks 302-1 gleichzeitig programmiert oder gelesen werden. In verschiedenen Ausführungsformen können Speicherzellen entlang einer gemeinsamen Wortleitung zur gleichen Zeit (d. h. simultan) programmiert werden. In anderen Ausführungsformen können die Bitleitungen in gerade Bitleitungen und ungerade Bitleitungen unterteilt werden. In einer Architektur mit ungeraden/geraden Bitleitungen werden Speicherzellen entlang einer gemeinsam genutzten Wortleitung und verbunden mit den ungeraden Bitleitungen zu einem Zeitpunkt programmiert, während Speicherzellen entlang einer gemeinsam genutzten Wortleitung und verbunden mit einer geraden Bitleitung zu einem anderen Zeitpunkt programmiert werden.
  • Jedes Mal, wenn Daten in einen Speicherblock geschrieben werden, werden die Daten durch die ECC-Maschine 212 verarbeitet, was das Codieren der Daten (z. B. unter Verwendung eines bestimmten Fehlerkorrekturcodes) und das Speichern der codierten Daten in dem Speicherblock einschließt. Wenn die Daten wieder aus dem Speicherblock ausgelesen werden, werden die Daten durch die ECC-Maschine 212 verarbeitet, was das Decodieren der Daten, das Korrigieren von Fehlern (z. B. als die BER verfolgten) und das Zurücksenden der Daten an einen Benutzer (über die Steuerung 104) einschließt. In einigen Ausführungsformen ist die Zeitdauer, die die ECC-Maschine 212 benötigt, um Daten an die Steuerung 104 zurückzugeben, als die Durchsatzzeit definiert.
  • In einigen Ausführungsformen führt die Steuerung 104 Datenkonsolidierungsvorgänge am Speicherarray 260 durch. Die Steuerung 104 wählt einen Quellblock aus dem Speicherblock 302-1 bis Speicherblock 302-N des Speicherarrays 260 zur Konsolidierung oder Verdichtung. Zum Beispiel kann die Steuerung 104 Speicherblock 302-1 als den Quellblock zur Konsolidierung oder Verdichtung wählen. Der Speicherblock 302-1 kann in den hier beschriebenen beispielhaften Ausführungsformen als Quellblock 302-1 bezeichnet werden. Der Quellblock 302-1 kann eine Vielzahl von Speicherfragmenten einschließen, wie 16 Speicherfragmente oder eine beliebige geeignete Anzahl an Speicherfragmenten. Die Speicherfragmente können Daten einschließen, die von dem Host 106 während eines Host-Schreibvorgangs geschrieben werden. Die Speicherfragmente können zu jeweiligen logischen Gruppen gehören und können in dem Quellblock 302-1 gestreut oder unorganisiert sein, sodass Speicherfragmente, die der gleichen logischen Gruppe zugeordnet sind, möglicherweise nicht sequenziell in dem Quellblock 302-1 gespeichert oder organisiert sind. Zusätzlich oder alternativ können, während einige Speicherfragmente Daten einschließen, die während eines Host-Schreibvorgangs durch den Host 106 geschrieben werden, andere Speicherfragmente, die über den Quellblock 302-1 verstreut sind, leer sein (z. B. durch den Host 106 oder die Steuerung 104 gelöscht, oder es wurde nicht durch den Host 106 in sie geschrieben).
  • Wie beschrieben, ist die Steuerung 104 dazu eingerichtet, die Speicherblöcke 302-1 bis 302-N zu programmieren. Zum Beispiel kann die Steuerung 104 Vorgänge an den Speicherblöcken 302-1 bis 302-N ausführen, wie Lesevorgänge, Schreibvorgänge, andere geeignete Vorgänge oder eine Kombination davon. Die Steuerung 104 kann die Speicherblöcke 302-1 bis 302-N als Reaktion auf von dem Host 106 empfangene Befehle programmieren, welche die Steuerung 104 anweisen, Daten aus einer oder mehreren Seiten der Speicherblöcke 302-1 bis 302-N zu lesen, Daten auf eine oder mehrere Seiten der Speicherblöcke 302-1 bis 302-N zu schreiben, andere Vorgänge auf Seiten der Speicherblöcke 302-1 bis 302-N auszuführen oder eine Kombination davon. Zusätzlich oder alternativ können die von dem Host 106 empfangenen Befehle eine oder mehrere Speicheradressen (z. B. logische Adressen, welche die Steuerung 104 in physische Adressen umwandelt, wie beschrieben) einschließen.
  • Die Steuerung 104 kann eine Vorgangswarteschlange 402 einschließen, wie dies allgemein in 4 veranschaulicht ist. Die Steuerung 104 lädt Vorgänge, die den Befehlen von dem Host 106 entsprechen, in die Warteschlange 402. Zum Beispiel kann, wie allgemein veranschaulicht ist, die Warteschlange 402 Vorgänge 402-1 bis 402-N einschließen. Die Vorgänge können Schreibvorgänge, Lesevorgänge und/oder andere geeignete Vorgänge einschließen. Die Steuerung 104 führt die Vorgänge in der Reihenfolge gemäß der Warteschlange 402 aus. Zum Beispiel kann die Steuerung 104 unter Verwendung der von dem Host 106 empfangenen Speicheradresse auf eine Seite 400 eines Speicherblocks, wie des Speicherblocks 302-1, zugreifen.
  • Die Steuerung 104 kann den Vorgang bei 402-1 (z. B. einen Schreibvorgang) der Warteschlange 402 auf der Seite 400 des Speicherblocks 302-1 ausführen. Zum Beispiel schreibt die Steuerung 104 Daten auf die Seite 400 gemäß dem Vorgang 402-1. Die Seite 400 kann einen Seitenkopf 404 einschließen. Wenn die Steuerung 104 die Ausführung des Vorgangs 402-1 auf der Seite 400 abschließt, speichert die Steuerung 104 Informationen in dem Seitenkopf 404. Die Informationen können einen Wert einschließen, der eine Anzahl an Schreibvorgängen darstellt, die in der Warteschlange verbleiben, nachdem die Steuerung 104 den Vorgang 402-1 ausgeführt hat. Zusätzlich oder alternativ können die Informationen auch Fehlererkennungsinformationen, Fehlerkorrekturinformationen, andere geeignete Informationen oder eine Kombination davon einschließen.
  • Der Steuerung 104 kann dann mit dem Ausführen der Vorgänge 402-2 bis 402-N auf nachfolgenden Seiten des Speicherblocks 302-1 fortfahren. Für jede nachfolgende Seite des Speicherblocks 302-1 speichert die Steuerung 104 Informationen, die mindestens den Wert angeben, der die Anzahl an in der Warteschlange verbleibenden Schreibvorgängen darstellt, in Seitenköpfen, die jeweiligen Seiten zugeordnet sind.
  • Wenn die Steuerung 104 das Programmieren des Speicherblocks 302-1 (z. B. durch Ausführen aller Vorgänge, die den Seiten des Speicherblocks 302-1 entsprechen) abschließt, speichert die Steuerung 104 Informationen im persistenten Speicher, der dem Speicherungssystem 102 zugeordnet ist, die angeben, dass das Programmieren des Speicherblocks 302-1 abgeschlossen ist. Die Informationen können Speicheradressinformationen, die dem Speicherblock 302-1 zugeordnet sind, Fehlererkennungsinformationen, Fehlerkorrekturinformationen, andere geeignete Informationen oder eine Kombination davon einschließen.
  • Der Host 106 kann damit fortfahren, Befehle an die Steuerung 104 zu übermitteln. Dementsprechend kann die Steuerung 104 die Warteschlange 402 mit Vorgängen befüllen, die Befehlen entsprechen, die von dem Host 106 empfangen werden. Die Steuerung 104 kann damit fortfahren, Vorgänge auf Seiten des Speicherblocks 302-1 und anderen Speicherblöcken der Speicherblöcke 302-2 bis 302-N auszuführen, bis die Steuerung 104 alle Vorgänge abschließt, die den von dem Host 106 empfangenen Befehlen entsprechen. Die Steuerung 104 kann die in dem persistenten Speicher gespeicherten Informationen aktualisieren, wenn die Steuerung 104 das Programmieren jedes entsprechenden Speicherblocks 302-2 bis 302-N abschließt. Wenn beispielsweise die Steuerung 104 das Programmieren des Speicherblocks 302-2 abschließt, aktualisiert die Steuerung 104 die in dem persistenten Speicher gespeicherten Informationen, um anzugeben, dass das Programmieren des Speicherblocks 302-2 abgeschlossen ist. Die Steuerung 104 kann die in dem persistenten Speicher gespeicherten Informationen anhängen oder die in dem persistenten Speicher gespeicherten Informationen ersetzen, sodass nur der zuletzt programmierte Speicherblock durch die Informationen angegeben wird.
  • In einigen Ausführungsformen, wie beschrieben, kann das Speicherungssystem 102 eine oder mehrere Speicherebenen einschließen. Jede der einen oder mehreren Speicherebenen schließt eine Vielzahl von Speicherblöcken ein. Zum Beispiel kann eine erste Speicherebene die Speicherblöcke 302-1 bis 302-N einschließen, und eine zweite Speicherebene kann andere Speicherblöcke einschließen und so weiter. Die Steuerung 104 kann dazu eingerichtet sein, gemäß den von dem Host 106 empfangenen Befehlen Seiten von Speicherblöcken zu programmieren, die jeder der einen oder mehreren Speicherebenen zugeordnet sind.
  • In einigen Ausführungsformen kann, wie beschrieben, das Speicherungssystem 102 eine Vielzahl von Speicherchips 110-1 bis 110-N einschließen. Jeder der Speicherchips 110-1 bis 110-N kann eine oder mehrere Speicherebenen einschließen, die jeweils einen oder mehrere Speicherblöcke einschließen. Die Steuerung 104 kann dazu eingerichtet sein, gemäß den von dem Host 106 empfangenen Befehlen Seiten von Speicherblöcken zu programmieren, die jeder Speicherebene jedes der Speicherchips 110-1 bis 110-N zugeordnet sind.
  • Während des Programmierens des Speicherungssystems 102 kann die Stromversorgung des Speicherungssystems 102 verloren gehen. Zum Beispiel kann ein nicht ordnungsgemäßes Herunterfahren (UGSD) auftreten, was dazu führen kann, dass die Steuerung 104 unterbrochen wird, während die Steuerung 104 das Speicherungssystem 102 programmiert. Um sich nach dem UGSD wiederherzustellen und das Programmieren dort fortzusetzen, wo die Steuerung 104 durch das UGSD unterbrochen wurde, ist die Steuerung 104 dazu eingerichtet, eine letzte gute Seite während eines Hochfahrprozesses des Speicherungssystems 102 zu finden.
  • In einigen Ausführungsformen verwendet die Steuerung 104 die in dem persistenten Speicher gespeicherten Informationen und die in Seitenköpfen jeweiliger Seiten in einem Speicherblock gespeicherten Informationen, um die letzte gute Seite für den Speicherblock zu finden. Zum Beispiel ruft die Steuerung 104 die Informationen aus dem persistenten Speicher ab, die den letzten programmierten Speicherblock, wie den Speicherblock 302-1, vor dem UGSD angeben. Die Steuerung 104 kann dann auf einen Speicherblock zugreifen, der unmittelbar auf den Speicherblock 302-1 folgt, wie den Speicherblock 302-2 (z. B. den Speicherblock, der vor dem UGSD programmiert wurde).
  • Die Steuerung 104 durchsucht dann die Seiten des Speicherblocks 302-2, um die letzte gute Seite (z. B. die letzte vor dem UGSD geschriebene Seite) des Speicherblocks 302-2 zu finden. Die Steuerung 104 greift auf eine erste Seite des Speicherblocks 302-2 zu. Die erste Seite kann eine Seite des Speicherblocks 302-2 mit einer Speicheradresse einschließen, die sich an oder nahe der Mitte der Speicheradressen des Speicherblocks 302-2 befindet, mit einer Speicheradresse, die sich an oder nahe dem Anfang der Speicheradressen des Speicherblocks 302-2 befindet, mit einer Speicheradresse, die sich an oder nahe dem Ende der Speicheradressen des Speicherblocks 302-2 befindet, oder eine andere geeignete Seite des Speicherblocks 302-2.
  • Die Steuerung 104 bestimmt, ob die erste Seite leer ist (z. B. anzeigt, dass die Steuerung 104 vor dem UGSD nicht auf die erste Seite geschrieben hat). Wenn die Steuerung 104 bestimmt, dass die erste Seite leer ist, greift die Steuerung 104 auf eine Seite des Speicherblocks 302-2 zwischen der ersten Speicheradresse des Speicherblocks 302-2 und der Speicheradresse, die der ersten Seite entspricht, zu. Zum Beispiel kann die Steuerung 104 auf eine Seite mit einer Speicheradresse an oder nahe der Mitte der Speicheradressen zwischen der ersten Speicheradresse und der Speicheradresse, die der ersten Seite entspricht, zugreifen. Die Steuerung 104 kann fortfahren, nach der letzten guten Seite des Speicherblocks 302-2 zu suchen, wie noch beschrieben wird.
  • Wenn die Steuerung 104 bestimmt, dass die erste Seite nicht leer ist (z. B. was anzeigt, dass die erste Seite vor dem UGSD geschrieben wurde), liest die Steuerung 104 die Seitenkopfinformationen, die in dem Seitenkopf der ersten Seite gespeichert sind, um die Anzahl an Schreibvorgängen zu bestimmen, die in der Warteschlange verbleiben, nachdem die erste Seite geschrieben wurde.
  • Die Steuerung 104 bestimmt, ob die Anzahl an Vorgängen, die in der Warteschlange verbleiben, 0 ist. Wenn die Steuerung 104 bestimmt, dass die Anzahl an Vorgängen, die in der Warteschlange verbleiben, 0 ist (z. B. was anzeigt, dass beim Schreiben der ersten Seite keine Vorgänge in der Warteschlange verblieben sind), bestimmt die Steuerung 104, ob die Seite, die auf die erste Seite folgt, leer ist. Wenn die Steuerung 104 bestimmt, dass die Seite, die auf die erste Seite folgt, leer ist, bestimmt die Steuerung 104, dass die erste Seite die letzte gute Seite für den Speicherblock 302-2 ist. Die Steuerung 104 kann mit dem Programmieren des Speicherblocks 302-2 gemäß Befehlen, die von dem Host 106 empfangen wurden, auf der Seite, die auf die erste Seite folgt, fortfahren.
  • Wenn die Steuerung 104 bestimmt, dass die Seite, die auf die erste Seite folgt, nicht leer ist, bestimmt die Steuerung 104, ob die Seite, die auf die erste Seite folgt, die letzte Seite in dem Speicherblock 302-2 ist. Wenn die Steuerung 104 bestimmt, dass die Seite, die auf die erste Seite folgt, die letzte Seite in dem Speicherblock 302-2 ist, bestimmt die Steuerung 104, dass der Speicherblock 302-2 programmiert ist, und die Steuerung 104 aktualisiert die in dem persistenten Speicher gespeicherten Informationen, um anzugeben, dass das Programmieren des Speicherblocks 302-2 abgeschlossen ist. Wenn die Steuerung 104 bestimmt, dass die Seite, die auf die erste Seite folgt, nicht die letzte Seite in dem Speicherblock 302-2 ist, fährt die Steuerung 104 fort, wie noch beschrieben wird.
  • Wenn die Steuerung 104 bestimmt, dass die Anzahl an Vorgängen, die in der Warteschlange auf der ersten Seite verbleiben, nicht 0 ist, bestimmt die Steuerung 104, ob die Anzahl an Schreibvorgängen, die in der Warteschlange auf der ersten Seite verbleiben, über einem Schwellenwert liegt. Der Schwellenwert kann eine Anzahl an Vorgängen einschließen, wie 1 Vorgang, 2 Vorgänge, 4 Vorgänge, 6 Vorgänge oder eine beliebige geeignete Anzahl an Vorgängen. Der Wert des Schwellenwerts kann der Größe des Speicherungssystems 102 entsprechen. Zum Beispiel kann der Wert des Schwellenwerts relativ groß sein, wenn das Speicherungssystem 102 eine relativ große Anzahl an Speicherblöcken, Speicherebenen und/oder Speicherchips einschließt. Wenn die Steuerung 104 bestimmt, dass die Anzahl an Schreibvorgängen, die in der Warteschlange auf der ersten Seite verbleiben, unter dem Schwellenwert liegt (z. B. ist die Anzahl an Vorgängen in der Warteschlange klein genug, sodass die Steuerung 104 die binäre Suche vielleicht im Wesentlichen optimal durchführen kann), findet die Steuerung 104 die letzte gute Seite in dem Speicherblock 302-2 durch Durchführen einer binären Suche, wie beschrieben.
  • Wenn die Steuerung 104 hingegen bestimmt, dass die Anzahl an Schreibvorgängen, die in der Warteschlange auf der ersten Seite verbleiben, über dem Schwellenwert liegt, greift die Steuerung 104 unter Verwendung der Anzahl an Schreibvorgängen, die in der Warteschlange auf der ersten Seite verbleiben, auf eine zweite Seite (z. B. mit einer Speicheradresse, die größer als die Speicheradresse der ersten Seite ist) des Speicherblocks 302-2 zu. Zum Beispiel entspricht die Anzahl an Speicheradressen zwischen der ersten Seite und der zweiten Seite der Anzahl an Schreibvorgängen, die in der Warteschlange auf der ersten Seite verbleiben. Die Steuerung 104 bestimmt, ob die zweite Seite leer ist. Wenn die Steuerung 104 bestimmt, dass die zweite Seite leer ist, findet die Steuerung 104 die letzte gute Seite für den Speicherblock 302-2, indem sie eine binäre Suche zwischen der der ersten Seite entsprechenden Speicheradresse und der der zweiten Seite entsprechenden Speicheradresse ausführt.
  • Wenn hingegen die Steuerung 104 bestimmt, dass die zweite Seite nicht leer ist, bestimmt die Steuerung 104, ob die zweite Seite die letzte Seite in dem Speicherblock 302-2 ist. Wenn die Steuerung 104 bestimmt, dass die zweite Seite die letzte Seite in dem Speicherblock 302-2 ist, bestimmt die Steuerung 104, dass das Programmieren des Speicherblocks 302-2 vor dem UGSD abgeschlossen war. Die Steuerung 104 kann dann die in dem persistenten Speicher gespeicherten Informationen aktualisieren, um anzugeben, dass das Programmieren des Speicherblocks 302-2 abgeschlossen ist. Die Steuerung 104 kann mit dem Programmieren von Seiten in anderen der Speicherblöcke 302-3 bis 302-N gemäß den von dem Host 106 empfangenen Befehlen fortfahren.
  • Wenn die Steuerung 104 hingegen bestimmt, dass die zweite Seite nicht die letzte Seite des Speicherblocks 302-2 ist, liest die Steuerung 104 die in dem Seitenkopf der zweiten Seite gespeicherten Seitenkopfinformationen. Die Steuerung 104 bestimmt die Anzahl an Vorgängen, die in der Warteschlange auf der zweiten Seite verbleiben, unter Verwendung der Seitenkopfinformationen. Die Steuerung 104 fährt, wie beschrieben, fort, bis die Steuerung 104 die letzte gute Seite des Speicherblocks 302-2 findet. Wenn die Steuerung 104 die letzte gute Seite des Speicherblocks 302-2 findet, kann die Steuerung 104 mit dem Programmieren des Speicherblocks 302-2 auf der Seite fortfahren, die auf die letzte gute Seite folgt (z. B. folgt die nächste zu schreibende Seite auf die letzte gute Seite).
  • In einigen Ausführungsformen kann das Speicherungssystem 102 eine Vielzahl von Speicherebenen einschließen, die jeweils eine Vielzahl von Speicherblöcken einschließen, wie beschrieben. Die Steuerung 104 kann dazu eingerichtet sein, eine letzte gute Seite für jede der Vielzahl von Speicherebenen zu finden. Zum Beispiel findet die Steuerung 104 eine letzte gute Seite eines Speicherblocks, wie eines der Speicherblöcke 302-1 bis 302-N, der einer ersten Speicherebene entspricht. In einigen Ausführungsformen findet die Steuerung die letzte gute Seite des Speicherblocks, die der ersten Speicherebene entspricht, durch Ausführen einer binären Suche. In einigen Ausführungsformen findet die Steuerung 104 die letzte gute Seite des Speicherblocks, die der ersten Speicherebene entspricht, unter Verwendung von Seitenkopfinformationen, die in Seitenköpfen jeweiliger Seiten des Speicherblocks gespeichert sind, wie beschrieben.
  • Die Vielzahl von Speicherebenen kann unabhängig oder parallel programmiert werden. Wenn die Vielzahl von Speicherebenen unabhängig programmiert wird, kann die Steuerung 104 eine letzte gute Seite für unabhängig für jeden der Speicherblöcke finden, die jeweiligen Speicherebenen entsprechen, wie beschrieben. Wenn die Vielzahl von Speicherebenen parallel programmiert wird, kann die Steuerung 104 eine letzte gute Seite für andere Speicherebenen der Vielzahl von Speicherebenen unter Verwendung der letzten guten Seite des Speicherblocks, der der ersten Speicherebene entspricht, finden.
  • Wenn zum Beispiel die Vielzahl von Speicherebenen parallel programmiert wird, werden entsprechende Speicherseiten von Speicherblöcken für jeweilige Speicherebenen im Wesentlichen zur gleichen Zeit programmiert. Aufgrund inhärenter Latenz in dem Speicherungssystem 102 kann jedoch eine Seite eines Speicherblocks, der der ersten Speicherebene entspricht, geringfügig vor oder nach einer entsprechenden Seite in einem Speicherblock einer zweiten Speicherebene programmiert werden. Dementsprechend kann eine letzte gute Seite eines Speicherblocks der zweiten Speicherebene eine oder zwei Seiten vor oder nach der letzten guten Seite des Speicherblocks der ersten Speicherebene sein.
  • Um die letzte gute Seite für den Speicherblock der zweiten Speicherebene zu finden, verwendet die Steuerung 104 die Speicheradresse, die der letzten guten Seite des Speicherblocks der ersten Speicherebene plus oder minus einer Delta-Seitenanzahl entspricht. Die Delta-Seitenanzahl kann der inhärenten Latenz des Speicherungssystems 102 entsprechen. Zum Beispiel kann die Delta-Seitenanzahl 1, 2, 4, 6 oder eine beliebige geeignete Anzahl an Seiten einschließen. Die Steuerung 104 kann die Delta-Seitenanzahl in dem Speicherblock der zweiten Speicherebene vor der Speicheradresse durchsuchen, die der letzten guten Seite in dem Speicherblock der ersten Speicherebene entspricht, und/oder die Delta-Seitenanzahl in dem Speicherblock der zweiten Speicherebene nach der Speicheradresse, die der letzten guten Seite in dem Speicherblock der ersten Speicherebene entspricht. Die Steuerung 104 kann für andere Speicherebenen der Vielzahl von Speicherebenen fortfahren, wie beschrieben.
  • In einigen Ausführungsformen kann das Speicherungssystem 102 eine Vielzahl von Speicherchips 110-1 bis 110-N einschließen, die jeweils eine Vielzahl von Speicherblöcken einschließen, wie beschrieben. Die Steuerung 104 kann dazu eingerichtet sein, eine letzte gute Seite für jeden der Vielzahl von Speicherchips 110-1 bis 110-N zu finden. Zum Beispiel findet die Steuerung 104 eine letzte gute Seite eines Speicherblocks, wie eines der Speicherblöcke 302-1 bis 302-N, der einem ersten Speicherchip 110-1 entspricht. In einigen Ausführungsformen findet die Steuerung die letzte gute Seite des Speicherblocks, der dem ersten Speicherchip 110-1 entspricht, durch Ausführen einer binären Suche. In einigen Ausführungsformen findet die Steuerung 104 die letzte gute Seite des Speicherblocks, der dem ersten Speicherchip 110-1 entspricht, unter Verwendung von Seitenkopfinformationen, die in Seitenköpfen jeweiliger Seiten des Speicherblocks gespeichert sind, wie beschrieben.
  • Die Vielzahl von Speicherchips 110-1 bis 110-N kann unabhängig oder parallel programmiert werden. Wenn die Vielzahl von Speicherchips 110-1 bis 110-N unabhängig programmiert wird, kann die Steuerung 104 eine letzte gute Seite unabhängig für jeden der Speicherblöcke finden, die jeweiligen Speicherchips 110-1 bis 110-N entsprechen, wie beschrieben. Wenn die Vielzahl von Speicherchips 110-1 bis 110-N parallel programmiert wird, kann die Steuerung 104 eine letzte gute Seite für andere Speicherchips 110-2 bis 110-N unter Verwendung der letzten guten Seite des Speicherblocks finden, der dem ersten Speicherchip 110-1 entspricht.
  • Wenn zum Beispiel die Vielzahl von Speicherchips 110-1 bis 110-N parallel programmiert wird, werden entsprechende Speicherseiten von Speicherblöcken für jeweilige Speicherchips 110-1 bis 110-N im Wesentlichen zur gleichen Zeit programmiert. Aufgrund inhärenter Latenz in dem Speicherungssystem 102 kann jedoch eine Seite eines Speicherblocks, der dem ersten Speicherchip 110-1 entspricht, geringfügig vor oder nach einer entsprechenden Seite in einem Speicherblock eines zweiten Speicherchips 110-2 programmiert werden und so weiter. Dementsprechend kann eine letzte gute Seite eines Speicherblocks des zweiten Speicherchips 110-2 eine oder zwei Seiten vor oder nach der letzten guten Seite des Speicherblocks des ersten Speicherchips 110-1 sein.
  • Um die letzte gute Seite für den Speicherblock des zweiten Speicherchips 110-2 zu finden, verwendet die Steuerung 104 die Speicheradresse, die der letzten guten Seite des Speicherblocks des ersten Speicherchips 110-1 plus oder minus einer Delta-Seitenanzahl entspricht, wie beschrieben. Die Steuerung 104 kann die Delta-Seitenanzahl in dem Speicherblock des zweiten Speicherchips 110-2 vor der Speicheradresse durchsuchen, die der letzten guten Seite in dem Speicherblock des ersten Speicherchips 110-1 entspricht, und/oder die Delta-Seitenanzahl in dem Speicherblock des zweiten Speicherchips 110-2 nach der Speicheradresse, die der letzten guten Seite in dem Speicherblock des ersten Speicherchips 110-1 entspricht. Die Steuerung 104 kann für andere Speicherchips 110-3 bis 110-N fortfahren, wie beschrieben.
  • In einigen Ausführungsformen kann das Speicherungssystem 102 eine Vielzahl von Speicherchips 110-1 bis 110-N einschließen, die jeweils eine Vielzahl von Speicherebenen einschließen, die jeweils eine Vielzahl von Speicherblöcken einschließen, wie beschrieben. Die Steuerung 104 kann dazu eingerichtet sein, eine letzte gute Seite für jede Speicherebene jedes der Vielzahl von Speicherchips 110-1 bis 110-N zu finden. Zum Beispiel findet die Steuerung 104 eine letzte gute Seite eines Speicherblocks einer ersten Speicherebene, wie eines der Speicherblöcke 302-1 bis 302-N, der einem ersten Speicherchip 110-1 entspricht. In einigen Ausführungsformen findet die Steuerung die letzte gute Seite des Speicherblocks der ersten Speicherebene, die dem ersten Speicherchip 110-1 entspricht, durch Ausführen einer binären Suche. In einigen Ausführungsformen findet die Steuerung 104 die letzte gute Seite des ersten Speicherblocks der ersten Speicherebene, die dem ersten Speicherchip 110-1 entspricht, unter Verwendung von Seitenkopfinformationen, die in Seitenköpfen jeweiliger Seiten des Speicherblocks gespeichert sind, wie beschrieben.
  • Die Steuerung 104 kann letzte gute Seiten für Speicherblöcke jeder Speicherebene, die dem ersten Speicherchip 110-1 entspricht, unter Verwendung der letzten guten Seite des Speicherblocks der ersten Speicherebene, die dem ersten Speicherchip 110-1 entspricht, und der Delta-Seitenanzahl finden, wie beschrieben. Die Steuerung 104 kann dann die letzten guten Seiten für die Speicherblöcke jeder Speicherebene, die dem ersten Speicherchip 110-1 entspricht, und die Delta-Seitenanzahl verwenden, um letzte gute Seiten von Speicherblöcken jeder Speicherebene zu finden, die jeweiligen der Speicherchips 110-2 bis 110-N entspricht, wie beschrieben.
  • In einigen Ausführungsformen kann die Steuerung 104 die hierin beschriebenen Verfahren durchführen. Die hierin beschriebenen Verfahren, wie durch die Steuerung 104 beschrieben, sind jedoch nicht einschränkend gemeint, und jede Art von Software, die auf einer Steuerung ausgeführt wird, kann die hier beschriebenen Verfahren durchführen, ohne von dem Schutzumfang dieser Offenbarung abzuweichen. Zum Beispiel kann eine Steuerung wie ein Prozessor, der Software in dem Host 106 oder Firmware in dem Speichersystem 102 (z. B. im ROM 232 oder NVM-Speicherblock 110 gespeichert) ausführt, die hierin beschriebenen Verfahren durchführen.
  • 5 veranschaulicht allgemein ein Ablaufdiagramm, das ein Verfahren zum Finden der letzten guten Seite 500 gemäß den Prinzipien der vorliegenden Offenbarung veranschaulicht. Bei 502 bestimmt das Verfahren 500 eine Anzahl an Schreibvorgängen in einer Warteschlange auf einer aktuellen Seite. Wie beschrieben, ruft die Steuerung 104 Informationen aus dem persistenten Speicher ab, um den letzten Speicherblock des Speicherungssystems 102 zu bestimmen, der vor einem UGSD zu programmieren ist (z. B. wie den Speicherblock 302-1). Die Steuerung 104 greift dann auf eine erste Seite des Speicherblocks (z. B. des Speicherblocks 302-2) zu, der auf den letzten zu programmierenden Speicherblock folgt. Die Steuerung 104 bestimmt die Anzahl an Schreibvorgängen in der Warteschlange der ersten Seite unter Verwendung der in dem Seitenkopf der ersten Seite gespeicherten Seitenkopfinformation.
  • Bei 504 bestimmt das Verfahren 500, ob die Anzahl an Schreibvorgängen in der Warteschlange auf der aktuellen Seite über dem Schwellenwert liegt. Wie beschrieben, bestimmt die Steuerung 104, ob die Anzahl an Schreibvorgängen in der Warteschlange auf der ersten Seite über dem Schwellenwert liegt. Wenn die Steuerung 104 bestimmt, dass die Anzahl an Schreibvorgängen in der Warteschlange auf der ersten Seite nicht über dem Schwellenwert liegt, fährt das Verfahren 500 bei 506 fort. Wenn die Steuerung 104 bestimmt, dass die Anzahl an Schreibvorgängen in der Warteschlange auf der ersten Seite über dem Schwellenwert liegt, fährt das Verfahren 500 bei 514 fort.
  • Bei 506 bestimmt das Verfahren 500, ob die Anzahl an Schreibvorgängen der Warteschlange auf der aktuellen Seite 0 ist. Wie beschrieben, bestimmt die Steuerung 104, ob die Anzahl an Schreibvorgängen der Warteschlange auf der ersten Seite 0 ist. Wenn die Steuerung 104 bestimmt, dass die Anzahl an Schreibvorgängen der Warteschlange auf der ersten Seite nicht 0 ist, fährt das Verfahren 500 bei 508 fort. Wenn die Steuerung 104 bestimmt, dass die Anzahl an Schreibvorgängen der Warteschlange auf der ersten Seite 0 ist, fährt das Verfahren 500 bei 510 fort.
  • Bei 508 identifiziert das Verfahren 500 eine letzte gute Seite unter Verwendung einer binären Suche. Wie beschrieben, identifiziert die Steuerung 104 die letzte gute Seite des ersten Speicherblocks durch Ausführen einer binären Suche zwischen der ersten Speicheradresse des Speicherblocks 302-2 und der Speicheradresse, die der ersten Seite des Speicherblocks 302-2 entspricht.
  • Bei 510 bestimmt das Verfahren 500, ob die Seite, die auf die aktuelle Seite folgt, leer ist. Wie beschrieben, bestimmt die Steuerung 104, ob die auf die erste Seite folgende Seite leer ist. Wenn die Steuerung 104 bestimmt, dass die Seite, die auf die erste Seite folgt, leer ist, fährt das Verfahren 500 bei 512 fort. Wenn die Steuerung 104 bestimmt, dass die Seite, die auf die erste Seite folgt, nicht leer ist, fährt das Verfahren bei 518 fort.
  • Bei 512 identifiziert das Verfahren 500 die aktuelle Seite als die letzte gute Seite. Wie beschrieben, identifiziert die Steuerung 104 die erste Seite als die letzte gute Seite des Speicherblocks 302-2. Die Steuerung 104 kann mit dem Programmieren auf der Seite, die auf die letzte gute Seite folgt, gemäß von dem Host 106 empfangenen Befehlen fortfahren.
  • Bei 514 springt das Verfahren 500 unter Verwendung der Anzahl an Schreibvorgängen auf eine Seite. Wie beschrieben, kann die Steuerung 104 auf eine zweite Seite des Speicherblocks 302-2 zugreifen. Die Anzahl an Speicheradressen zwischen der ersten Seite und der zweiten Seite entspricht der Anzahl an Schreibvorgängen in der Warteschlange auf der ersten Seite. Bei 516 bestimmt das Verfahren, ob die Seite leer ist. Wie beschrieben, bestimmt die Steuerung 104, ob die zweite Seite leer ist. Wenn die Steuerung 104 bestimmt, dass die zweite Seite leer ist, fährt das Verfahren 500 bei 508 fort. Wenn die Steuerung 104 bestimmt, dass die zweite Seite nicht leer ist, fährt das Verfahren 500 bei 518 fort.
  • Bei 518 bestimmt das Verfahren 500, ob die Seite die letzte Seite in dem Speicherblock ist. Wie beschrieben, bestimmt die Steuerung 104, ob die zweite Seite die letzte Seite des Speicherblocks 302-2 ist. Wenn die Steuerung 104 bestimmt, dass die zweite Seite nicht die letzte Seite des Speicherblocks 302-2 ist, fährt das Verfahren 500 bei 502 fort. Wenn die Steuerung 104 bestimmt, dass die zweite Seite die letzte Seite in dem Speicherblock 302-2 ist, fährt das Verfahren 500 bei 520 fort. Bei 520 speichert das Verfahren 500 Informationen, die angeben, dass der Speicherblock vollständig programmiert ist. Wie beschrieben, aktualisiert die Steuerung 104 die in dem persistenten Speicher gespeicherten Informationen, die angeben, dass das Programmieren des Speicherblocks 302-2 abgeschlossen ist. Die Steuerung 104 kann mit dem Programmieren anderer Speicherblöcke gemäß den von dem Host 106 empfangenen Befehlen fortfahren.
  • 6 veranschaulicht allgemein ein Ablaufdiagramm, das ein alternatives Verfahren zum Finden der letzten guten Seite 600 gemäß den Prinzipien der vorliegenden Offenbarung veranschaulicht. Bei 602 identifiziert das Verfahren 600 eine letzte gute Seite einer Speicherebene. Wie beschrieben, kann das Speicherungssystem 102 eine Vielzahl von Speicherebenen einschließen. Die Steuerung 104 identifiziert eine letzte gute Seite für einen Speicherblock einer ersten Speicherebene (z. B. unter Verwendung einer binären Suche und/oder unter Verwendung von Seitenkopfinformationen, wie beschrieben). Bei 604 bestimmt das Verfahren 600, ob die Speicherebenen parallel programmiert werden. Wenn die Speicherebenen unabhängig programmiert werden, fährt das Verfahren 600 bei 606 fort. Wenn die Speicherebenen parallel programmiert werden, fährt das Verfahren 600 bei 610 fort.
  • Bei 606 bestimmt das Verfahren 600, ob die Speicherebene die letzte Speicherebene in dem Speicherchip ist. Wie beschrieben, bestimmt die Steuerung 104, ob die erste Speicherebene die letzte Speicherebene in einem entsprechenden Speicherchip ist, wie dem Speicherchip 110-1. Wenn die Steuerung 104 bestimmt, dass die erste Speicherebene nicht die letzte Speicherebene in dem Speicherchip 110-1 ist, fährt das Verfahren 600 bei 602 fort. Wenn die Steuerung 104 bestimmt, dass die erste Speicherebene die letzte Speicherebene in dem Speicherchip 110-1 ist, fährt das Verfahren bei 608 fort. Bei 608 fährt das Verfahren 600 mit dem nächsten Speicherchip fort. Wie beschrieben, kann das Speicherungssystem 102 eine Vielzahl von Speicherchips 110-1 bis 110-N einschließen. Dementsprechend kann die Steuerung 104 mit dem Finden einer letzten guten Seite für andere Speicherchips 110-2 bis 110-N fortfahren, wie beschrieben.
  • Bei 610 identifiziert das Verfahren 600 eine letzte gute Seite für eine nachfolgende Speicherebene unter Verwendung einer Delta-Seitenanzahl. Wie beschrieben, findet die Steuerung 104 eine letzte gute Seite für eine zweite Speicherebene unter Verwendung der letzten guten Seite für die erste Speicherebene und der Delta-Seitenanzahl. Bei 612 bestimmt das Verfahren 600, ob die nachfolgende Speicherebene die letzte Speicherebene in dem Speicherchip ist. Wie beschrieben, bestimmt die Steuerung 104, ob die zweite Speicherebene die letzte Speicherebene in dem Speicherchip 110-1 ist. Wenn die Steuerung 104 bestimmt, dass die zweite Speicherebene nicht die letzte Speicherebene in dem Speicherchip 110-1 ist, fährt das Verfahren 600 bei 610 fort. Wenn die Steuerung 104 bestimmt, dass die zweite Speicherebene die letzte Speicherebene in dem Speicherchip 110-1 ist, fährt das Verfahren 600 bei 608 fort.
  • 7 veranschaulicht allgemein ein Ablaufdiagramm, das ein alternatives Verfahren zum Finden der letzten guten Seite 700 gemäß den Prinzipien der vorliegenden Offenbarung veranschaulicht. Bei 702 identifiziert das Verfahren 700 eine letzte gute Seite eines Speicherchips. Wie beschrieben, kann das Speicherungssystem 102 eine Vielzahl von Speicherchips 110-1 bis 110-N einschließen. Die Steuerung 104 identifiziert eine letzte gute Seite für einen Speicherblock eines ersten Speicherchips 110-1 (z. B. unter Verwendung einer binären Suche und/oder unter Verwendung von Seitenkopfinformationen, wie beschrieben). Bei 704 bestimmt das Verfahren 700, ob die Speicherchips parallel programmiert werden. Wenn die Speicherchips 110-1 bis 110-N unabhängig programmiert werden, fährt das Verfahren 700 bei 706 fort. Wenn die Speicherchips 110-1 bis 110-N parallel programmiert werden, fährt das Verfahren 700 bei 710 fort.
  • Bei 706 bestimmt das Verfahren 700, ob der Speicherchip der letzte Speicherchip in dem Speichersystem ist. Wie beschrieben, bestimmt die Steuerung 104, ob der erste Speicherchip 110-1 der letzte Speicherchip in dem Speicherungssystem 102 ist. Wenn die Steuerung 104 bestimmt, dass der erste Speicherchip 110-1 nicht der letzte Speicherchip in dem Speicherungssystem 102 ist, fährt das Verfahren 700 bei 702 fort. Wenn die Steuerung 104 bestimmt, dass der erste Speicherchip 110-1 der letzte Speicherchip in dem Speicherungssystem 102 ist, endet das Verfahren bei 708.
  • Bei 710 identifiziert das Verfahren 700 eine letzte gute Seite für einen nachfolgenden Speicherchip unter Verwendung einer Delta-Seitenanzahl. Wie beschrieben, findet die Steuerung 104 eine letzte gute Seite für einen zweiten Speicherchip 110-2 unter Verwendung der letzten guten Seite für den ersten Speicherchip 110-1 und der Delta-Seitenanzahl. Bei 712 bestimmt das Verfahren 700, ob der nachfolgende Speicherchip der letzte Speicherchip in dem Speichersystem ist. Wie beschrieben, bestimmt die Steuerung 104, ob der zweite Speicherchip 110-2 der letzte Speicherchip in dem Speicherungssystem 102 ist. Wenn die Steuerung 104 bestimmt, dass der zweite Speicherchip 110-2 nicht der letzte Speicherchip in dem Speicherungssystem 102 ist, fährt das Verfahren 700 bei 710 fort. Wenn die Steuerung 104 bestimmt, dass der zweite Speicherchip 110-2 der letzte Speicherchip in dem Speicherungssystem 102 ist, endet das Verfahren 700 bei 708.
  • In einigen Ausführungsformen schließt ein Verfahren zum Finden einer letzten guten Seite in einem Speichersystem das Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem Speicherblock des Speichersystems ein. Das Verfahren schließt auch das Bestimmen ein, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt. Das Verfahren schließt auch das Bestimmen ein, basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, ob eine zweite Seite in dem Speicherblock leer ist. Das Verfahren schließt auch das Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite ein.
  • In einigen Ausführungsformen schließt die erste Seite eine mittlere Seite des Speicherblocks ein. In einigen Ausführungsformen entspricht eine Anzahl an Seiten zwischen der ersten Seite und der zweiten Seite der ersten Anzahl an Schreibvorgängen in der ersten Warteschlange. In einigen Ausführungsformen schließt das Verfahren auch das Bestimmen, basierend auf einer Bestimmung, dass die zweite Seite nicht leer ist, einer zweiten Anzahl an Schreibvorgängen in einer zweiten Warteschlange auf der zweiten Seite ein. In einigen Ausführungsformen schließt das Verfahren auch das Bestimmen ein, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange gleich 0 ist, ob eine Seite, die auf die zweite Seite folgt, leer ist. In einigen Ausführungsformen schließt das Verfahren auch das Bestimmen ein, dass die zweite Seite die letzte gute Seite des Speicherblocks ist, basierend auf einer Bestimmung, dass die Seite, die auf die zweite Seite folgt, leer ist. In einigen Ausführungsformen schließt das Verfahren auch das Bestimmen, basierend auf einer Bestimmung, dass die Seite, die auf die zweite Seite folgt, nicht leer ist, einer dritten Anzahl an Schreibvorgängen in einer dritten Warteschlange auf der Seite, die auf die zweite Seite folgt, ein. In einigen Ausführungsformen schließt das Verfahren auch das Bestimmen ein, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange nicht gleich 0 ist, ob die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange über dem Schwellenwert liegt. In einigen Ausführungsformen schließt das Verfahren auch das Bestimmen, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange über dem Schwellenwert liegt, einer dritten Anzahl an Schreibvorgängen auf einer dritten Seite des Speicherblocks ein. In einigen Ausführungsformen schließt das Verfahren auch das Identifizieren, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange unter dem Schwellenwert liegt, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche ein.
  • In einigen Ausführungsformen ein Speichersystem, das einen nichtflüchtigen Speicher mit einem Array von Speicherblöcken und eine Steuerung in Kommunikation mit den Speicherblöcken einschließt. Die Steuerung ist eingerichtet zum: Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem Speicherblock der Speicherblöcke; Bestimmen, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt; basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, Bestimmen, ob eine zweite Seite in dem Speicherblock leer ist; und Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite.
  • In einigen Ausführungsformen schließt die erste Seite eine mittlere Seite des Speicherblocks ein. In einigen Ausführungsformen entspricht eine Anzahl an Seiten zwischen der ersten Seite und der zweiten Seite der ersten Anzahl an Schreibvorgängen in der ersten Warteschlange. In einigen Ausführungsformen ist die Steuerung weiterhin dazu eingerichtet, basierend auf einer Bestimmung, dass die zweite Seite nicht leer ist, eine zweite Anzahl an Schreibvorgängen in einer zweiten Warteschlange auf der zweiten Seite zu bestimmen. In einigen Ausführungsformen ist die Steuerung weiterhin dazu eingerichtet, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange gleich 0 ist, zu bestimmen, ob eine Seite, die auf die zweite Seite folgt, leer ist. In einigen Ausführungsformen ist die Steuerung weiterhin dazu eingerichtet, basierend auf einer Bestimmung, dass die Seite, die auf die zweite Seite folgt, leer ist, zu bestimmen, dass die zweite Seite die letzte gute Seite des Speicherblocks ist. In einigen Ausführungsformen ist die Steuerung weiterhin dazu eingerichtet, basierend auf einer Bestimmung, dass die Seite, die auf die zweite Seite folgt, nicht leer ist, eine dritte Anzahl an Schreibvorgängen in einer dritten Warteschlange auf der Seite, die auf die zweite Seite folgt, zu bestimmen. In einigen Ausführungsformen ist die Steuerung weiterhin dazu eingerichtet, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange nicht gleich 0 ist, zu bestimmen, ob die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange über dem Schwellenwert liegt. In einigen Ausführungsformen ist die Steuerung weiterhin dazu eingerichtet, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange über dem Schwellenwert liegt, eine dritte Anzahl an Schreibvorgängen auf einer dritten Seite des Speicherblocks zu bestimmen. In einigen Ausführungsformen ist die Steuerung weiterhin dazu eingerichtet, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange unter dem Schwellenwert liegt, die letzte gute Seite in dem Speicherblock unter Verwendung einer binären Suche zu identifizieren.
  • In einigen Ausführungsformen schließt ein Verfahren zum Finden einer letzten guten Seite für jeden Speicherchip in einem Speichersystem mit mehreren Speicherchips das Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem ersten Speicherblock eines ersten Speicherchips ein. Das Verfahren schließt auch das Bestimmen ein, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt. Das Verfahren schließt das Bestimmen ein, basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, ob eine zweite Seite in dem ersten Speicherblock des ersten Speicherchips leer ist. Das Verfahren schließt auch das Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, einer letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite ein. Das Verfahren schließt auch das Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite nicht leer ist, der letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips unter Verwendung einer zweiten Anzahl an Schreibvorgängen in einer zweiten Warteschlange auf der zweiten Seite in dem ersten Speicherblock des ersten Speicherchips ein. Das Verfahren schließt auch das Identifizieren einer letzten guten Seite in einem zweiten Speicherblock eines zweiten Speicherchips unter Verwendung der letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips und einer Delta-Seitenanzahl ein.
  • Die vorstehende Erörterung soll die Prinzipien und die verschiedenen Ausführungsformen der vorliegenden Erfindung veranschaulichen. Zahlreiche Variationen und Modifikationen werden für den Fachmann offensichtlich werden, sobald die obige Offenbarung vollständig verstanden wird. Es ist beabsichtigt, dass die folgenden Ansprüche so zu interpretieren sind, dass sie alle derartigen Variationen und Modifikationen umfassen. In der vorstehenden Beschreibung und in den Ansprüchen werden die Begriffe „einschließlich“ und „umfassend“ in einer offenen Art und Weise verwendet und sollten daher so ausgelegt werden, dass sie „einschließlich, aber nicht beschränkt auf ...“ bedeuten. Außerdem soll der Begriff „koppeln“ oder „koppelt“ entweder eine indirekte oder direkte Verbindung bedeuten. Wenn also eine erste Vorrichtung an eine zweite Vorrichtung koppelt, kann diese Verbindung durch eine direkte Verbindung oder durch eine indirekte Verbindung über andere Vorrichtungen und Verbindungen erfolgen.
  • Das Wort „Beispiel“ wird hierin in der Bedeutung als Beispiel, Fall oder zur Veranschaulichung dienend verwendet. Jeder Gesichtspunkt oder jedes Design, der bzw. das hierin als „Beispiel“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Gesichtspunkten oder Designs zu verstehen. Vielmehr soll die Verwendung des Worts „Beispiel“ dazu dienen, Konzepte auf konkrete Weise darzustellen. Wie in dieser Anwendung verwendet, soll der Begriff „oder“ ein inklusives „oder“ und nicht ein exklusives „oder“ bedeuten. Das heißt, sofern nicht anders angegeben oder aus dem Zusammenhang hervorgeht, soll „X schließt A oder B ein“ eine der natürlichen inklusiven Kombinationen bedeuten. Das heißt, wenn X A einschließt; X B einschließt; oder X sowohl A als auch B einschließt, dann ist „X schließt A oder B ein“ unter einem der vorgenannten Fälle erfüllt. Darüber hinaus sind die Artikel „ein“, „eine“, „einer“ und „eines“, wie sie in dieser Anmeldung verwendet werden, und die beigefügten Ansprüche im Allgemeinen so auszulegen, dass sie „ein/eine/einer/eines oder mehrere“ bedeuten, sofern nicht anders angegeben oder aus dem Zusammenhang ersichtlich ist, dass sie auf eine singuläre Form gerichtet sind. Darüber hinaus ist die Verwendung der Begriffe „eine Implementierung“ durchweg nicht dazu gedacht, die gleiche Ausführungsform oder Implementierung zu bedeuten, es sei denn, sie wird als solche beschrieben.
  • Implementierungen der Systeme, Algorithmen, Verfahren, Anweisungen usw., die hierin beschrieben sind, können in Hardware, Software oder einer beliebigen Kombination davon umgesetzt werden. Die Hardware kann beispielsweise Computer, IP- (geistiges Eigentum) Kerne, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikarrays, optische Prozessoren, programmierbare Logiksteuerungen, Mikrocode, Mikrocontrollers, Server, Mikroprozessoren, Digitalsignalprozessoren oder jegliche andere geeignete Schaltung einschließen. In den Ansprüchen ist der Begriff „Prozessor“ als jegliche der vorstehenden Hardware, entweder einzeln oder in Kombination, umfassend zu verstehen. Die Ausdrücke „Signal“ und „Daten“ werden austauschbar verwendet.
  • 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, Verarbeitungsschaltung, 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. Zum Beispiel kann ein Modul eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine Schaltung, digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder andere Arten von Hardware oder Kombination davon einschließen. In anderen Ausführungsformen kann ein Modul einen Speicher einschließen, der Anweisungen speichert, die durch eine Steuerung zum Implementieren eines Merkmals des Moduls ausführbar sind. In einigen Ausführungsformen ist die Steuerung 104 innerhalb des Hosts 106 implementiert kann mit Hardware und/oder Firmware dazu eingerichtet sein, die verschiedenen, hier beschriebenen Funktionen durchzuführen.
  • „Steuerung“ soll einzelne Schaltungskomponenten, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Mikrocontroller mit Steuersoftware, einen digitalen Signalprozessor (DSP), einen Prozessor mit Steuersoftware, ein Field Programmable Gate Array (FPGA) oder Kombinationen davon bezeichnen.
  • Ferner können, gemäß einem Gesichtspunkt, hierin beschriebene Systeme beispielsweise implementiert werden, indem ein allgemeiner Computer oder allgemeiner Prozessor mit einem Computerprogramm verwendet wird, das, wenn es ausgeführt wird, eine beliebige der jeweiligen Verfahren, Algorithmen und/oder Anweisungen, die hierin beschrieben sind, ausführt. Zusätzlich oder alternativ kann beispielsweise ein Spezialcomputer/-prozessor verwendet werden, der andere Hardware zum Ausführen jeglicher der hierin beschriebenen Verfahren, Algorithmen oder Anweisungen enthalten kann.
  • Ferner können alle oder ein Teil der Implementierungen der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, auf das beispielsweise von einem computerverwendbaren oder computerlesbaren Medium zugegriffen werden kann. Ein computerverwendbares oder computerlesbares Medium kann jede Vorrichtung sein, die zum Beispiel das Programm zur Verwendung durch oder in Verbindung mit einem beliebigen Prozessor greifbar enthalten, speichern, kommunizieren oder transportieren kann. Bei dem Medium kann es sich beispielsweise um eine elektronische, magnetische, optische, elektromagnetische oder eine Halbleitervorrichtung handeln. Andere geeignete Medien sind ebenfalls verfügbar.
  • Die oben beschriebenen Ausführungsformen, Implementierungen und Gesichtspunkte wurden beschrieben, um ein leichtes Verständnis der vorliegenden Erfindung zu ermöglichen, und beschränken nicht die vorliegende Erfindung. Im Gegenteil soll die Erfindung verschiedene Modifikationen und äquivalente Anordnungen abdecken, die im Schutzumfang der beigefügten Ansprüche eingeschlossen sind, wobei dem Schutzumfang die breiteste Interpretation zukommen soll, um alle derartigen Modifikationen und äquivalente Strukturen zu umfassen, wie sie nach dem Gesetz zulässig sind.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/398591 [0001]

Claims (20)

  1. Verfahren zum Finden einer letzten guten Seite in einem Speichersystem, wobei das Verfahren umfasst: Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem Speicherblock des Speichersystems; Bestimmen, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt; basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, Bestimmen, ob eine zweite Seite in dem Speicherblock leer ist; und Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite.
  2. Verfahren gemäß Anspruch 1, wobei die erste Seite eine mittlere Seite des Speicherblocks einschließt.
  3. Verfahren gemäß Anspruch 1, wobei eine Anzahl an Seiten zwischen der ersten Seite und der zweiten Seite der ersten Anzahl an Schreibvorgängen in der ersten Warteschlange entspricht.
  4. Verfahren gemäß Anspruch 1, weiterhin aufweisend das Bestimmen, basierend auf einer Bestimmung, dass die zweite Seite nicht leer ist, einer zweiten Anzahl an Schreibvorgängen in einer zweiten Warteschlange auf der zweiten Seite.
  5. Verfahren gemäß Anspruch 4, weiterhin aufweisend, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange gleich 0 ist, Bestimmen, ob eine Seite, die auf die zweite Seite folgt, leer ist.
  6. Verfahren gemäß Anspruch 5, weiterhin aufweisend das Bestimmen, dass die zweite Seite die letzte gute Seite des Speicherblocks ist, basierend auf einer Bestimmung, dass die Seite, die auf die zweite Seite folgt, leer ist.
  7. Verfahren gemäß Anspruch 5, weiterhin aufweisend das Bestimmen, basierend auf einer Bestimmung, dass die Seite, die auf die zweite Seite folgt, nicht leer ist, einer dritten Anzahl an Schreibvorgängen in einer dritten Warteschlange auf der Seite, die auf die zweite Seite folgt.
  8. Verfahren gemäß Anspruch 4, weiterhin aufweisend, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange nicht gleich 0 ist, Bestimmen, ob die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange über dem Schwellenwert liegt.
  9. Verfahren gemäß Anspruch 8, weiterhin aufweisend das Bestimmen, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange über dem Schwellenwert liegt, einer dritten Anzahl an Schreibvorgängen auf einer dritten Seite des Speicherblocks.
  10. Verfahren gemäß Anspruch 8, weiterhin aufweisend das Identifizieren, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange unter dem Schwellenwert liegt, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche.
  11. Steuerung, aufweisend: eine Busschnittstelle, die dazu eingerichtet ist, eine erste Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem Speicherblock einer Vielzahl von Speicherblöcken zu bestimmen; und einen Prozessor, der eingerichtet ist zum: Bestimmen, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt; basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, Bestimmen, ob eine zweite Seite in dem Speicherblock leer ist; und Identifizieren, basierend auf einer Bestimmung, dass die zweite Seite leer ist, der letzten guten Seite in dem Speicherblock unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite.
  12. Steuerung gemäß Anspruch 11, wobei die erste Seite eine mittlere Seite des Speicherblocks einschließt.
  13. Steuerung gemäß Anspruch 11, wobei eine Anzahl an Seiten zwischen der ersten Seite und der zweiten Seite der ersten Anzahl an Schreibvorgängen in der ersten Warteschlange entspricht.
  14. Steuerung gemäß Anspruch 11, wobei der Prozessor weiterhin dazu eingerichtet ist, basierend auf einer Bestimmung, dass die zweite Seite nicht leer ist, eine zweite Anzahl an Schreibvorgängen in einer zweiten Warteschlange auf der zweiten Seite zu bestimmen.
  15. Steuerung gemäß Anspruch 14, wobei der Prozessor weiterhin dazu eingerichtet ist, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange gleich 0 ist, zu bestimmen, ob eine Seite, die auf die zweite Seite folgt, leer ist.
  16. Steuerung gemäß Anspruch 15, wobei der Prozessor weiterhin eingerichtet ist zum Bestimmen, dass die zweite Seite die letzte gute Seite des Speicherblocks ist, basierend auf einer Bestimmung, dass die Seite, die auf die zweite Seite folgt, leer ist.
  17. Steuerung gemäß Anspruch 15, wobei der Prozessor weiterhin eingerichtet ist zum Bestimmen, basierend auf einer Bestimmung, dass die Seite, die auf die zweite Seite folgt, nicht leer ist, einer dritten Anzahl an Schreibvorgängen in einer dritten Warteschlange auf der Seite, die auf die zweite Seite folgt.
  18. Steuerung gemäß Anspruch 14, wobei der Prozessor weiterhin dazu eingerichtet ist, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange nicht gleich 0 ist, zu bestimmen, ob die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange über dem Schwellenwert liegt.
  19. Steuerung gemäß Anspruch 18, wobei der Prozessor weiterhin dazu eingerichtet ist, basierend auf einer Bestimmung, dass die zweite Anzahl an Schreibvorgängen in der zweiten Warteschlange über dem Schwellenwert liegt, eine dritte Anzahl an Schreibvorgängen auf einer dritten Seite des Speicherblocks zu bestimmen.
  20. Verfahren zum Finden einer letzten guten Seite für jeden Speicherchip in einem Speichersystem mit mehreren Speicherchips, wobei das Verfahren aufweist: Bestimmen einer ersten Anzahl an Schreibvorgängen in einer ersten Warteschlange auf einer ersten Seite in einem ersten Speicherblock eines ersten Speicherchips; Bestimmen, ob die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über einem Schwellenwert liegt; basierend auf einer Bestimmung, dass die erste Anzahl an Schreibvorgängen in der ersten Warteschlange über dem Schwellenwert liegt, Bestimmen, ob eine zweite Seite in dem ersten Speicherblock des ersten Speicherchips leer ist; basierend auf einer Bestimmung, dass die zweite Seite leer ist, Identifizieren einer letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips unter Verwendung einer binären Suche zwischen der ersten Seite und der zweiten Seite; basierend auf einer Bestimmung, dass die zweite Seite nicht leer ist, Identifizieren der letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips unter Verwendung einer zweiten Anzahl an Schreibvorgängen in einer zweiten Warteschlange auf der zweiten Seite in dem ersten Speicherblock des ersten Speicherchips; und Identifizieren einer letzten guten Seite in einem zweiten Speicherblock eines zweiten Speicherchips unter Verwendung der letzten guten Seite in dem ersten Speicherblock des ersten Speicherchips und einer Delta-Seitenanzahl.
DE112019005506.2T 2019-04-30 2019-12-13 Systeme und verfahren zum finden einer letzten guten seite in einem offenen nand-block Pending DE112019005506T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/398,591 2019-04-30
US16/398,591 US11126368B2 (en) 2019-04-30 2019-04-30 Systems and methods for finding a last good page in NAND open block
PCT/US2019/066145 WO2020222878A1 (en) 2019-04-30 2019-12-13 Systems and methods for finding a last good page in nand open block

Publications (1)

Publication Number Publication Date
DE112019005506T5 true DE112019005506T5 (de) 2021-11-18

Family

ID=73016180

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019005506.2T Pending DE112019005506T5 (de) 2019-04-30 2019-12-13 Systeme und verfahren zum finden einer letzten guten seite in einem offenen nand-block

Country Status (3)

Country Link
US (1) US11126368B2 (de)
DE (1) DE112019005506T5 (de)
WO (1) WO2020222878A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210154401A (ko) * 2020-06-12 2021-12-21 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR20220059272A (ko) * 2020-11-02 2022-05-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4987997B2 (ja) * 2010-02-26 2012-08-01 株式会社東芝 メモリシステム
US9037820B2 (en) 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
KR102127284B1 (ko) 2013-07-01 2020-06-26 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 관리 방법
IN2014MU00845A (de) 2014-03-13 2015-09-25 Sandisk Technologies Inc
US9361991B1 (en) 2014-12-23 2016-06-07 Sandisk Technologies Inc. Efficient scanning of nonvolatile memory blocks
US9659619B2 (en) * 2015-05-21 2017-05-23 Sandisk Technologies Llc System and method for memory integrated circuit chip write abort indication
CN106708754B (zh) * 2015-11-13 2020-04-07 慧荣科技股份有限公司 数据储存装置及其数据维护方法
KR102529696B1 (ko) * 2016-07-14 2023-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180041428A (ko) * 2016-10-14 2018-04-24 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그의 동작 방법

Also Published As

Publication number Publication date
US11126368B2 (en) 2021-09-21
WO2020222878A1 (en) 2020-11-05
US20200348880A1 (en) 2020-11-05

Similar Documents

Publication Publication Date Title
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE102009037984A1 (de) Speichervorrichtung für eine Hierarchische Speicherarchitektur
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112020000159T5 (de) Systeme und verfahren zum definieren von speicher-unterblöcken
DE102018123494A1 (de) Speichervorrichtung, die zum aktualisieren einesfeldprogrammierbaren gate-arrays ausgestaltetist, und betriebsverfahren dafür
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels

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