Method and system for managing program cycles including maintenance programming operations in a multi-layer memory

US9336133B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9336133-B2
Application numberUS-201313826738-A
CountryUS
Kind codeB2
Filing dateMar 14, 2013
Priority dateDec 31, 2012
Publication dateMay 10, 2016
Grant dateMay 10, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A system and method for managing program cycles in a multi-layer memory are disclosed. The method includes a controller receiving a request to program data from a host and, in advance of programming data associated with the request, determining a program cycle for programming the data associated with the request. The programming cycle may be a set of a host data write programming operation and any maintenance programming operations on an amount of data already programmed in the plurality of memory layers that is necessary to provide free memory capacity for a subsequent request to program data from the host. The controller programs the data associated with the host request, and the amount of data to be programmed in maintenance operations, in predetermined programming units according to the determined program cycle.

First claim

Opening claim text (preview).

We claim: 1. A method of managing data in a memory system having at least one flash memory die having a plurality of layers, each of the plurality of layers having a different bit-per-cell data capacity, and a controller in communication with the at least one flash memory die, the method comprising the controller: receiving requests to program data from a host; determining a program cycle, in advance of programming data associated with the requests, the program cycle comprising a set of a host data write programming operation and maintenance programming operations in at least one of the plurality of layers, for programming a predetermined amount of host data associated with the received requests and freeing an amount of memory capacity for a subsequent host data write programming operation of the predetermined amount of host data; determining an amount of data necessary to be programmed in the maintenance programming operations by reviewing a status of each of the plurality of layers of the at least one flash memory die and determining a number of maintenance operations in each of the plurality of layers required to free an amount of space sufficient to program the predetermined amount of host data in response to a subsequent request to program data without a need for prior maintenance operations; and after determining the program cycle, executing the host data write programming operation and any maintenance program operations in the determined program cycle. 2. The method of claim 1 , wherein the predetermined amount of host data comprises a programming unit having a fixed number of metapages that is a lowest common multiple of a whole number of metablocks in each of the plurality of layers. 3. The method of claim 1 , wherein reviewing the status of each of the plurality of layers comprises determining at least one of a presence of a minimum number of free blocks in each layer or an amount of valid data programmed in each of the plurality of layers. 4. The method of claim 1 , wherein determining the program cycle comprises selecting one of a predetermined plurality of program cycle types based on a status of a destination layer for the predetermined amount of host data and a status of each higher bit-per-cell layer identified in the program cycle types. 5. The method of claim 4 , wherein the at least one flash memory die comprises a plurality of flash memory die and wherein determining the program cycle comprises determining the program cycle for the destination layer in a first of the plurality of flash memory die and for at least one higher bit-per-cell layer linked to the destination layer in a different one of the plurality of flash memory die. 6. A method of managing data in a memory system having at least one flash memory die having a plurality of layers, each of the plurality of layers having a different bit-per-cell data capacity, and a controller in communication with the at least one flash memory die, the method comprising the controller: receiving requests to program data from a host; determining a program cycle, in advance of programming data associated with the requests, the program cycle comprising a set of a host data write programming operation and maintenance programming operations in at least one of the plurality of layers, for programming a predetermined amount of host data associated with the received requests and freeing an amount of memory capacity for a subsequent host data write programming operation of the predetermined amount of host data; after determining the program cycle, executing the host data write programming operation and any maintenance program operations in the determined program cycle; wherein each of the plurality of layers comprises a plurality of partitions, and each programmed block in a layer is exclusively classified as being in a respective one of the plurality of partitions in the layer; and wherein the method further comprises the controller, for each particular request of the received requests: determining if the data associated with the particular request is associated with a particular one of the plurality of partitions; and only permitting programming of the data associated with the particular request, and an amount of data previously programmed to be programmed in maintenance operations, according to the determined program cycle when no other program cycle associated with the particular one of the plurality of partitions is active. 7. The method of claim 6 , further comprising concurrently programming in one of the at least one flash memory die a first program cycle for data in a first of the received requests associated with a first of the plurality of partitions and a second program cycle for data in a second of the received requests associated with a second of the plurality of partitions. 8. A method of managing data in a memory system having a plurality of flash memory die having a plurality of layers, each of the plurality of layers having a different bit-per-cell data capacity, and at least one controller in communication with the plurality of flash memory die, the method comprising the controller: receiving a request to program data from a host; selecting one of the plurality of flash memory die in which to execute a program cycle; prior to programming data associated with the request, selecting a program cycle type from a predetermined number of program cycle types based on a type of data associated with the request and a status of each of the plurality of layers in the selected one of the plurality of flash memory die, wherein each of the predetermined number of program cycle types identifies a different combination of a host write programming operation and maintenance programming operations for completing a program cycle, and wherein the program cycle comprises writing a predetermined amount of data received from the host and executing an amount of maintenance programming operations such that sufficient memory capacity in each layer to which data is programmed during the program cycle is freed to program an additional amount of data in a next program cycle without triggering a prior maintenance operation; and executing the host data write programming operation and any maintenance program operations according to the selected program cycle type. 9. The method of claim 8 , wherein each of the plurality of layers in the plurality of flash memory die comprises a plurality of partitions associated with data of a respective type of data, and wherein selecting the program cycle type comprises selecting one of the predetermined number of program cycle types corresponding to a partition associated with the type of data in the request to program data. 10. The method of claim 8 , wherein the predetermined amount of data comprises a programming unit having a fixed number of metapages that is a lowest common multiple of a whole number of metablocks in each of the plurality of layers. 11. The method of claim 10 , wherein selecting the program cycle type comprises selecting the program cycle type based on at least one of a presence of a minimum number of free blocks in each layer or an amount of valid data programmed in each layer of the selected one of the plurality of flash memory die. 12. A mass storage memory system, comprising: at least one flash memory die having a plurality of layers, each of the plurality of layers having a different bit-per-cell data capacity and a plurality of memory blocks; and a controller in communication with the at least one flash memory die, the controller configured to: receive requests to program data from a host system; in advance of programming data associated with the received requests, d

Assignees

Inventors

Classifications

  • Allocation control and policies · CPC title

  • in block erasable memory, e.g. flash memory · CPC title

  • using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency · CPC title

  • Multilevel memory having cells with different number of storage levels · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9336133B2 cover?
A system and method for managing program cycles in a multi-layer memory are disclosed. The method includes a controller receiving a request to program data from a host and, in advance of programming data associated with the request, determining a program cycle for programming the data associated with the request. The programming cycle may be a set of a host data write programming operation and …
Who is the assignee on this patent?
Sandisk Technologies Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/0246. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue May 10 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).