DE202018102304U1 - NAND-Flash-Speichervorrichtung mit NAND-Puffer - Google Patents

NAND-Flash-Speichervorrichtung mit NAND-Puffer Download PDF

Info

Publication number
DE202018102304U1
DE202018102304U1 DE202018102304.7U DE202018102304U DE202018102304U1 DE 202018102304 U1 DE202018102304 U1 DE 202018102304U1 DE 202018102304 U DE202018102304 U DE 202018102304U DE 202018102304 U1 DE202018102304 U1 DE 202018102304U1
Authority
DE
Germany
Prior art keywords
chip
nand flash
write
future
chips
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202018102304.7U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202018102304U1 publication Critical patent/DE202018102304U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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 Networks & Wireless Communication (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

NAND-Flash-Speichervorrichtung, die umfasst:mehrere NAND-Flash-Chips; undeinen Controller, der zu Folgendem ausgelegt ist:Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus);Schreiben der empfangenen Daten auf einen ersten NAND-Flash-Chip der mehreren NAND-Flash-Chips und einen zweiten NAND-Flash-Chip der mehreren NAND-Flash-Chips nacheinander, so dass sich Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen;Empfangen eines Lesebefehls über den E/A-Bus; undals Antwort auf das Empfangen des Lesebefehls, Lesen von Daten von demjenigen des ersten NAND-Flash-Chips oder des zweiten NAND-Flash-Chips, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.

Description

  • Verwandte Anmeldungen
  • Die vorliegende Anmeldung beansprucht den Nutzen und das Prioritätsrecht der vorläufigen US-Patentanmeldung Nr. 62/524016 mit dem Titel „NAND FLASH STORAGE DEVICE WITH NAND BUFFER“, die am 23. Juni 2017 eingereicht worden ist und deren Inhalt hier durch Bezugnahme vollständig mit aufgenommen ist.
  • Durch das Gebrauchsmuster und den Gegenstand des Gebrauchsmusters sollen gemäß den Anforderungen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren geschützt werden. Wenn in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich zur Veranschaulichung der Vorrichtung oder Vorrichtungen, für die mit den beigefügten Ansprüchen Schutz angestrebt wird
  • Hintergrund
  • Speichervorrichtungen, die auf NAND-Flash basieren, haben eine gute durchschnittliche Latenz; allerdings kann die Latenz im schlechtesten Fall, die als „Tail-Latenz“ bezeichnet wird, viel länger sein. Eine besser vorhersagbare Latenz in einer NAND Flash-Speichervorrichtung bereitzustellen, kann in einigen Anwendungen der NAND Flash-Technologie vorteilhaft sein; beispielsweise in auf NAND-Flash basierten Speichervorrichtungen und Auslagerungsvorrichtungen. Eine Auslagerungsvorrichtung kann in einem Computersystem als erweiterter Speicherbereich dienen, der manchmal als Auslagerungsspeicher bezeichnet wird. Die Auslagerungsvorrichtung kann einen Kompromiss zwischen der höheren RAM-Geschwindigkeit und den niedrigeren Kosten alternativer Speicher-/Ablagespeichermedien wie beispielsweise eines Festplattenlaufwerks (HDD) oder eines Festkörperlaufwerks (SSD) darstellen. Eine SSD, die auf NAND-Flash basiert, kann zwar schneller als eine HDD sein, kann jedoch aufgrund der Art und Weise, wie NAND-Flash-Chips arbeiten, an einer unvorhersagbaren Tail-Latenz leiden.
  • Zusammenfassung
  • Mindestens ein Aspekt ist auf eine NAND-Flash-Speichervorrichtung gerichtet. Die NAND-Flash-Speichervorrichtung enthält mehrere NAND-Flash-Chips und einen Controller. Der Controller ist dazu ausgelegt, Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus) zu empfangen. Der Controller ist dazu ausgelegt, die empfangenen Daten nacheinander auf einen ersten NAND-Flash-Chip der mehreren NAND-Flash-Chips und einen zweiten NAND-Flash-Chip der mehreren NAND-Flash-Chips zu schreiben, so dass sich Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen. Der Controller ist dazu ausgelegt, einen Lesebefehl über den E/A-Bus zu empfangen. Der Controller ist dazu ausgelegt, als Antwort auf das Empfangen des Lesebefehls Lesedaten von demjenigen des ersten NAND-Flash-Chips oder des zweiten NAND-Flash-Chips zu lesen, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  • In einigen Implementierungen kann der Controller ferner dazu ausgelegt sein, den ersten NAND-Flash-Chip als einen sekundären Schreibchip, den zweiten NAND-Flash-Chip als einen zukünftigen sekundären Schreibchip, einen dritten NAND-Flash-Chip als einen primären Schreibchip, einen vierten NAND-Flash-Chip als zukünftigen primären Schreibchip und alle verbleibenden NAND-Flash-Chips als nur zum Lesen festzulegen. Der Controller kann dazu ausgelegt sein, die empfangenen Daten nacheinander auf den primären Schreibchip und den sekundären Schreibchip zu schreiben, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen. Der Controller kann dazu ausgelegt sein, gültige Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip zu kopieren. Der Controller kann dazu ausgelegt sein, nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten den ersten NAND-Flash-Chip als nur zum Lesen, den zweiten NAND-Flash-Chip als den sekundären Schreibchip, den dritten NAND-Flash-Chip als den zukünftigen sekundären Schreibchip und den vierten NAND-Flash-Chip als den primären Schreibchip festzulegen.
  • In einigen Implementierungen kann der Controllerferner dazu ausgelegt sein, nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten einen fünften NAND-Flash-Chip als den zukünftigen primären Schreibchip festzulegen. Der Controller kann dazu ausgelegt sein, zweite Daten, die über den E/A-Bus empfangen werden, nacheinander auf den primären Schreibchip und den sekundären Schreibchip zu schreiben, dass sich Schreiboperationen auf jeden Chip nicht zeitlich überlappen. Der Controller kann dazu ausgelegt sein, zweite gültige Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip zu kopieren. Der Controller kann dazu ausgelegt sein, nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten den zweiten NAND-Flash-Chip als nur zum Lesen, den dritten NAND-Flash-Chip als den sekundären Schreibchip, den vierten NAND-Flash-Chip als den zukünftigen sekundären Schreibchip und den fünften NAND-Flash-Chip als den primären Schreibchip festzulegen.
  • In einigen Implementierungen kann die Kopieroperation umfassen: Kopieren der gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip derart, dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen sekundären Schreibchips belegen. Die Kopieroperation kann umfassen: Kopieren der gültigen Daten von dem zukünftigen sekundären Schreibchip zurück zu dem zukünftigen primären Schreibchip derart, dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen primären Schreibchips belegen. Die Kopieroperation kann umfassen: Löschen der Speicherräume des zukünftigen primären Schreibchips und des zukünftigen sekundären Schreibchips, die von dem freien Raum belegt sind.
  • In einigen Implementierungen werden die Schreiboperation und die Kopieroperation während überlappender Zeitspannen durchgeführt
  • Mindestens ein Aspekt ist auf eine NAND-Flash-Speichervorrichtung gerichtet. Die NAND-Flash-Speichervorrichtung umfasst mehrere Puffer-NAND-Flash-Chips, mehrere Speicher-NAND-Flash-Chips und einen Controller. Der Controller ist dazu ausgelegt, eingehende Daten über einen E/A-Bus zu empfangen. Der Controller ist dazu ausgelegt, die empfangenen eingehenden Daten nacheinander in einen ersten Puffer-NAND-Flash-Chip der mehreren Speicher-NAND-Flash-Chips und einen ersten Speicher-NAND-Flash-Chip der mehreren Puffer-NAND-Flash-Chips zu schreiben, so dass sich Schreiboperationen auf jedem NAND-Flash-Chip nicht zeitlich überlappen. Der Controller ist dazu ausgelegt, einen Lesebefehl über den E/A-Bus zu empfangen. Der Controller ist dazu ausgelegt, als Antwort auf das Empfangen des Lesebefehls Daten von demjenigen des ersten Puffer-NAND-Flash-Chips oder des ersten Speicher-NAND-Flash-Chips zu lesen, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  • In einigen Implementierungen kann der Controller dazu ausgelegt sein, den ersten Speicher-NAND-Flash-Chip als einen primären Schreibchip, einen zweiten Speicher-NAND-Flash-Chip als einen primären Schreibchip, den ersten Puffer-NAND-Flash-Chip als einen sekundären Schreibchip, einen zweiten Puffer-NAND-Flash-Chip als zukünftigen sekundären Schreibchip und alle verbleibenden NAND-Flash-Chips als nur zum Lesen festzulegen. Der Controller kann dazu ausgelegt sein, die empfangenen Daten nacheinander auf den primären Schreibchip und den sekundären Schreibchip zu schreiben, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen. Der Controller kann dazu ausgelegt sein, gültige Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip zu kopieren. Der Controller kann dazu ausgelegt sein, nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten den ersten Speicher-NAND-Flash-Chip als nur zum Lesen, den zweiten Speicher-NAND-Flash-Chip als den primären Schreibchip, den ersten Puffer-NAND-Flash-Chip als den zukünftigen sekundären Schreibchip und den zweiten Puffer-NAND-Flash-Chip als den sekundären Schreibchip festzulegen.
  • In einigen Implementierungen kann der Controller dazu ausgelegt sein, nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten einen dritten Speicher-NAND-Flash-Chip als den zukünftigen primären Schreibchip festzulegen. Der Controller kann dazu ausgelegt sein, zweite Daten, die über den E/A-Bus empfangen werden, nacheinander auf den primären Schreibchip und den sekundären Schreibchip zu schreiben, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen. Der Controller kann dazu ausgelegt sein, zweite gültige Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip zu kopieren. Der Controller kann dazu ausgelegt sein, nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten den zweiten Speicher-NAND-Flash-Chip als nur zum Lesen, den dritten Speicher-NAND-Flash-Chip als den primären Schreibchip, den ersten Puffer-NAND-Flash-Chip als den sekundären Schreibchip und den zweiten Puffer-NAND-Flash-Chip als den zukünftigen sekundären Schreibchip festzulegen.
  • In einigen Implementierungen kann die Kopieroperation umfassen: Kopieren der gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen sekundären Schreibchips belegen. Die Kopieroperation kann umfassen: Kopieren der gültigen Daten von dem zukünftigen sekundären Schreibchip zurück zu dem zukünftigen primären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen primären Schreibchips belegen; und Löschen der Speicherräume des zukünftigen primären Schreibchips und des zukünftigen sekundären Schreibchips, die von dem freien Raum belegt sind.
  • In einigen Implementierungen können die Puffer-NAND-Flash-Chips Einniveauzellen-NAND-Flash-Chips (SLC-NAND-Flash-Chips) sein und die Speicher-NAND-Flash-Chips können Dreiniveauzellen-NAND-Flash-Chips (TLC-NAND-Flash-Chips) sein.
  • Mindestens ein Aspekt ist auf ein Verfahren zum Puffern einer NAND-Flash-Speichervorrichtung gerichtet. Das Verfahren umfasst ein Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus). Das Verfahren umfasst: Schreiben der empfangenen Daten auf einen ersten NAND-Flash-Chip der mehreren NAND-Flash-Chips und einen zweiten NAND-Flash-Chip der mehreren NAND-Flash-Chips nacheinander, so dass sich Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen. Das Verfahren umfasst ein Empfangen eines Lesebefehls über den E/A-Bus. Das Verfahren umfasst: als Antwort auf das Empfangen des Lesebefehls, Lesen von Daten von demjenigen des ersten NAND-Flash-Chips oder des zweiten NAND-Flash-Chips, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  • In einigen Implementierungen kann das Verfahren umfassen: Festlegen des ersten NAND-Flash-Chips als eines sekundären Schreibchips, des zweiten NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips, eines dritten NAND-Flash-Chips als eines primären Schreibchips, eines vierten NAND-Flash-Chips als eines zukünftigen primären Schreibchips und aller verbleibenden NAND-Flash-Chips als nur zum Lesen. Das Verfahren kann umfassen: Schreiben der empfangenen Daten auf den primären Schreibchip und den sekundären Schreibchip nacheinander, so dass sich Schreiboperationen auf jeden Chip zeitlich nicht überlappen. Das Verfahren kann umfassen: Kopieren gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip. Das Verfahren kann umfassen: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen des ersten NAND-Flash-Chips als nur zum Lesen, des zweiten NAND-Flash-Chips als des sekundären Schreibchips, des dritten NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des vierten NAND-Flash-Chips als des primären Schreibchips.
  • In einigen Implementierungen kann das Verfahren umfassen: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen eines fünften NAND-Flash-Chips als des zukünftigen primären Schreibchips. Das Verfahren kann umfassen: Schreiben von zweiten Daten, die über den E/A-Bus empfangen werden, nacheinander auf den primären Schreibchip und den sekundären Schreibchip, so dass sich Schreiboperationen auf jeden Chip zeitlich nicht überlappen. Das Verfahren kann umfassen: Kopieren von zweiten gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip. Das Verfahren kann umfassen: nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten, Festlegen des zweiten NAND-Flash-Chips als nur zum Lesen, des dritten NAND-Flash-Chips als des sekundären Schreibchips, des vierten NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des fünften NAND-Flash-Chips als des primären Schreibchips.
  • In einigen Implementierungen kann die Kopieroperation umfassen: Kopieren der gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen sekundären Schreibchips belegen. Die Kopieroperation kann umfassen: Kopieren der gültigen Daten von dem zukünftigen sekundären Schreibchip zurück zu dem zukünftigen primären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen primären Schreibchips belegen. Die Kopieroperation kann umfassen: Löschen der Speicherräume des zukünftigen primären Schreibchips und des zukünftigen sekundären Schreibchips, die von dem freien Raum belegt sind.
  • In einigen Implementierungen werden die Schreiboperation und die Kopieroperation während überlappender Zeitspannen ausgeführt.
  • Mindestens ein Aspekt ist auf ein Verfahren zum Puffern einer NAND-Flash-Speichervorrichtung gerichtet. Das Verfahren umfasst: Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus). Das Verfahren umfasst: Schreiben der empfangenen eingehenden Daten in einen ersten Puffer-NAND-Flash-Chip der mehreren Speicher-NAND-Flash-Chips und einen ersten Speicher-NAND-Flash-Chip der mehreren Puffer-NAND-Flash-Chips nacheinander, so dass sich Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen. Das Verfahren umfasst ein Empfangen eines Lesebefehls über den E/A-Bus. Das Verfahren umfasst: als Antwort auf das Empfangen des Lesebefehls, Lesen von Daten von demjenigen des ersten Puffer-NAND-Flash-Chips oder des ersten Speicher-NAND-Flash-Chips, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  • In einigen Implementierungen umfasst das Verfahren: Festlegen des ersten Speicher-NAND-Flash-Chips als eines primären Schreibchips, eines zweiten Speicher-NAND-Flash-Chip als eines zukünftigen primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als eines sekundären Schreibchips, eines zweiten Puffer-NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips und aller verbleibenden NAND-Flash-Chips als nur zum Lesen. Das Verfahren umfasst: Schreiben der empfangenen Daten auf den primären Schreibchip und den sekundären Schreibchip nacheinander, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen. Das Verfahren umfasst: Kopieren gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip. Das Verfahren umfasst: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen des ersten Speicher-NAND-Flash-Chips als nur zum Lesen, des zweiten Speicher-NAND-Flash-Chips als des primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des zweiten Puffer-NAND-Flash-Chips als des sekundären Schreibchips.
  • In einigen Implementierungen umfasst das Verfahren: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen eines dritten Speicher-NAND-Flash-Chips als des zukünftigen primären Schreibchips. Das Verfahren umfasst: Schreiben von zweiten Daten, die über den E/A-Bus empfangen werden, auf den primären Schreibchip und den sekundären Schreibchip nacheinander, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen. Das Verfahren umfasst: Kopieren zweiter gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip. Das Verfahren umfasst: nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten, Festlegen des zweiten Speicher-NAND-Flash-Chips als nur zum Lesen, des dritten Speicher-NAND-Flash-Chips als des primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als des sekundären Schreibchips und des zweiten Puffer-NAND-Flash-Chips als des zukünftigen sekundären Schreibchips.
  • In einigen Implementierungen umfasst das Verfahren: Kopieren der gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen sekundären Schreibchips belegen. Das Verfahren umfasst: Kopieren der gültigen Daten von dem zukünftigen sekundären Schreibchip zurück zu dem zukünftigen primären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen primären Schreibchips belegen. Das Verfahren umfasst: Löschen der Speicherräume des zukünftigen primären Schreibchips und des zukünftigen sekundären Schreibchips, die von dem freien Raum belegt sind.
  • In einigen Implementierungen können die Puffer-NAND-Flash-Chips Einniveauzellen-NAND-Flash-Chips (SLC-NAND-Flash-Chips) sein und die Speicher-NAND-Flash-Chips können Dreiniveauzellen-NAND-Flash-Chips (TLC-NAND-Flash-Chips) sein.
  • Diese und andere Aspekte und Implementierungen sind nachfolgend im Einzelnen erörtert. Die vorstehenden Informationen und die folgende genaue Beschreibung enthalten veranschaulichende Beispiele verschiedener Aspekte und Implementierungen und stellen einen Überblick oder Rahmen zum Verständnis der Natur und des Charakters der beanspruchten Aspekte und Implementierungen dar. Die Zeichnungen bieten eine Veranschaulichung und ein weitergehendes Verständnis der verschiedenen Aspekte und Implementierungen und sind in diese Beschreibung einbezogen und bilden einen Teil davon.
  • Figurenliste
  • Die beigefügten Zeichnungen sollen nicht maßstabsgetreu gezeichnet sein. Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente. Der Klarheit halber ist vielleicht nicht jede Komponente in jeder Zeichnung gekennzeichnet. In den Zeichnungen:
    • 1 ist ein Blockdiagramm eines beispielhaften Computersystems, das eine NAND-Flash-Speichervorrichtung mit einem NAND-Puffer umfasst, gemäß einer veranschaulichenden Implementierung;
    • 2 ist ein Blockdiagramm einer beispielhaften NAND-Flash-Speichervorrichtung mit einem NAND-Puffer gemäß einer veranschaulichenden Implementierung;
    • 3 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren des Verwendens einer NAND-Flash-Speichervorrichtung mit einem NAND-Puffer gemäß einer veranschaulichenden Implementierung zeigt;
    • 4 ist ein Blockdiagramm einer beispielhaften NAND-Flash-Speichervorrichtung mit einem NAND-Puffer und zusätzlichem NAND-Speicher gemäß einer veranschaulichenden Implementierung;
    • 5 zeigt beispielhaften Operationen einer beispielhaften NAND-Flash-Speichervorrichtung mit einem NAND-Puffer und zusätzlichem NAND-Speicher gemäß einer veranschaulichenden Implementierung;
    • 6 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren des Verwendens einer NAND-Flash-Speichervorrichtung mit einem NAND-Puffer und zusätzlichem NAND-Speicher gemäß einer veranschaulichenden Implementierung zeigt;
    • 7 ist ein Blockdiagramm einer beispielhaften NAND-Flash-Speichervorrichtung mit einem NAND-Puffer für einen Abnutzungsausgleich gemäß einer veranschaulichenden Implementierung;
    • 8 zeigt beispielhafte Operationen einer beispielhaften NAND-Flash-Speichervorrichtung mit einem NAND-Puffer für einen Abnutzungsausgleich gemäß einer veranschaulichenden Implementierung; und
    • 9 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren des Verwendens einer NAND-Flash-Speichervorrichtung mit einem rotierenden NAND-Puffer für einen Abnutzungsausgleich gemäß einer veranschaulichenden Implementierung zeigt.
  • Genaue Beschreibung
  • Nachstehend folgen Beschreibungen verschiedener Konzepte und Implementierungen, die sich auf eine NAND-Flash-Speichervorrichtung von vorhersagbarer Latenz mit einem NAND-Puffer und Verfahren zum Verwenden derselben beziehen. Die verschiedenen Konzepte, die oben eingeführt und unten genauer erörtert sind, können auf viele verschiedene Arten implementiert werden, da die beschriebenen Konzepte nicht auf eine bestimmte Weise der Implementierung beschränkt sind. Beispiele bestimmter Implementierungen und Anwendungen sind primär zu Anschauungszwecken gegeben.
  • Die Offenbarung bezieht sich im Allgemeinen auf eine NAND-Flash-Speichervorrichtung von vorhersagbarer Latenz mit einem NAND-Puffer. Die Speichervorrichtung kann ein Festkörperlaufwerk (SSD) oder eine Auslagerungsvorrichtung sein. Eine Auslagerungsvorrichtung ist eine sekundäre Speichervorrichtung, die als eine Erweiterung des Speichers mit wahlfreiem Zugriff (RAM) fungieren kann. Wenn die Datenmenge, die in dem Speicher gehalten werden soll, die Kapazität des RAM überschreitet, können einige der Daten in einer Operation, die manchmal „Paging“ (Seitenverwaltung) genannt wird, auf die Auslagerungsvorrichtung verschoben werden. Herkömmlicherweise könnte die sekundäre Vorrichtung ein Festplattenlaufwerk (HDD) sein. Lesen und Schreiben von Daten aus einem HDD ist im Vergleich zu RAM sehr langsam, was allerdings eine HDD als eine Auslagerungsvorrichtung unter Umständen, unter denen die Abrufgeschwindigkeit wichtig ist, unpraktisch macht. Aktuellere SSDs, insbesondere SSDs auf NAND-Flash-Basis, weisen, obwohl sie immer noch langsamer sind als RAM, im Vergleich mit HDDs schnellere Abrufzeiten auf. NAND-SSDs sind tendenziell zudem weniger teuer als RAM und somit kann ein Reduzieren der RAM-Kapazität zugunsten der SSD-Kapazität zu Kosteneinsparungen führen. Jüngst entwickelte NAND niedriger Latenz (LLNAND) wie etwa Samsungs Z-NAND sind mit speziellen Schaltungen entworfen, die ihre typische Leselatenz verbessern. LLNAND-basierte SSDs sind sogar noch schneller und sind somit für Paging und andere temporäre Datenspeicherung in einigen Serveranwendungen praktisch.
  • NAND-Flash-SSDs weisen allerdings andere Nachteile auf. Obwohl NAND-Lesezeiten sehr schnell sind, in der Größenordnung von Dutzenden von Mikrosekunden, sind Lösch- und Schreiboperationen viel langsamer, jeweils in der Größenordnung von Millisekunden. Und weil ein NAND-Flash-Chip eine Leseoperation und eine Schreiboperation nicht zur gleichen Zeit ausführen kann, kann eine hinter einer Lösch-/Schreiboperation eingereihte Leseoperation einen Latenzanstieg von etwa zwei oder drei Größenordnungen im Vergleich zum Normalfall zeigen. Dies wird „Tail-Latenz“ genannt. Obwohl es möglich ist, Daten im RAM für das Schreiben auf einen NAND-Flash-Chip zu puffern, kann der Mehraufwand untragbar sein. Zum Beispiel wird eine Vorrichtung mit zehn NAND-Flash-Chips so viel RAM wie ein Zehntel der gesamten NAND-Kapazität als Puffer benötigen. Da DRAM viermal so teuer wie NAND-Speicher sein kann, kann der Kostenmehraufwand 40 % betragen.
  • Diese Offenbarung schlägt daher vor, einen NAND-Puffer einzusetzen, um die Tail-Latenz bei niedrigerem Kostenmehraufwand als dem eines RAM-Puffers zu verbessern. Das System arbeitet durch Schreiben jeder Seite von Chips auf zwei Chips in Folge: zuerst auf einen ersten Chip und dann auf einen zweiten Chip. Der zweite Chip kann als ein NAND-Puffer betrachtet werden. Die Schreiboperationen überlappen sich zeitlich nicht. Leseoperationen können durch den Chip ausgeführt werden, der gerade keine Schreiboperation ausführt. Somit müssen die Leseoperationen nicht hinter den Schreiboperationen eingereiht werden, was es ermöglicht, dass die NAND-Flash-Speichervorrichtung eine vorhersagbarere Latenz aufweist.
  • In einigen Implementierungen werden der erste Chip (und damit auch der zweite Chip) gefüllt und zwei neue Chips werden als Schreibpuffer gewählt. Der erste Chip kann auf nur zum Lesen geschaltet werden und, weil der erste Chip Leseoperationen ohne Unterbrechungen durch die Schreiboperationen durchführen kann, ist das Kopieren der in dem zweiten Chip gespeicherten Daten nicht länger notwendig. Der zweite Chip ist nun frei für zukünftige primäre Schreiboperationen. Zwei neue Chips, ein dritter Chip und ein vierter Chip, können zum Schreiben ausgewählt werden. In diesem Fall kann der vierte Chip als ein NAND-Puffer betrachtet werden.
  • Damit ein solches System funktioniert, ist es hilfreich, wenn die zwei neuen Chips, die zum Schreiben ausgewählt sind, duplizierte Daten enthalten. Dementsprechend können vor dem Empfangen neuer Daten die bestehenden Daten auf dem dritten Chip zuerst auf den vierten Chip kopiert werden. Die Kopieroperation beinhaltet eine „Speicherbereinigung“, d. h. eine Operation, die Speichervorrichtungen durchführen, um Raum freizugeben, der durch Daten, die ungültig gemacht worden sind (nicht länger in Verwendung sind), besetzt ist. Die Speicherbereinigung kann zeitaufwendig sein und kann wie Lösch-/Schreiboperationen bis zu ihrem Abschluss verhindern, dass Leseoperationen ausgeführt werden. Daher werden die Speicherbereinigungs- und Kopieroperationen so ausgeführt, dass anfangs nur auf den vierten Chip geschrieben wird und der dritte Chip zum Lesen verfügbar ist. Später wird die als Speicherbereinigungsversion von dem vierten Chip zurück auf den dritten Chip kopiert, so dass der vierte Chip zum Lesen verfügbar ist. Ferner überlappen sich die Speicherbereinigungs- und Kopieroperationen zwischen dem dritten und vierten Chip zeitlich mit dem Schreiben auf den ersten und zweiten Chip. Solange die Speicherbereinigungs- und Kopieroperationen weniger Zeit als die Schreiboperationen brauchen, werden der dritte und vierte Chip dazu bereit sein, die Ausführung der Schreiboperationen zu übernehmen, wenn der erste und zweite Chip gefüllt sind. Ein neues Paar Chips wird dann für die Speicherbereinigungs- und Kopieroperation ausgewählt.
  • In einem solchen System enthalten zu jeder Zeit zwei Pufferchips ein Duplikat der Daten in zwei anderen Chips. Dementsprechend kann eine Vorrichtung mit zehn NAND-Flash-Chips zur Speicherung zwei zusätzliche NAND-Flash-Puffer-Chips aufweisen. Der Kostenmehraufwand wird somit 20 % betragen, was der Hälfte des Kostenmehraufwands bei der Verwendung eines DRAM-Puffers entspricht.
  • Zusätzliche Puffer-NAND-Flash-Chips können eingesetzt werden, um die Schreibbandbreite der NAND-Flash-Speichervorrichtung zu verbessern. Die Schreibbandbreite einer NAND-Flash-Speichervorrichtung bezieht sich auf die Datenmenge, die die NAND-Flash-Speichervorrichtung in einer gegebenen Zeitdauer empfangen und speichern kann. In einigen Fällen kann die Schreibbandbreite einer NAND-Flash-Speichervorrichtung durch die Zeit, die zum Schreiben von Daten auf einen bestimmten NAND-Flash-Chip benötigt wird, eingeschränkt sein. Daher kann die Bandbreite durch Hinzufügen von mehr Puffer-NAND-Flash-Chips und Verteilen der Schreiboperationen unter diesen erhöht werden. Dementsprechend kann die NAND-Flash-Speichervorrichtung in einigen Implementierungen zusätzliche Puffer-Chips (d. h. 4, 6, 8 oder mehr) umfassen, um die Schreibbandbreite zu verbessern.
  • In einigen Implementierungen kann die NAND-Flash-Speichervorrichtung einen Abnutzungsausgleich verwenden. Ein NAND-Flash-Chip kann nur eine begrenzte Anzahl von Schreiboperationen durchführen, bevor er übermäßige Bitfehler zeigt. Letztlich wird der NAND-Flash-Chip nach dem Durchführen vieler Schreiboperationen abnutzen und beginnen, auszufallen. Um das Leben der NAND-Flash-Speichervorrichtung zu verlängern, kann die NAND-Flash-Speichervorrichtung rotieren, welche NAND-Flash-Chips als Puffer-Chips für Schreiboperationen festgelegt werden. Die Festlegung kann rotiert werden, um die Abnutzung unter einigen oder allen der NAND-Flash-Chips in der Vorrichtung gleich zu verteilen oder im Wesentlichen gleich zu verteilen, anstatt die der Puffer-Schreiboperationen auf eine kleine Anzahl von Chips zu konzentrieren. Auf diese Weise kann die Abnutzung über viele NAND-Flash-Chips der Vorrichtung verteilt oder „ausgeglichen“ werden.
  • 1 ist ein Blockdiagramm eines beispielhaften Computersystems 100, das eine NAND-Flash-Speichervorrichtung mit einem NAND-Puffer umfasst, gemäß einer veranschaulichenden Implementierung. Das System 100 kann eine Rechenvorrichtung sein; beispielsweise und ohne Einschränkung darauf eine persönliche Rechenvorrichtung wie etwa ein Laptop oder Desktop-Computer, eine gemeinsam genutzte Rechenvorrichtung wie etwa ein Server oder Großrechner oder eine Komponente der vorgenannten oder einer anderen Rechenvorrichtung. Das System 100 umfasst einen Prozessor wie etwa eine zentrale Verarbeitungseinheit (CPU) 110, einen RAM 120 wie etwa einen DRAM, einen Eingabe/Ausgabe-Bus (E/A-Bus) 130 wie etwa eine Express-Peripheriekomponentenzwischenverbindung (PCIe), eine Datenspeichervorrichtung 140 wie etwa ein Festplattenlaufwerk (HDD) oder ein Festkörperlaufwerk (SDD) zur Langzeitdatenspeicherung, und eine NAND-Flash-Speichervorrichtung 150. Der RAM 120 kann ein Hauptspeicher sein und die CPU kann auf diesen direkt beispielsweise über einen Adressbus, der eine Speicheradresse des gewünschten Ortes führt, und einen Datenbus, der zum Lesen oder Schreiben von Daten von/an der spezifizierten Speicheradresse verwendet wird, zugreifen.
  • In einigen Implementierungen kann die NAND-Flash-Speichervorrichtung 150 eine Auslagerungsvorrichtung sein, die für das System 100 einen Auslagerungsraum bereitstellt. In einigen Rechenumgebungen kann der Kernel oder das Betriebssystem eine Speicher-/Ablagespeicherabstraktion wie etwa einen virtuellen Speicher verwenden, der Anwendungen, die auf der CPU 110 ausgeführt werden, einen transparenten und konsistenten Zugriff auf ein oder mehrere Speichervorrichtungen bietet, die sich in Art und Ort unterscheiden können. Zum Beispiel kann virtueller Speicher ermöglichen, dass Anwendungen, die auf der CPU 110 ausgeführt werden, auf einen erweiterten Speicherraum zugreifen. Der erweiterte Speicherraum kann die Kapazität des RAM 120 übersteigen. Wenn die im Speicher zu speichernden Daten die Kapazität des RAM 120 übersteigen, kann die virtuelle Speicherfunktion ein Paging durchführen, mit dem das System 100 Daten in einer sekundären Speichervorrichtung wie etwa einer HDD oder SSD speichern kann. Dieser erweiterte Speicherbereich kann als Auslagerungsspeicher bezeichnet werden und die Speichervorrichtung, die den Auslagerungsspeicher bereitstellt, kann als Auslagerungsvorrichtung bezeichnet werden.
  • Verschiedene Arten von Speicher- und Ablagespeichervorrichtungen können hinsichtlich der Zugriffsgeschwindigkeit stark variieren, wobei RAM im Allgemeinen viel schneller ist als HDDs und NAND-Flash in die Mitte fällt. Die langsamen Zugriffszeiten von HDDs machen sie für Anwendungen, die einen schnellen Zugriff auf Daten erfordern, unpraktisch. NAND-Flash-Speichervorrichtungen sind viel schneller als HDDs und werden daher für eine breitere Palette von Anwendungen nützlich. NAND-Flash-Speichervorrichtungen haben den zusätzlichen Vorteil, dass sie weniger teuer sind als einige übliche Arten von RAM wie etwa DRAM. Neuere NAND-Typen wie NAND mit niedriger Latenz (LLNAND) können sogar noch schneller sein und eine Latenzzeit für Leseoperationen von etwa 10 µs gegenüber etwa 70 µs für reguläres NAND aufweisen. LLNANDs weisen auch eine geringere Latenz für Programmieroperationen (Schreiboperationen) auf; d. h. 100-200 µs gegenüber einigen Millisekunden für reguläres NAND. Eine Schreiboperation beinhaltet jedoch im Allgemeinen sowohl eine Programmieroperation als auch eine Löschoperation. LLNANDs können immer noch unter langsamen Löschzeiten leiden, die in der Größenordnung von 5 ms liegen können. Als eine zusätzliche Herausforderung kann ein NAND-Flash-Chip im Allgemeinen jeweils nur eine Operation gleichzeitig ausführen. Wenn beispielsweise ein NAND-Flash-Chip eine Lösch-/Programmiersequenz einer Schreiboperation ausführt, werden alle eingehenden Lesebefehle bis zum Abschluss eingereiht. Daher können einige Leseoperationen trotz einer nominalen Latenz von einigen Mikrosekunden bis zu mehreren Millisekunden benötigen. Diese Ausreißerlatenzen werden als „Tail-Latenz“ bezeichnet. Sowohl die Dauer als auch die Unvorhersehbarkeit dieser Tail-Latenz kann bei Verwendung von NAND-Flash Schwierigkeiten bereiten. Einige Systeme können RAM verwenden, um den Inhalt eines NAND-Flash-Chips, in den geschrieben wird, zu speichern, so dass der RAM die Leseoperation durchführen kann, während der NAND-Flash-Chip Schreiboperationen ausführt - siehe beispielsweise die US-Patentanmeldung 14/936486 . Da RAM teurer sein kann als NAND-Flash, fügt der RAM jedoch einen Kostenmehraufwand hinzu, der für einige Anwendungen inakzeptabel sein kann. Daher schlägt diese Offenbarung vor, einen oder mehrere zusätzliche NAND-Flash-Chips bereitzustellen, um einen Cache für Daten bereitzustellen, die sich in NAND-Flash-Chips befinden, die Schreiboperationen ausführen. Ein auf NAND-Flash basierter Puffer ist nachstehend unter Bezugnahme auf 2 ausführlicher beschrieben.
  • 2 ist ein Blockdiagramm einer beispielhaften NAND-Flash-Speichervorrichtung 250 mit einem NAND-Puffer gemäß einer veranschaulichenden Implementierung. Die NAND-Flash-Speichervorrichtung 250 kann als die NAND-Flash-Speichervorrichtung 150 dienen. Um eine mit Leseoperationen, die hinter Schreiboperationen eingereiht sind, verbundene Latenz zu vermeiden, kann die NAND-Flash-Speichervorrichtung 250 eine Doppelpufferung unter Verwendung von zwei NAND-Flash-Chips 270a und 270b (gemeinsam „NAND-Flash-Chips 270“) verwenden. Ein Controller 260 kann Speicherzugriffsbefehle handhaben, die über den E/A-Bus 230 empfangen werden. Der Controller 260 kann programmierbare Logik wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), eine feldprogrammierbare Gatteranordnung (FPGA), einen Mikrocontroller oder einen Mikroprozessor aufweisen. Der Controller 260 kann einstückig mit der der NAND-Flash-Speichervorrichtung 250 sein oder außerhalb davon sein. Der Controller 260 kann Lese- und Schreiboperationen der NAND-Flash-Speichervorrichtung 250 derart orchestrieren, dass die CPU 110 die Pufferungsoperationen der NAND-Flash-Speichervorrichtung 250 nicht wahrnehmen oder selbst ausführen muss. Alternativ ist es möglich, einen einfacheren Controller zu entwerfen, der sich auf die CPU 110 stützt, um die Operationen zu orchestrieren, während der Controller die Arbeit auf niedrigerer Ebene zum Abschließen jeder Operation durchführt. Dementsprechend ist der Controller 260 dazu ausgelegt, Daten und/oder Befehle über den E/A-Bus 23 0 zu empfangen und die empfangenen Daten zuerst auf einen der NAND-Flash-Chips 270 und dann auf einen zweiten der NAND-Flash-Chips 270 zu schreiben. Der Controller 260 führt die Schreiboperationen nacheinander - entweder autonom oder unter Anweisung der CPU 110 - so aus, dass sie sich zeitlich nicht überlappen; somit kann zu jeder gegebenen Zeit der NAND-Flash-Chip 270, der gerade keine Schreiboperation durchführt, augenblicklich Leseoperationen durchführen. Sobald der Controller 260 jede Schreiboperation ausführt, können zwei der NAND-Flash-Chips 270 die gleichen Daten enthalten. Der Controller 260 kann Lesebefehle ausführen, indem sie von demjenigen des ersten NAND-Flash-Chips und des zweiten NAND-Flash-Chips ausgeführt werden, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden. Auf diese Weise kann die Tail-Latenz verbessert werden.
  • In einigen Implementierungen kann die NAND-Flash-Speichervorrichtung 250 zusätzliche NAND-Flash-Chips 270c und 270d enthalten, um die Schreibbandbreite weiter zu verbessern. Zum Beispiel kann eine NAND-Flash-Speichervorrichtung 250 mit vier NAND-Flash-Chips 270a bis 270d Schreiboperationen zwischen zwei NAND-Flash-Chips 270, beispielsweise NAND-Flash-Chips 270a und 270b, aufteilen. Nachdem die NAND-Flash-Chips 270a und 270b ihre jeweiligen Schreiboperationen abgeschlossen haben, können diese Schreiboperationen auf den NAND-Flash-Chips 270c und 270d wiederholt werden. Auf diese Weise kann die Schreibbandbreite der NAND-Flashspeichervorrichtung 250 ungefähr verdoppelt werden. Die NAND-Flash-Speichervorrichtung 250 kann zusätzliche NAND-Flash-Chips 270 für weitere Erhöhungen der Schreibbandbreite verwenden.
  • In einigen Implementierungen kann die NAND-Vorrichtung 250 etwas RAM 265 enthalten, der als Cache oder Puffer zum Speichern von Daten, während sie auf jeden NAND-Flash-Chip 270 geschrieben werden, dienen soll. Dieser RAM 265 muss nicht in der Lage ein, der gesamten Inhalt eines NAND-Flash-Chips 270 zu puffern, sondern kann nur groß genug sein, um einen einzelnen Block oder eine Seite von Daten zu puffern. Dementsprechend kann er viel kleiner sein als ein dedizierter RAM-Puffer und trägt somit nicht nennenswert zum Kostenmehraufwand der NAND-Vorrichtung 250 bei.
  • 3 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren 300 des Verwendens einer NAND-Flash-Speichervorrichtung mit einem NAND-Puffer gemäß veranschaulichenden Implementierungen zeigt. Die NAND-Flash-Speichervorrichtung kann irgendeine der hierin beschriebenen NAND-Flash-Speichervorrichtungen 150, 250, 450 oder 750 umfassen. Das Verfahren 300 umfasst ein Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus) (Stufe 310). Das Verfahren 300 umfasst ein Schreiben der empfangenen Daten nacheinander auf einen ersten NAND-Flash-Chip und einen zweiten NAND-Flash-Chip, so dass sich die Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen (Schritt 320). Das Verfahren umfasst ein Empfangen eines Lesebefehls über den E/A-Bus (Stufe 330). Das Verfahren 300 umfasst ein Lesen von Daten von demjenigen des ersten NAND-Flash-Chips und des zweiten NAND-Flash-Chips, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden (Stufe 340).
  • Das Verfahren 300 umfasst ein Empfangen von Daten über einen E/A-Bus (Stufe 310). Die NAND-Flash-Speichervorrichtung kann einen Schreibbefehl über den E/A-Bus, beispielsweise einen der E/A-Busse 130 oder 230, die zuvor in Bezug auf die NAND-Flash-Speichervorrichtungen 150 bzw. 250 beschrieben worden sind, empfangen. Der Schreibbefehl kann Daten enthalten, die von der NAND-Flash-Speichervorrichtung gespeichert werden sollen.
  • Das Verfahren 300 umfasst ein Schreiben der empfangenen Daten nacheinander auf einen ersten NAND-Flash-Chip und einen zweiten NAND-Flash-Chip, so dass sich die Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen (Schritt 320). Die Schreiboperationen können durch einen Controller der NAND-Flash-Speichervorrichtung wie z. B. der CPU 110 oder dem Controller 260, die zuvor beschrieben sind, ausgeführt werden. Der Controller kann die Schreiboperation auf einem von zwei NAND-Flash-Chips ausführen, beispielsweise auf dem NAND-Flash-Chip 270a oder 270b. Während der Controller eine Schreiboperation auf einem der NAND-Flash-Chips 270 ausführt, kann dieser bestimmte NAND-Flash-Chip keine anderen Operationen verarbeiten. Dementsprechend führt der Controller die Schreiboperationen auf den zwei NAND-Flash-Chips nacheinander aus, so dass sie sich zeitlich nicht überlappen. In einigen Implementierungen können die Empfangsstufe 310 und die Schreibstufe 320 wiederholt werden, bis der erste und der zweite NAND-Flash-Chip voll oder im Wesentlichen voll sind. In einigen Implementierungen sind die NAND-Flash-Chips NAND- Chips mit niedriger Latenz (LLNAND-Chips).
  • Das Verfahren umfasst ein Empfangen eines Lesebefehls über den E/A-Bus (Stufe 330). Das Verfahren 300 umfasst ein Lesen von Daten von demjenigen des ersten NAND-Flash-Chips oder deszweiten NAND-Flash-Chips, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden (Schritt 340). Während der Ausführung der Schreiboperationen kann die NAND-Flash-Speichervorrichtung einen Lesebefehl über den E/A-Bus empfangen. Der Controller kann den Lesebefehl an denjenigen der NAND-Flash-Chips richten, der gerade keine Schreiboperation ausführt. Auf diese Weise können die Stufen 330 und 340 gleichzeitig mit den Stufen 310 und 320 ablaufen und Leseoperationen können sofort verarbeitet werden, ohne hinter langsameren Schreiboperationen eingereiht zu werden. Die Stufen des Verfahrens 300 können sich wiederholen, wenn zusätzliche Daten und Lesebefehle über den E/A-Bus empfangen werden. In einigen Implementierungen kann die von jedem bestimmten NAND-Flash-Chip gespielte Rolle einen Zyklus durchlaufen, in dem verschiedene NAND-Flash-Chips unterschiedliche Puffer- und Speicherfunktionen zu unterschiedlichen Zeiten ausführen. Beispiele verschiedener Arten der NAND-Flash-Chip-Pufferung und -Speicherung sind nachstehend unter Bezugnahme auf 4 bis 9 beschrieben.
  • 4 ist ein Blockdiagramm einer beispielhaften NAND-Flash-Speichervorrichtung 450 mit einem NAND-Puffer und zusätzlichem NAND-Speicher gemäß der Veranschaulichung Implementierungen. Die NAND-Flash-Speichervorrichtung 450 umfasst einen Controller 460 zum Ausführen von Lese- und Schreibbefehlen, die über den E/A-Bus 430 empfangen werden. Der Controller 460 kann RAM 465 enthalten oder über einen Speicherbus mit dem RAM 465 kommunizieren. Der Controller 460 kann eine programmierbare Logik wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), eine feldprogrammierbare Gatteranordnung (FPGA), einen Mikrocontroller oder einen Mikroprozessor umfassen. Der Controller 460 kann einstückig mit oder außerhalb der NAND-Flash-Speichervorrichtung 450 sein. Die NAND-Flash-Speichervorrichtung 450 kann zwei Puffer-NAND-Flash-Chips 470a und 470b (gemeinsam „Puffer-NAND-Flash-Chips 470“) enthalten. In einigen Implementierungen kann die NAND-Flash-Speichervorrichtung 450 zusätzliche Puffer-NAND-Flash-Chips 470 enthalten, wie es weiter unten beschrieben ist. In einigen Implementierungen kann die NAND-Flash-Speichervorrichtung 450 den RAM 465 zum Puffern von Daten, die über den E/A-Bus 430 empfangen werden, verwenden, während sie in einen oder mehrere der Puffer-NAND-Flash-Chips 470 geschrieben werden. Die NAND-Flash-Speichervorrichtung 450 umfasst auch Speicher-NAND-Flash-Chips 475a bis 475e (zusammen „Speicher-NAND-Flash-Chips 475“), die zusätzliche Speicherkapazität über die der Puffer-NAND-Flash-Chips 470 hinaus bereitstellen. Über den I/O-Bus 430 empfangene Daten können in den Puffer-NAND-Flash-Chips zwischengespeichert werden
  • In einigen Implementierungen können die Puffer-NAND-Flash-Chips 470 Einniveauzellen-NAND-Flash-Chips (SLC-NAND-Flash-Chips) oder NAND- Flash-Chips mit niedriger Latenz (LLNAND-Flash-Chips) sein, während die Speicher-NAND-Flash-Chips 475 können Mehrniveauzellen-NAND-Flash-Chips (MLC-NAND-Flash-Chips) oder Dreiniveauzellen-NAND-Flash-Chips (TLC-NAND-Flash-Chips) sein können. In einigen Implementierungen können die Puffer-NAND-Flash-Chips 470 eine kleinere Kapazität als die Speicher-NAND-Flash-Chips 475 aufweisen. In einigen Implementierungen kann eine Gruppe von Puffer-NAND-Flash-Chips 470 eine Kapazität aufweisen, die gleich der Kapazität eines einzelnen Speicher-NAND-Flash-Chips 475 ist. Die Gruppe von Puffer-NAND-Flash-Chips 470 kann kollektiv als ein einzelner Pufferchip verwendet werden.
  • Die Schreibbandbreite von NAND-Flash-Speichervorrichtungen kann aufgrund der relativ langsamen Geschwindigkeit der Durchführung von Schreiboperationen beschränkt sein. In einigen Implementierungen kann jedoch die Schreibbandbreite verbessert werden, indem mehr Puffer-NAND-Flash-Chips 470 als Schreibpuffer festgelegt werden. In einigen Implementierungen und ähnlich zu der NAND-Flash-Speichervorrichtung 250 kann die NAND-Flash-Speichervorrichtung 450 zusätzliche Puffer-NAND-Flash-Chips 470; beispielsweise Puffer-NAND-Flash-Chips 4700 und 470d, umfassen. In einigen Implementierungen kann die NAND-Flash-Speichervorrichtung 450 noch mehr Puffer-NAND-Flash-Chips 470 umfassen. Der Controller 460 kann somit Schreiboperationen unter den Puffer-NAND-Flash-Chips 470 verteilen, um die Schreibbandbreite zu multiplizieren.
  • Die NAND-Flash-Speichervorrichtung 450 kann möglicherweise zwei Nachteile aufweisen. Zuerst werden die Puffer-NAND-Flash-Chips 470 schließlich die Kapazität erreichen. Sobald alle Daten in einem Puffer-NAND-Flash-Chip 470 auf einen der Speicher-NAND-Flash-Chips 475 kopiert worden sind, können alle Daten in dem Puffer-NAND-Flash-Chip 470 gelöscht werden. Während der Puffer-NAND-Flash-Chip 470 Löschoperationen durchführt, kann er keine Schreiboperation durchführen. Daher wird die Schreibbandbreite durch die Nichtverfügbarkeit des Puffer-NAND-Flash-Chips 470 beschränkt.
  • Der zweite potentielle Nachteil betrifft die Anzahl von Schreiboperationen, die ein NAND-Flash-Chip handhaben kann, bevor er übermäßige Bitfehler zeigt. NAND-Flash-Chips erleiden Verschleiß durch die Verarbeitung von Schreiboperationen. Schließlich wird der NAND-Flash-Chip nach der Durchführung vieler Schreiboperationen verschleißen und beginnen, Fehler aufzuweisen.
  • In einigen Implementierungen kann die Herausforderung einer begrenzten Schreibbandbreite durch Erhöhen der Anzahl von Puffer-NAND-Flash-Chips 470 wie oben beschrieben angegangen werden und das NAND-Verschleißproblem kann durch Verwenden von Chips mit höherer Lebensdauer als Puffer-NAND-Flash-Chips 470 angegangen werden. Das NAND-Verschleißproblem kann angegangen werden, indem die bestimmten NAND-Flash-Chips, die als Puffer für eingehende Daten festgelegt sind, rotiert werden. Ein solches Abnutzungsausgleichsschema ist weiter unten unter Bezugnahme auf 7 bis 9 beschrieben.
  • 5 zeigt unten beispielhafte Operationen 500 einer NAND-Flash-Speichervorrichtung mit einem NAND-Puffer und zusätzlichem NAND-Speicher gemäß einer veranschaulichenden Implementierung. Diese Operationen können durch eine NAND-Flash-Speichervorrichtung wie etwa die zuvor beschriebene NAND-Flash-Speichervorrichtung 450 ausgeführt werden. Die Operationen 500 umfassen eine Stufe 510, in der eingehende Daten in den Puffer-NAND-Flash-Chip 470a und den Speicher-NAND-Flash-Chip 475a geschrieben werden und Daten mit Speicherbereinigung von dem Speicher-NAND-Flash-Chip 475b in den Puffer-NAND-Flash-Chip 470b kopiert werden und anschließend zurück in den Speicher-NAND-Flash-Chip 475b kopiert werden. Die Operationen 500 umfassen eine Stufe 520, in der eingehende Daten in den Puffer-NAND-Flash-Chip 470b und den Speicher-NAND-Flash-Chip 475b geschrieben werden und Daten mit einer Speicherbereinigung von dem Speicher-NAND-Flash-Chip 475c in den Puffer-NAND-Flash-Chip 470a kopiert werden und anschließend zurück in den Speicher-NADI-Flash-Chip 475c kopiert werden. Die Operationen 500 umfassen eine Stufe 530, in der eingehende Daten in den Puffer-NAND-Flash-Chip 470a und den Speicher-NAND-Flash-Chip 475c geschrieben werden und der Puffer-NAND-Flash-Chip 470b Daten empfängt, die aus dem Speicher-NAND-Flash-Chip 475d kopiert werden. Die Puffer-NAND-Flash-Chips 470 sind durch einen Kasten Puffer 580 angezeigt. Die Operation, die jeder NAND-Flash-Chip 470 oder 475 aktuell ausführt, ist durch ein Akronym angegeben. „PW“ steht für „primäres Schreiben“ und gibt an, dass der Speicher-NAND-Flash-Chip 475 aktuell zum Empfangen von Daten und zum Ausführen von Schreiboperationen bestimmt ist. „SW“ steht für „sekundäres Schreiben“ und gibt an, dass der Puffer-NAND-Flash-Chip 470 aktuell auch zum Empfangen von Daten und Ausführen von Schreiboperationen bestimmt ist. „FPW“ steht für „zukünftiges primäres Schreiben“ und gibt an, dass der NAND-Flash-Chip 475 dafür vorgesehen ist, für einen zukünftigen Dienst des Empfangens von Daten und Durchführens von Schreiboperationen vorbereitet zu werden. „FSW“ steht für „zukünftiges sekundäres Schreiben“ und gibt an, dass der NAND-Flash-Chip 470 dafür vorgesehen ist, für einen zukünftigen Dienst des Empfangens von Daten und Durchführens von Schreiboperationen vorbereitet zu werden. „RO“ steht für „nur Lesen“ und gibt an, dass der Controller 460 die RO-Speicher-NAND-Flash-Chips 475 nur aufrufen wird, um Leseoperationen auszuführen. Diese Bezeichnungen sind nur willkürlich gewählt und werden nur zum Zweck der Beschreibung des Betriebs der verschiedenen Chips zu bestimmten Zeitpunkten zugewiesen. Zwischen jedem Zustand der Operationen 500 ändert sich die Rolle jedes NAND-Flash-Chips 470 oder 475, während verschiedene NAND-Flash-Chips 470 oder 475 Daten empfangen und Schreiboperationen ausführen.
  • Während der Stufe 510 empfangen und schreiben der Puffer-NAND-Flash-Chip 470a und der Speicher-NAND-Flash-Chip 475a eingehende Daten, wie es durch die Pfeile angegeben ist. Der Puffer-NAND-Flash-Chip 470a und der Speicher-NAND-Flash-Chip 475a empfangen und schreiben die gleichen Daten wie die SW- bzw. die PW-Chips; sie können jedoch die Schreiboperationen während nicht überlappender Zeitspannen ausführen. Auf diese Weise enthalten sowohl PW- als auch SW-Chips im Wesentlichen die gleichen Daten und ein NAND-Flash-Chip, der keine Schreiboperation durchführt, kann sofort auf einen Lesebefehl antworten und die Leseoperation durchführen, ohne auf den Abschluss der relativ langen sofort warten zu müssen. In einigen Implementierungen können die PW- und SW-Chips weiterhin Daten empfangen und Schreiboperationen durchführen, bis sie voll oder im Wesentlichen voll sind. Unterdessen kopiert der FPW-Speicher-NAND-Flash-Chip 475b in Vorbereitung auf das Empfangen externer Daten in der nächsten Stufe 520 seine Daten zu dem FSW-Puffer-NAND-Flash-Chip 470b. Während der Kopieroperation kann die NAND-Flash-Speichervorrichtung 450 eine Speicherbereinigung auf den FPW- und FSW-Chips durchführen. Wenn fragmentierte Daten von dem FPW-Chip zu dem FSW-Chip kopiert werden, werden sie konsolidiert, so dass sie in einem kontinuierlichen oder im Wesentlichen kontinuierlichen Speicherraum auf den FSW-Chip geschrieben werden, während der freie Raum in ähnlicher Weise in einem zweiten kontinuierlichen oder im Wesentlichen kontinuierlichen Speicherraum konsolidiert wird. Dies macht die Datendarstellung kompakter und lässt am Ende Platz, damit in der nächsten Stufe 520 neue Daten geschrieben werden können. Nachdem alle gültigen Daten von dem FPW-Chip auf den FSW-Chip kopiert sind, wird der freie Platz auf dem FPW gelöscht. Die gültigen Daten werden von dem FSW-Chip zurück auf den FPW-Chip kopiert. Wenn die PW- und SW-Chips ihre Schreiboperationen abgeschlossen haben und die FPW- und die FSW-Chips ihr Kopieren und Speicherbereinigen abgeschlossen haben, können die Operationen 500 mit der nächsten Stufe 520 fortfahren.
  • Während der Stufe 510 (und auch der Stufen 520 und 530) kann die NAND-Flash-Speichervorrichtung 450 von Zeit zu Zeit eine Leseanforderung empfangen. Der Controller 460 kann die Leseanforderung auf eine von drei Arten handhaben, abhängig davon, ob sich die angeforderten Daten auf einem RO-Chip, einem der PW- oder SW-Chips oder einem der FPW- oder FSW-Chips befinden. Wenn sich die angeforderten Daten auf einem RO-Chip befinden, kann der Controller 460 einfach die Leseoperation auf dem RO-Chip ausführen und die Daten zurücksenden - es tritt keine Schreiboperation auf, die die Ausführung der Leseoperation stören oder verzögern würde. Wenn sich die angeforderten Daten auf dem PW- oder SW-Chip befinden, kann der Controller 460 die Leseoperation auf demjenigen PW- oder SW-Chip ausführen, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden. Wenn sich die angeforderten Daten auf dem FPW- oder FSW-Chip befinden, kann der Controller 460 die Leseoperation auf demjenigen FPW oder FSW ausführen, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen in die Warteschlange eingereiht werden. Das heißt, wenn Daten gerade mit Speicherbereinigung von dem FPW-Chip zu dem FSW-Chip kopiert werden, wird der Controller 460 Schreiboperationen auf dem FSW-Chip ausführen und kann so die Leseoperation auf dem FPW-Chip ausführen. Wenn die Daten von dem FSW-Chip zurück zu dem FPW-Chip kopiert werden, kann der Controller 460 die Leseoperation auf dem FSW-Chip ausführen. Unabhängig davon, welcher NAND-Flash-Chip die angeforderten Daten enthält und welche® NAND-Flash-Chip(s) Schreiboperationen ausführt/ausführen, kann die NAND-Flash-Vorrichtung 450 die angeforderten Daten ohne unnötige Verzögerung, die durch das Einreihen der Leseoperation hinter einer Schreiboperation verursacht wird, lesen und zurückgeben.
  • Während Stufe 520 wird der Speicher-NAND-Flash-Chip 475b als der PW-Chip, der Puffer-NAND-Flash-Chip 470b als der SW-Chip, der Speicher-NAND-Flash-Chip 475c als der FPW-Chip, der Puffer-NAND-Flash-Chip 470a als der FSW-Chip und der Speicher-NAND-Flash-Chip 475a als RO festgelegt. Die Funktionen des PW-, SW-, FPW- und FSW-Chips sind Funktionen ähnlich, die von den Chips mit den gleichen Bezeichnungen in der vorhergehenden Stufe 510 ausgeführt werden, wobei jedoch andere NAND-Flash-Chips jeweilige bestimmte Rollen ausführen. Der SW- und der PW-Chip empfangen und schreiben die gleichen Daten, wie es durch die Pfeile angezeigt ist; sie können jedoch die Schreiboperationen während nicht überlappender Zeitperioden ausführen, so dass sie auf einen Lesebefehl antworten und die Leseoperation sofort ausführen können, ohne auf den Abschluss der relativ langen Schreiboperation warten zu müssen. Unterdessen kopiert der FPW-Chip in Vorbereitung auf das Empfangen externer Daten in der nächsten Stufe 530 seine Daten zu dem FSW-Chip. Während der Kopieroperation können die FPW- und die FSW-Chips Speicherbereinigungsoperationen durchführen. Wenn die PW- und SW-Chips ihre Schreiboperationen abgeschlossen haben und die FPW- und die FSW-Chips ihr Kopieren und Speicherbereinigen abgeschlossen haben, können die Operationen 500 mit der nächsten Stufe 530 fortfahren.
  • Während der Stufe 530 wird der Speicher-NAND-Flash-Chip 475c als PW-Chip festgelegt, der Puffer-NAND-Flash-Chip 470a als SW-Chip festgelegt, der Speicher-NAND-Flash-Chip 475d als FPW-Chip festgelegt, der Puffer-NAND-Flash-Chip 470b als FSW-Chip festgelegt und der Speicher-NAND-Flash-Chip 475b als RO festgelegt. Die Funktionen des PW-, SW-, FPW- und FSW-Chips sind Funktionen ähnlich, die von den Chips mit den gleichen Bezeichnungen in den vorhergehenden Stufen 510 und 520 ausgeführt werden, wobei jedoch andere NAND-Flash-Chips jeweilige bestimmte Rollen ausführen. Der SW- und der PW-Chip empfangen und schreiben die gleichen Daten, wie es durch die Pfeile angezeigt ist; sie können jedoch die Schreiboperationen während nicht überlappender Zeitspannen ausführen, so dass sie sofort auf einen Lesebefehl antworten und die Leseoperation ausführen können, ohne auf den Abschluss der relativ langen Schreiboperation warten zu müssen. Unterdessen kopiert der FPW-Chip in Vorbereitung auf das Empfangen von externen Daten in der nächsten Stufe seine Daten auf den FSW-Chip. Während der Kopieroperation können der FPW- und FSW-Chip Speicherbereinigungsoperationen durchführen. Wenn der PW- und SW-Chip ihre Schreiboperationen abgeschlossen haben und der FPW- und FSW-Chip ihr Kopieren und Speicherbereinigen abgeschlossen haben, können die Operationen 500 mit der nächsten Stufe fortfahren. Die Operationen 500 können auf diese Weise fortgesetzt werden, bis auf alle Speicher-NAND-Flash-Chips 475 geschrieben worden ist, zu welchem Zeitpunkt sich die Operationen 500 beginnend in der Stufe 510 wiederholen.
  • 6 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren 600 des Verwendens einer NAND-Flash-Speichervorrichtung mit einem NAND-Puffer und zusätzlichem NAND-Speicher gemäß beispielhaften Implementierungen zeigt. Das Verfahren 600 kann einen NAND-Flash-Speicherraum über den von den Puffer-NAND-Chips bereitgestellten Speicherplatz hinaus bereitstellen. Zum Beispiel kann das Verfahren 600 durch die NAND-Flash-Speichervorrichtung 450 durchgeführt werden, die oben unter Bezugnahme auf 4 beschrieben ist. Die NAND-Flash-Speichervorrichtung 450 kann Puffer-NAND-Flash-Chips 470 und Speicher-NAND-Flash-Chips 475 umfassen. Das Verfahren 600 umfasst ein Festlegen eines ersten Speicher-NAND-Flash-Chips als eines primären Schreibchips (PW- Chips), eines zweiten Speicher-NAND-Flash-Chips als eines zukünftigen primären Schreibchips-(FPW-Chips), eines ersten Puffer-NAND-Flash-Chips als eines sekundären Schreibchips (SW-Chips), eines zweiten Puffer-NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips (FSW-Chip) und aller verbleibenden NAND-Flash-Chips als nur zum Lesen (RO). Das Verfahren 600 umfasst ein Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus) (Stufe 620). Das Verfahren 600 umfasst ein Schreiben der empfangenen Daten nacheinander auf den PW-Chip und den SW-Chip, so dass sich die Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen (Stufe 630). Das Verfahren 600 umfasst ein Empfangen eines Lesebefehls über den E/A-Bus (Stufe 640). Das Verfahren 600 umfasst ein Lesen von Daten von einem NAND-Flash-Chip, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden, als Antwort auf das Empfangen des Lesebefehls (Stufe 650). Das Verfahren 600 umfasst ein Kopieren gültiger Daten von dem FPW-Chip zu dem FSW-Chip (Stufe 660). Das Verfahren 600 umfasst ein Festlegen des ersten Speicher-NAND-Flash-Chips als RO, des zweiten Speicher-NAND-Flash-Chips als PW-Chip, des ersten Puffer-NAND-Flash-Chips als FSW-Chip und des zweiten Puffer-NAND-Flash-Chip als SW-Chip nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten (Stufe 670).
  • Das Verfahren 600 umfasst ein Festlegen eines ersten Speicher-NAND-Flash-Chips als eines primären Schreibchips, eines zweiten Speicher-NAND-Flash-Chips als eines zukünftigen primären Schreibchips, eines ersten Puffer-NAND-Flash-Chips als eines sekundären Schreibchips, eines zweiten Puffer-NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips und aller verbleibenden NAND-Flash-Chips als nur zum Lesen (RO).
  • Das Verfahren 600 umfasst ein Empfangen von Daten über einen E/A-Bus (Stufe 620). Die Stufe 620 kann der zuvor beschriebenen Stufe 310 ähnlich sein.
  • Das Verfahren 600 umfasst ein Schreiben der empfangenen Daten nacheinander auf den PW-Chip und den SW-Chip, so dass sich die Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen (Schritt 630). Die Stufe 630 kann der zuvor beschriebenen Stufe 320 ähnlich sein. In einigen Implementierungen können die Empfangsstufe 620 und die Schreibstufe 630 wiederholt werden, bis der PW-Chip und der SW-Chip voll oder im Wesentlichen voll sind.
  • Das Verfahren 600 umfasst ein Empfangen eines Lesebefehls über den E/A-Bus (Stufe 640). Die Stufe 630 kann der zuvor beschriebenen Stufe 430 ähnlich sein.
  • Das Verfahren 600 umfasst: als Antwort auf das Empfangen des Lesebefehls, Lesen von Daten von einem NAND-Flash-Chip, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden (Stufe 650). Die Stufe 650 kann der zuvor beschriebenen Stufe 340 ähnlich sein. In der Praxis können sich die angeforderten Daten auf einem RO-Chip, einem des PW- oder SW-Chips oder einem des FPW- oder FSW-Chips befinden. Der Controller kann die Leseanforderung abhängig davon, wo sich die angeforderten Daten befinden, auf eine von drei Arten behandeln. Wenn sich die angeforderten Daten auf dem PW- oder SW-Chip befinden, kann der Controller die Leseoperation auf demjenigen PW- oder SW-Chip ausführen, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden, und das Verfahren 600 kann zur nächsten Stufe fortfahren. Wenn sich die angeforderten Daten auf einem RO-Chip befinden, kann der Controller einfach die Leseoperation auf dem RO-Chip ausführen und gibt die Daten zurück - es tritt keine Schreiboperation auf, die die Ausführung der Leseoperation stören oder verzögern würde. Wenn sich die angeforderten Daten auf dem FPW- oder FSW-Chip befinden, kann der Controller die Leseoperation auf demjenigen des FPW- oder FSW-Chips ausführen, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden. Das heißt, wenn Daten gerade mit Speicherbereinigung von dem FPW-Chip zu dem FSW-Chip kopiert werden, wird der Controller 460 Schreiboperationen auf dem FSW-Chip ausführen und kann so die Leseoperation auf dem FPW-Chip ausführen. Wenn die Daten von dem FSW-Chip zurück zu dem FPW-Chip kopiert werden, kann der Controller die Leseoperation auf dem FSW-Chip ausführen. Auf diese Weise kann die NAND-Flash-Vorrichtung unabhängig davon, welcher NAND-Flash-Chip die angeforderten Daten enthält und welche(r) NAND-Flash-Chip(s) Schreiboperationen ausführt/ausführen, die angeforderten Daten ohne unnötige Verzögerung lesen und zurücksenden, die durch Einreihen der Leseoperation hinter einer Schreiboperation verursacht werden. Auf diese Weise können die Stufen 640 und 650 gleichzeitig mit den Stufen 620 und 630 ablaufen und Leseoperationen können sofort ausgeführt werden, ohne hinter langsameren Schreiboperationen eingereiht zu werden. Die Stufen 620 bis 650 können sich wiederholen, wenn zusätzliche Daten und Lesebefehle über den E/A-Bus empfangen werden.
  • Das Verfahren 600 umfasst ein Kopieren gültiger Daten von dem FPW-Chip zu dem FSW-Chip (Stufe 660). In einigen Implementierungen können der FPW- und FSW-Chip während der Kopieroperation eine Speicherbereinigung durchführen, um die gültigen Daten bzw. den freien Raum zu konsolidieren. Zum Beispiel kann die NAND-Flash-Speichervorrichtung zuerst die gültigen Daten von dem FPW-Chip zu dem FSW-Chip kopieren, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des FSW-Chips belegen. Die NAND-Flash-Speichervorrichtung kann die gültigen Daten von dem FSW-Chip zurück zu dem FPW-Chip kopieren, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des FPW-Chips belegen. Die NAND-Flash-Speichervorrichtung kann die Speicherräume des FPW- und FSW-Chips löschen, die von dem freien Raum belegt sind. Die Kopieroperationen der Stufe 660 können während einer überlappenden Zeitspanne mit den Pufferoperationen der Stufen 620 und 630 durchgeführt werden. Zusätzlich können Lesebefehle von demjenigen des FPW- und des FSW-Chips empfangen und ausgeführt werden, der aktuell keine Schreiboperationen als Teil der Kopieroperationen ausführt. Auf diese Weise können die Kopieroperationen der Stufe 660 auch während einer überlappenden Zeitspanne mit den Leseoperationen der Stufen 640 und 650 durchgeführt werden.
  • Das Verfahren 600 umfasst: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen des ersten Speicher-NAND-Flash-Chips als RO, des zweiten Speicher-NAND-Flash-Chips als PW-Chip, des ersten Puffer-NAND-Flash-Chips als FSW-Chip und des zweiten Puffer-NAND-Flash-Chips als SW-Chip (Stufe 670). Die Stufen des Verfahrens 600 können sich wiederholen, wenn zusätzliche Daten und Lesebefehle über den E/A-Bus empfangen werden. In einigen Implementierungen kann die von jedem bestimmten NAND-Flash-Chip gespielte Rolle einen Zyklus durchlaufen, wobei verschiedene NAND-Flash-Chips zu unterschiedlichen Zeiten unterschiedliche Puffer- und Speicherfunktionen ausführen.
  • 7 ist ein Blockdiagramm einer beispielhaften NAND-Flash-Speichervorrichtung 750 mit einem rotierenden NAND-Puffer zum Abnutzungsausgleich gemäß veranschaulichenden Implementierungen. Die NAND-Flash-Speichervorrichtung 750 umfasst einen Controller 760 zum Verarbeiten von Lese- und Schreibbefehlen, die über den E/A-Bus 730 empfangen werden. Der Controller 760 kann einen RAM 765 umfassen oder über einen Speicherbus mit dem RAM 765 kommunizieren. Der Controller 760 kann eine programmierbare Logik wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), eine feldprogrammierbare Gatteranordnung (FPGA), einen Mikrocontroller oder einen Mikroprozessor umfassen. Der Controller 760 kann mit der NAND-Flash-Speichervorrichtung 750 einstückig sein oder außerhalb von dieser sein. Die NAND-Flash-Speichervorrichtung 750 umfasst NAND-Flash-Chips 770a bis 770f (gemeinsam „NAND-Flash-Chips 770“). In einigen Implementierungen kann die NAND-Flash-Speichervorrichtung 750 mehr oder weniger NAND-Flash-Chips 770 umfassen. In einigen Implementierungen kann die NAND-Flash-Speichervorrichtung 750 den RAM 765 zum Puffern von Daten, die über den E/A-Bus 730 empfangen werden, verwenden, während sie in einen oder mehrere der NAND-Flash-Chips 770 geschrieben werden. Die NAND-Flash-Speichervorrichtung 750 kann einen Verschleißausgleich anwenden, indem die zum Puffern verwendeten NAND-Flash-Chips 770 gelegentlich geändert werden. Zum Beispiel können während einer ersten Betriebsphase die NAND-Flash-Chips 770a und 770b als die NAND-Puffer dienen, wobei der Controller 760 der Reihe nach Daten in jeden davon schreibt. Beispielhafte Operationen der NAND-Flash-Speichervorrichtung 750 sind im Folgenden unter Bezugnahme auf 8 ausführlicher beschrieben.
  • 8 zeigt beispielhafte Operationen 800 einer NAND-Flash-Speichervorrichtung mit einem rotierenden NAND-Puffer, die Verschleißausgleich verwendet, gemäß veranschaulichenden Implementierungen. Diese Operationen können durch eine NAND-Flash-Speichervorrichtung wie die zuvor beschriebene NAND-Flash-Speichervorrichtung 750 ausgeführt werden. Die Operationen 800 umfassen eine Stufe 810, in der eingehende Daten in die NAND-Flash-Chips 770a und 770c geschrieben werden, während Daten mit einer Speicherbereinigung von dem NAND-Flash-Chip 770d zu dem NAND-Flash-Chip 770b kopiert und anschließend zurück zu dem NAND-Flash-Chip 770d kopiert werden. Die Operationen 800 umfassen eine Stufe 820, in der eingehende Daten auf die NAND-Flash-Chips 770b und 770d geschrieben werden, während Daten mit einer Speicherbereinigung von dem NAND-Flash-Chip 770e zu dem NAND-Flash-Chip 770c kopiert und anschließend zurück zu dem NAND-Flash-Chip 770e kopiert werden. Die Operationen 800 umfassen eine Stufe 830, in der eingehende Daten in die NAND-Flash-Chips 770c und 770e geschrieben werden, während Daten mit einer Speicherbereinigung von dem NAND-Flash-Chip 770f zu dem NAND-Flash-Chip 770d kopiert und anschließend zurück zu dem NAND-Flash-Chip 770f kopiert werden. Während jeder Operation 800 werden die sekundären Schreib-NAND-Flash-Chips und die zukünftigen sekundären Schreib-NAND-Flash-Chips 770 als Puffer-NAND-Flash-Chips betrachtet und sind durch einen Kasten Puffer 880 angezeigt. Die Operation, die jeder NAND-Flash-Chip 770 gerade ausführt, wird durch ein Kürzel angegeben. „PW“ steht für „primäres Schreiben“ und gibt an, dass der NAND-Flash-Chip 770 aktuell Daten empfängt und Schreiboperationen ausführt. „SW“ steht für „sekundäres Schreiben“ und gibt an, dass der NAND-Flash-Chip 770 aktuell als einer der Puffer-NAND-Flash-Chips Daten empfängt und Schreiboperationen ausführt. „FPW“ steht für „zukünftiges primäres Schreiben“ und gibt an, dass der NAND-Flash-Chip 770 für einen zukünftigen Dienst als der primäre Schreibchip vorbereitet wird, indem seine Daten zu dem zukünftigen sekundären Schreibchip kopiert werden. „FSW“ steht für „zukünftiges sekundäres Schreiben“ und gibt an, dass der NAND-Flash-Chip 770 in Vorbereitung auf einen zukünftigen Dienst als ein SW-Puffer-NAND-Flash-Chip Daten von dem FPW-Chip empfängt. „RO“ steht für „nur zum Lesen“ und gibt an, dass der Controller 760 den RO-NAND-Flash-Chip 770 nur aufrufen wird, um Leseoperationen auszuführen. Diese Bezeichnungen sind lediglich willkürlich und sind nur zum Zweck der Beschreibung der Funktion der verschiedenen Chips während einer gegebenen Stufe der Operation 800 zugewiesen. Zwischen jeder Stufe der Operationen 800 kann sich die Rolle jedes NAND-Flash-Chips 770 ändern, wie dadurch angezeigt wird, dass die Bezeichnungen unter jedem Chip und der Kasten Puffer 880 durch die verfügbaren NAND-Flash-Chips 770 rotieren.
  • Während der Stufe 810 dient der NAND-Flash-Chip 770a als der SW-Chip, der NAND-Flash-Chip 770b dient als der FSW-Chip, der NAND-Flash-Chip 770c dient als der PW-Chip, der NAND-Flash-Chip 770d dient als der FPW-Chip und die verbleibenden NAND-Flash-Chips dienen als RO-Chips. Eingehende Daten werden in die NAND-Flash-Chips 770a und 770c - den SW- bzw. PW-Chip - geschrieben. Unterdessen werden Daten mit einer Speicherbereinigung von dem NAND-Flash-Chip 770d zu dem NAND-Flash-Chip 770b - dem FPW- bzw. FSW-Chip - kopiert und anschließend zurück zu dem NAND-Flash-Chip 770b kopiert. Während der Stufe 810 enthält der Puffer 880 die NAND-Flash-Chips 770a und 770b. Der NAND-Flash-Chip 770b empfängt eine Kopie der Daten von dem NAND-Flash-Chip 770d, so dass er zum Ausführen von Leseoperationen zumindest teilweise nicht verfügbar ist und durch den Controller 760 bestärkend daran gehindert werden kann, nicht der Kopieroperation zugeordnete Lese- oder Schreiboperationen auszuführen. Die Speicherbereinigung kann während der Kopieroperation durchgeführt werden. Dies bedeutet, dass nur gültige Daten kopiert werden und jegliche von ungültigen Daten hinterlassenen Lücken in diesem Prozess entfernt werden. Dies macht die Datendarstellung kompakter und lässt am Ende Platz für neue Daten, die in der nächsten Stufe geschrieben werden. In einigen Implementierungen kann diese verdichtete Form von Daten in dem NAND-Flash-Chip 770b zurück zu dem NAND-Flash-Chip 770d kopiert werden. Die NAND-Flash-Chips 770e und 770f sowie alle anderen nicht dargestellten NAND-Flash-Chips 770 können als RO-Chips dienen. Zu einem geeigneten Zeitpunkt kann der Controller 760 die Festlegungen des NAND-Flash-Chips 770 aktualisieren und mit Schritt 820 der Operationen 800 fortfahren. Dies kann der Fall sein, wenn die Puffer-NAND-Flash-Chips 770a und 770c nach Durchführen einer vorbestimmten Anzahl von Schreiboperationen oder nach einem vorbestimmten Zeitintervall voll oder im Wesentlichen voll werden.
  • Während der Stufe 810 (und auch der Stufen 820 und 830) kann die NAND-Flash-Speichervorrichtung 750 von Zeit zu Zeit eine Leseanforderung empfangen. Der Controller 760 kann die Leseanforderung abhängig davon, ob sich die angeforderten Daten auf einem RO-Chip, einem des PW- oder SW-Chips oder einem des FPW- oder FSW-Chips befinden, auf eine von drei Arten handhaben. Wenn sich die angeforderten Daten auf einem RO-Chip befinden, kann der Controller 760 einfach die Leseoperation auf dem RO-Chip ausführen und die Daten zurückgeben - es findet keine Schreiboperation statt, die die Ausführung der Leseoperation stören oder verzögern würde. Wenn sich die angeforderten Daten auf dem PW- oder SW-Chip befinden, kann der Controller 760 die Leseoperation auf demjenigen des PW- oder SW-Chips ausführen, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden. Wenn sich die angeforderten Daten auf dem FPW- oder FSW-Chip befinden, kann der Controller 760 die Leseoperation auf demjenigen FPW oder FSW ausführen, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden. Das heißt, wenn Daten gerade mit einer Speicherbereinigung von dem FPW-Chip zu dem FSW-Chip kopiert werden, wird der Controller 760 Schreiboperationen auf dem FSW-Chip ausführen, und kann so die Leseoperation auf dem FPW-Chip ausführen. Wenn die Daten von dem FSW-Chip zurück zu dem FPW-Chip kopiert werden, kann der Controller 760 die Leseoperation auf dem FSW-Chip ausführen. Auf diese Weise kann die NAND-Flash-Vorrichtung 750 unabhängig davon, welcher NAND-Flash-Chip die angeforderten Daten enthält und welcher NAND-Flash-Chip Schreiboperationen ausführt, die angeforderten Daten ohne übermäßige Verzögerung, die durch das Einreihen der Leseoperation hinter einer Schreiboperation verursacht wird, lesen und zurückgeben.
  • Während der Stufe 820 dient der NAND-Flash-Chip 770b als der SW-Chip, der NAND-Flash-Chip 770c dient als der FSW-Chip, der NAND-Flash-Chip 770d dient als der PW-Chip, der NAND-Flash-Chip 770e dient als der FPW-Chip und die verbleibenden NAND-Flash-Chips dienen als RO-Chips. Eingehende Daten werden in die NAND-Flash-Chips 770b und 770d geschrieben und Daten werden mit einer Speicherbereinigung von dem NAND-Flash-Chip 770e zu dem NAND-Flash-Chip 770c kopiert und anschließend zurück zu dem NAND-Flash-Chip 770e kopiert. Der NAND-Flash-Chip 770a ist als ein RO-Chip festgelegt und steht zur Verfügung, um Leseoperationen ohne Unterbrechung von Schreiboperationen auszuführen. Der Puffer 880 umfasst nun die NAND-Flash-Chips 770b und 770c. Da der NAND-Flash-Chip 770c zuvor als der PW-Chip diente, werden die Daten, die er enthält, nicht einzigartig sein, da die Daten zuvor auch in den vorherigen SW-Chip geschrieben worden waren. Dementsprechend kann der NAND-Flash-Chip 770c, in Vorbereitung darauf, dass er in der nächsten Betriebsphase als SW festgelegt wird, duplizierte Daten von dem NAND-Flash-Chip 770e empfangen. Während der Kopieroperation können die NAND-Flash-Chips 770c und 770e Speicherbereinigungsoperationen durchführen.
  • Während der Stufe 830 dient der NAND-Flash-Chip 770c als der SW-Chip, der NAND-Flash-Chip 770d dient als der FSW-Chip, der NAND-Flash-Chip 770e dient als der PW-Chip, der NAND-Flash-Chip 770f dient als der FPW-Chip und die restlichen NAND-Flash-Chips dienen als RO-Flash-Chips. Eingehende Daten werden in die NAND-Flash-Chips 770c und 770e geschrieben, während Daten mit einer Speicherbereinigung von dem NAND-Flash-Chip 770f zu dem NAND-Flash-Chip 770d kopiert und anschließend zurück zu dem NAND-Flash-Chip 770f kopiert werden. Der NAND-Flash-Chip 770b ist als ein RO-Chip festgelegt und ist verfügbar, um Leseoperationen ohne Unterbrechungen von Schreiboperationen auszuführen. Der Puffer 880 enthält nun die NAND-Flash-Chips 770c und 770d. Da der NAND-Flash-Chip 770d zuvor als der PW-Chip diente, werden die Daten, die er enthält, nicht einzigartig sein, da die Daten zuvor auch in den vorherigen SW-Chip geschrieben worden waren. Dementsprechend kann der NAND-Flash-Chip 770d in Vorbereitung darauf, in einer nachfolgenden Stufe des Betriebs als SW-Chip festgelegt zu werden, duplizierte Daten von dem NAND-Flash-Chip 770f empfangen.
  • Zusätzliche Stufen können auf diese Weise auf unbestimmte Zeit fortschreiten, um Verschleiß unter einigen oder allen der verfügbaren NAND-Flash-Chips 770 zu verteilen. Beim Durchführen dieser Operationen schreibt die NAND-Flash-Speichervorrichtung 750 jede empfangene Seite von Daten zweimal in die NAND-Flash-Chips 770, was die Menge der erlittenen Abnutzung verdoppelt; wenn jedoch der Verschleiß gleichmäßig über viele NAND-Flash-Chips 770 verteilt wird, kann diese Menge an zusätzlichem Verschleiß akzeptabel sein.
  • 9 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren 900 des Verwendens einer NAND-Flash-Speichervorrichtung mit einem rotierenden NAND-Puffer zum Abnutzungsausgleich gemäß veranschaulichenden Implementierungen zeigt. Zum Beispiel kann das Verfahren 900 durch die NAND-Flash-Speichervorrichtung 750 ausgeführt werden, die vorstehend unter Bezugnahme auf 7 beschrieben ist. Das Verfahren 900 kann durch verfügbare NAND-Flash-Chips rotieren, wobei jeder der Reihe nach als Puffer-NAND-Chip festgelegt wird, um den Verschleiß, der durch Ausführen von Schreiboperationen verursacht wird, zu vermeiden und Fehler, die möglicherweise durch Konzentrieren von Schreiboperationen auf eine kleine Anzahl von NAND-Flash-Chips verursacht werden, zu vermeiden. Das Verfahren 900 umfasst ein Festlegen eines ersten NAND-Flash-Chips als eines sekundären Schreibchips (SW-Chip), eines zweiten NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips (FSW-Chips), eines dritten NAND-Flash-Chips als eines primären Schreibchips (PW-Chips) und eines vierten NAND-Flash-Chips als eines zukünftigen primären Schreibchips (FPW-Chips) (Stufe 910). Das Verfahren 900 umfasst ein Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus) (Stufe 920). Das Verfahren 900 umfasst ein Schreiben der empfangenen Daten nacheinander auf den PW-Chip und den SW-Chip, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen (Schritt 930). Das Verfahren 900 umfasst ein Empfangen eines Lesebefehls über den E/A-Bus (Stufe 940). Das Verfahren 900 umfasst, als Antwort auf das Empfangen des Lesebefehls, ein Lesen von Daten von einem NAND-Flash-Chip, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden (Stufe 950). Das Verfahren 900 umfasst ein Kopieren gültiger Daten von dem FPW-Chip zu dem FSW-Chip (Schritt 960). Das Verfahren 900 umfasst nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten: Festlegen des ersten NAND-Flash-Chips als nur zum Lesen, des zweiten NAND-Flash-Chips als SW-Chip, des dritten NAND-Flash-Chips als FSW-Chip, und des vierten NAND-Flash-Chips als PW-Chip (Stufe 970).
  • Das Verfahren 900 umfasst ein Bestimmen des ersten NAND-Flash-Chips als SW-Chip, des zweiten NAND-Flash-Chips als FSW-Chip, des dritten NAND-Flash-Chips als PW-Chip und des vierten NAND-Flash-Chips als FPW-Chip (Stufe 910). Die Bezeichnungen sind zuvor unter Bezugnahme auf 8 beschrieben.
  • Das Verfahren 900 umfasst ein Empfangen von Daten über den E/A-Bus (Stufe 920). Die Stufe 920 ist ähnlich den zuvor beschriebenen Stufen 310 und 610.
  • Das Verfahren 900 umfasst ein Schreiben der empfangenen Daten nacheinander auf den PW-Chip und den SW-Chip, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen (Stufe 930). Die Stufe 930 ähnelt den zuvor beschriebenen Stufen 320 und 620. In einigen Implementierungen kann das Verfahren 900 weiterhin Empfangsoperationen von Stufe 920 und Schreiboperationen von Stufe 930 durchführen, bis der PW-Chip und der SW-Chip voll oder im Wesentlichen voll sind, bevor zu Stufe 950 übergegangen wird. Die Operationen der nachfolgend beschriebenen Stufen 940 und 950 können gleichzeitig mit den Operationen der Stufen 920 und 930 durchgeführt werden.
  • Das Verfahren 900 umfasst ein Empfangen eines Lesebefehls über den E/A-Bus (Stufe 940). Die Stufe 940 ähnelt den zuvor beschriebenen Stufen 330 und 640.
  • Das Verfahren 900 umfasst, als Antwort auf das Empfangen des Lesebefehls, ein Lesen von Daten von einem NAND-Flash-Chip, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden (Stufe 950). Die Stufe 950 ist ähnlich den zuvor beschriebenen Stufen 340 und 650. In der Praxis können sich die angeforderten Daten auf einem RO-Chip, einem des PW- und SW-Chips oder einem des FPW- und FSW-Chips befinden. Der Controller kann die Leseanforderung abhängig davon, wo sich die angeforderten Daten befinden, auf eine von drei Arten behandeln. Wenn sich die angeforderten Daten auf dem PW- oder SW-Chip befinden, kann der Controller die Leseoperation auf demjenigen PW- oder SW-Chip ausführen, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden, und das Verfahren 600 kann zu der nächsten Stufe voranschreiten. Wenn sich die angeforderten Daten auf einem RO-Chip befinden, kann der Controller einfach die Leseoperation auf dem RO-Chip ausführen und die Daten zurückgeben - es tritt keine Schreiboperation auf, die die Ausführung der Leseoperation stören oder verzögern würde. Wenn sich die angeforderten Daten auf dem FPW- oder FSW-Chip befinden, kann der Controller die Leseoperation auf demjenigen des FPW-Chips und FSW-Chips ausführen, der gerade keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden. Das heißt, wenn Daten gerade mit Speicherbereinigung von dem FPW-Chip zu dem FSW-Chip kopiert werden, wird der Controller 460 Schreiboperationen auf dem FSW-Chip ausführen, und kann so die Leseoperation auf dem FPW-Chip ausführen. Wenn die Daten von dem FSW-Chip zurück zu dem FPW-Chip kopiert werden, kann der Controller die Leseoperation auf dem FSW-Chip ausführen. Auf diese Weise kann die NAND-Flash-Vorrichtung unabhängig davon, welcher NAND-Flash-Chip die angeforderten Daten enthält und welche® NAND-Flash-Chip(s) Schreiboperationen ausführt/ausführen, die angeforderten Daten ohne übermäßige Verzögerung, die durch das Einreihen der Leseoperation hinter einer Schreiboperation verursacht wird, lesen und zurückgeben. In diesem Fall können die Stufen 940 und 950 gleichzeitig mit den Stufen 920 und 930 geschehen und Leseoperationen können sofort verarbeitet werden, ohne hinter langsameren Schreiboperationen eingereiht zu werden. Die Stufen 920 bis 950 können sich wiederholen, wenn zusätzliche Daten und Lesebefehle über den E/A-Bus empfangen werden.
  • Das Verfahren 900 umfasst ein Kopieren gültiger Daten von dem FPW-Chip zu dem FSW-Chip (Schritt 960). Um zwei neue NAND-Flash-Chips darauf vorzubereiten, in einer späteren Stufe als Puffer-NAND-Chips zu dienen, kann das Verfahren 900 Daten von einem NAND-Flash-Chip auf einen anderen NAND-Flash-Chip kopieren. Die Kopierquelle kann als FPW-Chip festgelegt sein und das Kopierziel kann als FSW-Chip festgelegt sein. In einigen Implementierungen kann die Kopieroperation bidirektional sein; das heißt, Daten können zwischen dem FPW-Chip und dem FSW-Chip so harmonisiert werden, dass sie jeweils ein Duplikat der anderen Daten umfassen. Während der Kopieroperation können der FSW-Chip und der FPW-Chip Speicherbereinigungsoperationen durchführen, um Daten zu konsolidieren und Speicherplatz von Daten freizugeben, die ungültig sind oder nicht mehr benötigt werden. Die Kopieroperationen der Stufe 960 können während einer mit den Pufferoperationen der Stufen 920 und 930 überlappenden Zeitspanne durchgeführt werden. Zusätzlich können Lesebefehle von demjenigen des FPW-Chips und des FSW-Chips empfangen und ausgeführt werden, der aktuell keine Schreiboperationen als Teil von Kopieroperationen durchführt. Auf diese Weise können die Kopieroperationen der Stufe 960 auch während einer mit den Leseoperationen der Stufen 940 und 950 überlappenden Zweitspanne durchgeführt werden.
  • Das Verfahren 900 umfasst nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten: Festlegen des ersten NAND-Flash-Chips als Nur-Lese-Chip, des zweiten NAND-Flash-Chips als SW-Chip, des dritten NAND-Flash-Chips als FSW-Chip und des vierten NAND-Flash-Chips als PW-Chip (Schritt 970). Sobald der FPW-Chip und der FSW-Chip duplizierte Daten enthalten, sind sie bereit, als der PW-Chip bzw. der SW-Chip zu übernehmen. Solange die Kopieroperationen ausgeführt werden können, während die Puffer-NAND-Flash-Chips immer noch Schreiboperationen bearbeiten, kann die NAND-Flash-Speichervorrichtung 770 Festlegungen ohne Verzögerung umschalten und Schreiboperationen ohne einen signifikanten Verlust an Schreibbandbreite weiterhin ausführen.
  • In einigen Implementierungen kann die Rotation fortgesetzt werden. Zum Beispiel kann der Controller 760 einen fünften NAND-Flash-Chip 770e als den FPW-Chip festlegen. Der Controller 760 kann über den E/A-Bus 730 empfangene zweite Daten auf den PW-Chip und den SW-Chip schreiben, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen. Der Controller 760 kann zweite gültige Daten von dem FPW-Chip zu dem FSW-Chip kopieren. Und nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten kann der Controller 760 den zweiten NAND-Flash-Chip als nur zum Lesen, den dritten NAND-Flash-Chip als SW-Chip, den vierten NAND-Flash-Chip als FSW-Chip, den fünften NAND-Flash-Chip als PW-Chip und einen sechsten NAND-Flash-Chip als FPW-Chip festlegen.
  • Gemäß einer Implementierung wird eine NAND-Flash-Speichervorrichtung bereitgestellt, die mehrere NAND-Flash-Chips und einen Controller umfasst. Der Controller ist dazu ausgelegt, Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus) zu empfangen und die empfangenen Daten auf einen ersten NAND-Flash-Chip der mehreren NAND-Flash-Chips und einen zweiten NAND-Flash-Chip der mehreren NAND-Flash-Chips zu schreiben. Die Schreiboperationen auf jeden NAND-Flash-Chip überlappen sich zeitlich nicht. Der Controller ist dazu ausgelegt, Daten von demjenigen des ersten NAND-Flash-Chips der des zweiten NAND-Flash-Chips zu lesen, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  • Obwohl diese Beschreibung viele spezifische Implementierungsdetails enthält, sollten diese nicht als Einschränkungen des Umfangs einer Erfindung oder des Beanspruchbaren ausgelegt werden, sondern vielmehr als Beschreibungen von Merkmalen, die für bestimmte Ausführungsformen spezifisch sein können. Bestimmte Merkmale, die in dieser Beschreibung im Zusammenhang mit getrennten Ausführungsformen beschrieben sind, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen getrennt oder in jeder geeigneten Unterkombination implementiert werden. Obwohl darüber hinaus Merkmale oben so beschrieben sein können, dass sie in bestimmten Kombinationen agieren und sogar anfänglich derart beansprucht werden, können ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgenommen werden und die beanspruchte Kombination kann auf eine Unterkombination oder Variation einer Unterkombination ausgerichtet werden.
  • Verweise auf „oder“ können als einschließend ausgelegt werden, so dass jegliche Begriffe, die unter Verwendung von „oder“ beschrieben sind, einen einzelnen, mehr als einen und alle der beschriebenen Begriffe angeben können. Die Bezeichnungen „erste/r/s“, „zweite/r/s“, „dritte/r/s“ usw. sollen nicht notwendigerweise eine Reihenfolge angeben und werden im Allgemeinen lediglich dazu verwendet, zwischen gleichen oder ähnlichen Objekten oder Elementen zu unterscheiden.
  • Verschiedene Abwandlungen der Implementierungen, die in dieser Offenbarung beschrieben sind, sind für Fachleute offensichtlich, und die hier definierten generischen Prinzipien können auf andere Implementierungen angewendet werden, ohne vom Gedanken oder Umfang dieser Offenbarung abzuweichen. Somit sollen die Ansprüche nicht auf die hierin gezeigten Implementierungen beschränkt sein, sondern ihnen soll der breiteste Umfang gewährt werden, der mit dieser Offenbarung, den Prinzipien und den hierin offenbarten neuartigen Merkmalen konsistent ist.
  • 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 62524016 [0001]
    • US 14936486 [0037]

Claims (20)

  1. NAND-Flash-Speichervorrichtung, die umfasst: mehrere NAND-Flash-Chips; und einen Controller, der zu Folgendem ausgelegt ist: Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus); Schreiben der empfangenen Daten auf einen ersten NAND-Flash-Chip der mehreren NAND-Flash-Chips und einen zweiten NAND-Flash-Chip der mehreren NAND-Flash-Chips nacheinander, so dass sich Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen; Empfangen eines Lesebefehls über den E/A-Bus; und als Antwort auf das Empfangen des Lesebefehls, Lesen von Daten von demjenigen des ersten NAND-Flash-Chips oder des zweiten NAND-Flash-Chips, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  2. NAND-Flash-Speichervorrichtung nach Anspruch 1, wobei der Controller ferner zu Folgendem ausgelegt ist: Festlegen des ersten NAND-Flash-Chips als eines sekundären Schreibchips, des zweiten NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips, eines dritten NAND-Flash-Chips als eines primären Schreibchips, eines vierten NAND-Flash-Chips als eines zukünftigen primären Schreibchips und aller verbleibenden NAND-Flash-Chips als nur zum Lesen; Schreiben der empfangenen Daten nacheinander auf den primären Schreibchip und den sekundären Schreibchip, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen; Kopieren gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip; und nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen des ersten NAND-Flash-Chips als nur zum Lesen, des zweiten NAND-Flash-Chips als des sekundären Schreibchips, des dritten NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des vierten NAND-Flash-Chips als des primären Schreibchips.
  3. NAND-Flash-Speichervorrichtung nach Anspruch 2, wobei der Controller ferner zu Folgendem ausgelegt ist: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten: Festlegen eines fünften NAND-Flash-Chips als des zukünftigen primären Schreibchips; Schreiben zweiter Daten, die über den E/A-Bus empfangen werden, nacheinander auf den primären Schreibchip und den sekundären Schreibchip, so dass sich Schreiboperationen auf jeden Chip zeitlich nicht überlappen; Kopieren zweiter gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip; und nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten: Festlegen des zweiten NAND-Flash-Chips als nur zum Lesen, des dritten NAND-Flash-Chips als des sekundären Schreibchips, des vierten NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des fünften NAND-Flash-Chip als des primären Schreibchips.
  4. NAND-Flash-Speichervorrichtung nach Anspruch 2 oder 3, wobei die Kopieroperation umfasst: Kopieren der gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip derart, dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen sekundären Schreibchips belegen; Kopieren der gültigen Daten von dem zukünftigen sekundären Schreibchip zurück zu dem zukünftigen primären Schreibchip derart, dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen primären Schreibchips belegen; und Löschen der Speicherräume des zukünftigen primären Schreibchips und des zukünftigen sekundären Schreibchips, die von dem freien Raum belegt sind.
  5. NAND-Flash-Speichervorrichtung nach einem der Ansprüche 2 bis 4, wobei: die Schreiboperation und die Kopieroperation während überlappender Zeitspannen durchgeführt werden.
  6. NAND-Flash-Speichervorrichtung, die umfasst: mehrere Puffer-NAND-Flash-Chips; mehrere Speicher-NAND-Flash-Chips; und einen Controller, der zu Folgendem ausgelegt ist: Empfangen eingehender Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus) Schreiben der empfangenen eingehenden Daten nacheinander in einen ersten Puffer-NAND-Flash-Chip der mehreren Speicher-NAND-Flash-Chips und einen ersten Speicher-NAND-Flash-Chip der mehreren Puffer-NAND-Flash-Chips, so dass sich Schreiboperationen auf jeden NAND-Flash-Chip nicht zeitlich überlappen; Empfangen eines Lesebefehl über den E/A-Bus; und als Antwort auf das Empfangen des Lesebefehls, Lesen Daten von demjenigen des ersten Puffer-NAND-Flash-Chips oder des ersten Speicher-NAND-Flash-Chips, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  7. NAND-Flash-Speichervorrichtung nach Anspruch 6, wobei der Controller ferner zu Folgendem ausgelegt ist: Festlegen des ersten Speicher-NAND-Flash-Chips als eines primären Schreibchips, eines zweiten Speicher-NAND-Flash-Chips als eines primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als eines sekundären Schreibchips, eines zweiten Puffer-NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips und aller verbleibenden NAND-Flash-Chips als nur zum Lesen; Schreiben der empfangenen Daten nacheinander auf den primären Schreibchip und den sekundären Schreibchip, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen; Kopieren gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip; und nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen des ersten Speicher-NAND-Flash-Chips als nur zum Lesen, des zweiten Speicher-NAND-Flash-Chips als des primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des zweiten Puffer-NAND-Flash-Chips als des sekundären Schreibchips.
  8. NAND-Flash-Speichervorrichtung nach Anspruch 7, wobei der Controller ferner zu Folgendem ausgelegt ist: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten: Festlegen eines dritten Speicher-NAND-Flash-Chips als des zukünftigen primären Schreibchips; Schreiben zweiter Daten, die über den E/A-Bus empfangen werden, nacheinander auf den primären Schreibchip und den sekundären Schreibchip, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen; Kopieren zweiter gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip; und nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten, Festlegen des zweiten Speicher-NAND-Flash-Chips als nur zum Lesen, des dritten Speicher-NAND-Flash-Chips als des primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als des sekundären Schreibchips und des zweiten Puffer-NAND-Flash-Chips als des zukünftigen sekundären Schreibchips.
  9. NAND-Flash-Speichervorrichtung nach Anspruch 7 oder 8, wobei die Kopieroperation umfasst: Kopieren der gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip derart, dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen sekundären Schreibchips belegen; Kopieren der gültigen Daten von dem zukünftigen sekundären Schreibchip zurück zu dem zukünftigen primären Schreibchip derart, dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen primären Schreibchips belegen; und Löschen der Speicherräume des zukünftigen primären Schreibchips und des zukünftigen sekundären Schreibchips, die von dem freien Raum belegt sind
  10. NAND-Flash-Speichervorrichtung nach einem der Ansprüche 6 bis 9, wobei: die Puffer-NAND-Flash-Chips Einniveauzellen-NAND-Flash-Chips (SLC-NAND-Flash-Chips) sind; und die Speicher-NAND-Flash-Chips Dreiniveauzellen-NAND-Flash-Chips (TLC-NAND-Flash-Chips) sind.
  11. Computerprogramm mit Befehlen, die, wenn sie auf einem Computer ausgeführt werden, eine NAND-Flash-Speichervorrichtung durch Folgendes puffern: Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus); Schreiben der empfangenen Daten auf einen ersten NAND-Flash-Chip der mehreren NAND-Flash-Chips und einen zweiten NAND-Flash-Chip der mehreren NAND-Flash-Chips nacheinander, so dass sich Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen; Empfangen eines Lesebefehls über den E/A-Bus; und als Antwort auf das Empfangen des Lesebefehls, Lesen von Daten von demjenigen des ersten NAND-Flash-Chips oder des zweiten NAND-Flash-Chips, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  12. Computerprogramm nach Anspruch 11, das Folgendes umfasst: Festlegen des ersten NAND-Flash-Chips als eines sekundären Schreibchips, des zweiten NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips, eines dritten NAND-Flash-Chips als eines primären Schreibchips, eines vierten NAND-Flash-Chips als eines zukünftigen primären Schreibchips und aller verbleibenden NAND-Flash-Chips als nur zum Lesen; Schreiben der empfangenen Daten auf den primären Schreibchip und den sekundären Schreibchip nacheinander, so dass sich Schreiboperationen auf jeden Chip zeitlich nicht überlappen; Kopieren gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip; und nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen des ersten NAND-Flash-Chips als nur zum Lesen, des zweiten NAND-Flash-Chips als des sekundären Schreibchips, des dritten NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des vierten NAND-Flash-Chips als des primären Schreibchips.
  13. Computerprogramm nach Anspruch 12, das Folgendes umfasst: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten: Festlegen eines fünften NAND-Flash-Chips als des zukünftigen primären Schreibchips; Schreiben von zweiten Daten, die über den E/A-Bus empfangen werden, nacheinander auf den primären Schreibchip und den sekundären Schreibchip, so dass sich Schreiboperationen auf jeden Chip zeitlich nicht überlappen; Kopieren von zweiten gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip; nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten, Festlegen des zweiten NAND-Flash-Chips als nur zum Lesen, des dritten NAND-Flash-Chips als des sekundären Schreibchips, des vierten NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des fünften NAND-Flash-Chips als des primären Schreibchips.
  14. Computerprogramm nach Anspruch 12 oder 13, wobei die Kopieroperation umfasst: Kopieren der gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen sekundären Schreibchips belegen; Kopieren der gültigen Daten von dem zukünftigen sekundären Schreibchip zurück zu dem zukünftigen primären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen primären Schreibchips belegen; und Löschen der Speicherräume des zukünftigen primären Schreibchips und des zukünftigen sekundären Schreibchips, die von dem freien Raum belegt sind.
  15. Computerprogramm nach einem der Ansprüche 12 bis 14, wobei: die Schreiboperation und die Kopieroperation während überlappender Zeitspannen ausgeführt werden.
  16. Computerprogramm mit Befehlen, die, wenn sie auf einem Computer ausgeführt werden, eine NAND-Flash-Speichervorrichtung durch Folgendes puffern: Empfangen von Daten über einen Eingabe/Ausgabe-Bus (E/A-Bus); Schreiben der empfangenen eingehenden Daten auf einen ersten Puffer-NAND-Flash-Chip der mehreren Speicher-NAND-Flash-Chips und einen ersten Speicher-NAND-Flash-Chip der mehreren Puffer-NAND-Flash-Chips nacheinander, so dass sich Schreiboperationen auf jeden NAND-Flash-Chip zeitlich nicht überlappen; Empfangen eines Lesebefehls über den E/A-Bus; und als Antwort auf das Empfangen des Lesebefehls, Lesen von Daten von demjenigen des ersten Puffer-NAND-Flash-Chips oder des ersten Speicher-NAND-Flash-Chips, der aktuell keine Schreiboperation ausführt, so dass Leseoperationen nicht hinter Schreiboperationen eingereiht werden.
  17. Computerprogramm nach Anspruch 16, das Folgendes umfasst: Festlegen des ersten Speicher-NAND-Flash-Chips als eines primären Schreibchips, eines zweiten Speicher-NAND-Flash-Chip als eines zukünftigen primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als eines sekundären Schreibchips, eines zweiten Puffer-NAND-Flash-Chips als eines zukünftigen sekundären Schreibchips und aller verbleibenden NAND-Flash-Chips als nur zum Lesen; Schreiben der empfangenen Daten auf den primären Schreibchip und den sekundären Schreibchip nacheinander, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen; Kopieren gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip; nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten, Festlegen des ersten Speicher-NAND-Flash-Chips als nur zum Lesen, des zweiten Speicher-NAND-Flash-Chips als des primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als des zukünftigen sekundären Schreibchips und des zweiten Puffer-NAND-Flash-Chips als des sekundären Schreibchips.
  18. Computerprogramm nach Anspruch 17, das Folgendes umfasst: nach dem Schreiben der empfangenen Daten und dem Kopieren der gültigen Daten: Festlegen eines dritten Speicher-NAND-Flash-Chips als des zukünftigen primären Schreibchips; Schreiben von zweiten Daten, die über den E/A-Bus empfangen werden, auf den primären Schreibchip und den sekundären Schreibchip nacheinander, so dass sich die Schreiboperationen auf jeden Chip zeitlich nicht überlappen; Kopieren zweiter gültiger Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip; und nach dem Schreiben der zweiten empfangenen Daten und dem Kopieren der zweiten gültigen Daten, Festlegen des zweiten Speicher-NAND-Flash-Chips als nur zum Lesen, des dritten Speicher-NAND-Flash-Chips als des primären Schreibchips, des ersten Puffer-NAND-Flash-Chips als des sekundären Schreibchips und des zweiten Puffer-NAND-Flash-Chips als des zukünftigen sekundären Schreibchips.
  19. Computerprogramm nach Anspruch 17 oder 18, wobei die Kopieroperation umfasst: Kopieren der gültigen Daten von dem zukünftigen primären Schreibchip zu dem zukünftigen sekundären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen sekundären Schreibchips belegen; Kopieren der gültigen Daten von dem zukünftigen sekundären Schreibchip zurück zu dem zukünftigen primären Schreibchip, so dass die gültigen Daten und der freie Raum jeweils im Wesentlichen zusammenhängende jeweilige Speicherräume des zukünftigen primären Schreibchips belegen; und Löschen der Speicherräume des zukünftigen primären Schreibchips und des zukünftigen sekundären Schreibchips, die von dem freien Raum belegt sind.
  20. Computerprogramm nach einem der Ansprüche 16 bis 19, wobei: die Puffer-NAND-Flash-Chips Einniveauzellen-NAND-Flash-Chips (SLC-NAND-Flash-Chips) sind; und die Speicher-NAND-Flash-Chips Dreiniveauzellen-NAND-Flash-Chips (TLC-NAND-Flash-Chips) sind.
DE202018102304.7U 2017-06-23 2018-04-25 NAND-Flash-Speichervorrichtung mit NAND-Puffer Active DE202018102304U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762524016P 2017-06-23 2017-06-23
US62/524,016 2017-06-23
US15/816,447 US10606484B2 (en) 2017-06-23 2017-11-17 NAND flash storage device with NAND buffer
US15/816,447 2017-11-17

Publications (1)

Publication Number Publication Date
DE202018102304U1 true DE202018102304U1 (de) 2018-10-30

Family

ID=61899381

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102018109929.0A Pending DE102018109929A1 (de) 2017-06-23 2018-04-25 NAND-Flash-Speichervorrichtung mit NAND-Puffer
DE202018102304.7U Active DE202018102304U1 (de) 2017-06-23 2018-04-25 NAND-Flash-Speichervorrichtung mit NAND-Puffer

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102018109929.0A Pending DE102018109929A1 (de) 2017-06-23 2018-04-25 NAND-Flash-Speichervorrichtung mit NAND-Puffer

Country Status (9)

Country Link
US (1) US10606484B2 (de)
EP (1) EP3418897B1 (de)
JP (1) JP7234144B2 (de)
KR (1) KR102276350B1 (de)
CN (1) CN109117085B (de)
DE (2) DE102018109929A1 (de)
GB (1) GB2563713B (de)
TW (1) TWI727160B (de)
WO (1) WO2018236440A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10481834B2 (en) * 2018-01-24 2019-11-19 Samsung Electronics Co., Ltd. Erasure code data protection across multiple NVME over fabrics storage devices
US11048430B2 (en) * 2019-04-12 2021-06-29 Netapp, Inc. Object store mirroring where during resync of two storage bucket, objects are transmitted to each of the two storage bucket
KR20200142219A (ko) 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
JP2021043908A (ja) * 2019-09-13 2021-03-18 キオクシア株式会社 メモリシステムおよび制御方法
US11269779B2 (en) 2020-05-27 2022-03-08 Microsoft Technology Licensing, Llc Memory system with a predictable read latency from media with a long write latency

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
KR101638764B1 (ko) * 2008-12-19 2016-07-22 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 균일한 판독 대기시간을 위한 중복 데이터 저장
US20100262773A1 (en) 2009-04-08 2010-10-14 Google Inc. Data striping in a flash memory data storage device
US8285946B2 (en) 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems
CN106021147B (zh) * 2011-09-30 2020-04-28 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
WO2013048451A1 (en) 2011-09-30 2013-04-04 Intel Corporation Presentation of direct accessed storage under a logical drive model
JP2013109404A (ja) * 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
US8301832B1 (en) 2012-03-23 2012-10-30 DSSD, Inc. Storage system with guaranteed read latency
KR102039537B1 (ko) 2013-03-15 2019-11-01 삼성전자주식회사 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법
US20140304452A1 (en) 2013-04-03 2014-10-09 Violin Memory Inc. Method for increasing storage media performance
US9213634B2 (en) * 2013-11-22 2015-12-15 Apple Inc. Efficient reuse of segments in nonoverwrite storage systems
US9632729B2 (en) * 2014-05-07 2017-04-25 Seagate Technology Llc Storage compute device with tiered memory processing
KR20160075229A (ko) 2014-12-19 2016-06-29 삼성전자주식회사 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템
US10031670B2 (en) * 2015-09-04 2018-07-24 Toshiba Memory Corporation Control unit and control method for controlling writes and background operations of multiple semiconductor storage devices
US9880778B2 (en) 2015-11-09 2018-01-30 Google Inc. Memory devices and methods
US10318175B2 (en) * 2017-03-07 2019-06-11 Samsung Electronics Co., Ltd. SSD with heterogeneous NVM types

Also Published As

Publication number Publication date
CN109117085A (zh) 2019-01-01
EP3418897A1 (de) 2018-12-26
EP3418897B1 (de) 2022-09-14
JP7234144B2 (ja) 2023-03-07
KR102276350B1 (ko) 2021-07-12
GB2563713A (en) 2018-12-26
US10606484B2 (en) 2020-03-31
KR20200003055A (ko) 2020-01-08
TW201905921A (zh) 2019-02-01
GB2563713B (en) 2020-01-15
CN109117085B (zh) 2021-08-20
US20180373440A1 (en) 2018-12-27
DE102018109929A1 (de) 2018-12-27
TWI727160B (zh) 2021-05-11
WO2018236440A1 (en) 2018-12-27
JP2020524839A (ja) 2020-08-20
GB201804693D0 (en) 2018-05-09

Similar Documents

Publication Publication Date Title
DE202018102304U1 (de) NAND-Flash-Speichervorrichtung mit NAND-Puffer
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE3909896C2 (de)
DE112010002663B4 (de) Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt
DE112017005890T5 (de) Abrufen von Datenpufferzeigern für direkten Speicherzugriff
EP2923261B1 (de) VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE2617408A1 (de) Datenverarbeitungsgeraet
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE102018130164A1 (de) Speicherungsvorrichtung mit programmierten zellenspeicherungsdichtenmodi, die eine funktion einer speicherungsvorrichtungskapazitätsnutzung sind
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102020102781A1 (de) Auswahl von massenspeicherungsvorrichtungs-streams zur speicherbereinigung auf der basis lokaler sättigung
DE202007019469U1 (de) Vorrichtung zum Kommunizieren von Befehls- und Adresssignalen
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE102019106126A1 (de) Massenspeicherungsvorrichtung mit vom Host eingeleiteter Pufferausräumung
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE102022101609A1 (de) Sehr kleine zonenunterstützung für speicherungsvorrichtungen
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE102020119400A1 (de) Techniken zum setzen eines 2-ebenen-auto-schliess-timers zum zugriff auf eine speichervorrichtung

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years