A non-volatile memory system is disclosed that evaluates during a read before write operation whether to skip programming of portions of group of memory cells during a subsequent write operation. By evaluating skip information during a read before write operation, the write operation can be expedited. The additional overhead for evaluating skip information is consumed during the read before write operation. By performing a skip evaluation during the read before write operation, a full analysis of the availability of skipping programming for memory cells can be performed. Skip evaluations in different embodiments may be performed for entire bay address cycles, column address cycles, and/or sense amplifier address cycles. In some embodiments, some skip evaluations are performed during read before write operations while others are deferred to the write operation. In this manner, the number of data latches for storing skip information can be decreased.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method of programming non-volatile storage, comprising: receiving a request to write a set of user data to a non-volatile memory array; identifying a set of non-volatile storage elements from the non-volatile memory array for writing the set of user data and a set of bay address cycles for writing the set of user data to the set of non-volatile storage elements; reading memory data from the set of non-volatile storage elements prior to writing the set of user data; comparing the memory data to the set of user data to determine whether any bay address cycles of the set should be skipped; and programming the set of user data to the set of non-volatile storage elements based on comparing the memory data to the set of user data.
2. A method according to claim 1 , wherein comparing the memory data to the set of user data is performed during a read before write operation that is executed prior to writing any of the set of user data.
3. A method according to claim 2 , further comprising: storing in a set of data latches during the read before write operation information associated with comparing the memory data to the set of user data to determine whether any bay address cycles of the set should be skipped, the set of data latches including a data latch for each bay address cycle, each data latch storing an indication of whether a corresponding bay address cycle should be skipped.
4. A method according to claim 3 , wherein: identifying a set of bay address cycles includes identifying a set of column address cycles and a set of sense amp address cycles for writing the set of user data to the set of non-volatile storage elements; comparing the memory data to the set of user data includes comparing the memory data to the set of user data to determine whether any column address cycles and any sense amp address cycles should be skipped; and programming the first set of data to the set of non-volatile storage elements is based on whether any column address cycles and any sense amp address cycles should be skipped.
5. A method according to claim 4 , further comprising: storing in the set of data latches during the read before write operation information associated with any column address cycles and sense amp addresses of the set should be skipped, the set of data latches including a data latch for each sense amplifier address cycle indicating whether the each sense amplifier address cycle that should be skipped.
6. A method according to claim 3 , wherein: identifying a set of bay address cycles includes identifying a set of column address cycles; comparing the memory data to the set of user data includes comparing the memory data to the set of user data to determine whether any column address cycles should be skipped; and programming the first set of data to the set of non-volatile storage elements is based on whether any column address cycles should be skipped.
7. A method according to claim 6 , further comprising: storing in the set of data latches during the read before write operation information associated with any column address cycles of the set that should be skipped.
8. A method according to claim 7 , wherein programming the set of user data includes: determining from the set of data latches that a first column address cycle should not be skipped; in response to determining that first column address cycle should not be skipped, programming a first sense amplifier address cycle of the first column address cycle; and while programming the first sense amplifier address cycle, evaluating whether additional sense amplifier address cycles of the first column address cycle should be skipped.
9. A method according to claim 7 , further comprising: for each column address cycle that should be skipped, storing in the set of data latches during the read before write operation an identifier of a first sense amplifier address cycle of the column address cycle that should not be skipped.
10. A method according to claim 9 , wherein programming the set of user data includes: determining from the set of data latches that a first column address cycle should not be skipped; in response to determining that that first column address cycle should not be skipped, programming the first sense amplifier address cycle of the first column address cycle based on the identifier; and while programming the first sense amplifier address cycle, evaluating whether additional sense amplifier address cycles of the first column address cycle should be skipped.
11. A method according to claim 1 , wherein: programming the set of user data to the set of non-volatile storage elements comprises writing less than all of the set of user data to the set of non-volatile storage elements by skipping at least one bay address cycle of the set.
12. A method according to claim 11 , wherein: the set of bay address cycles includes a first bay address cycle associated with a subset of non-volatile storage element from the set of non-volatile storage elements; comparing the memory data to the set of user data comprises determining whether a subset of the set of user data corresponding to the first bay address cycle matches a subset of the memory data read from the subset of non-volatile storage elements; programming the set of user data comprises writing the subset user data to the subset of non-volatile storage elements if the subset of user data does not match the subset of memory data; and programming the set of user data comprises skipping the first bay address cycle and not writing the subset of user data if the subset user data matches the subset of memory data.
13. A method according to claim 1 , wherein the non-volatile memory array is a three dimensional non-volatile memory array.
14. A non-volatile memory system, comprising: a non-volatile memory array; a set of data latches; one or more control circuits in communication with the plurality of non-volatile storage elements and the set of data latches, the one or more control circuits configured to identify a set of bay address cycles for writing a set of user data for a write request to a set of non-volatile storage elements in the non-volatile memory array, the one or more control circuits configured to compare memory data read from the set of non-volatile storage elements to the set of user data and generate bitmap data identifying whether individual bay address cycles of the set of bay address cycles should be skipped during programming for the set of user data, the one or more control circuits are configured to store the bitmap data in the set of data latches.
15. A non-volatile memory system according to claim 14 , wherein the one or more control circuits configured to compare the memory data to the set of user data during a read before write operation that is executed prior to writing any user data of the set of user data.
16. A non-volatile memory system according to claim 15 , wherein: the bitmap data is first bitmap data; the one or more control circuits configured to identify a set of column address cycles for writing the set of user data for the write request and generate second bitmap data identifying whether individual column address cycles of the set of column address cycles can should be skipped during programming for the set of user data, the one or more control circuits configured to store the second bitmap data in the set of data latches.
17. A non-volatile memory system according to claim 16 , wherein: the one or more control circuits configured to identify a set of sense amp address cycles for writing the set of user data for the write request including a first sense amp address cycle of a first column address cycle, the one or more control circuits configured to determine that the first column address cycle should not be skipped and that the first sense amplifier address cycle should not be skipped, the one or more control circuits configured to store an identifier of the first sense amplifier address cycle in the set of data latches.
18. A non-volatile memory system according to claim 17 , wherein: the one or more control circuits are configured to program user data for the first sense amplifier address cycle; and the one or more control circuits configured to generate bitmap data for each sense amplifier address cycle of the first column address cycle that follows the first sense amplifier address cycle while programming the first sense amplifier address cycle.
19. A non-volatile memory system according to claim 14 , wherein: the one or more control circuits includes a state machine and a page register, the page register configured to store the set of user data prior to writing to the set of user data to the non-volatile memory array.
20. A non-volatile memory system according to claim 14 , wherein the non-volatile memory array is a three dimensional non-volatile memory array.
21. A method of programming non-volatile storage, comprising: receiving a request to write a set of user data to a non-volatile memory array; identifying a set of non-volatile storage elements from the non-volatile memory array for writing the set of user data; identifying a set of bay address cycles, a set of column address cycles and a set of sense amp address cycles for writing the set of user data to the set of non-volatile storage elements; reading memory data from the set of non-volatile storage elements during a read before write operation prior to writing the set of user data; comparing the memory data to the set of user data to determine whether any bay address cycles, column address cycles and sense amp address cycles should be skipped; and programming the set of user data to the set of non-volatile storage elements based comparing the memory data to the set of user data.
22. A method of programming non-volatile storage, comprising: identifying a set of non-volatile storage elements for a request to write a set of user data to a non-volatile memory array using a set of bay address cycles, a set of column address cycles, and a set of sense amp address cycles; prior to writing the set of user data, comparing memory data from the set of non-volatile storage elements to the set of user data to determine whether any bay address cycles and any column address cycles should be skipped; determining that a first column address cycle of a first bay address cycle should not be skipped; programming the first set of data to the set of non-volatile storage elements, said programming includes writing a portion of the set of user data during a first sense amp address cycle of the first column address cycle; and while writing the portion of the set of user data during the first sense amp address cycle, evaluating whether a plurality of additional sense amp cycles of the first column address cycle should be skipped.
23. A method according to claim 22 , wherein comparing the memory data to the set of user data is performed during a read before write operation that is executed prior to writing any user data of the set of user data, the method further comprising; storing in a set of data latches during the read before write operation an indication of whether each bay address cycle should be skipped; storing in the set of data latches during the read before write operation an indication of whether each column address cycle should be skipped; and storing in the set of data latches an indication of whether the plurality of additional sense amp cycles of the first column address cycle should be skipped, wherein said storing is performed during programming for the first set of data.
24. A method according to claim 23 , wherein the portion of the set of user data is a first portion and programming the set of user data includes: writing a second portion of the first set of data during a second sense amplifier address cycle of the first column address cycle based on an indication in the set of data latches that the second sense amplifier address cycle should not be skipped; skipping writing of a third portion of the first set of data during a third sense amplifier address cycle of the first column address cycle based on an indication in the set of data latches that the third sense amplifier address cycle should be skipped.
25. A method according to claim 24 , wherein the first sense amp address cycle is performed prior to the plurality of additional sense amp cycles.
26. A method of programming non-volatile storage, comprising: identifying a set of non-volatile storage elements in response to a request to write a set of user data to a non-volatile memory array using a set of bay address cycles, a set of column address cycles, and a set of sense amp address cycles; prior to writing the set of user data, comparing memory data from the set of non-volatile storage elements to the set of user data to determine whether any bay address cycles and column address cycles should be skipped; determining that a first column address cycle of a first bay address cycle should not be skipped; determining a first sense amp address cycle of the first column address cycle that should not be skipped; storing an identifier for the first sense amp address cycle prior to writing the set of user data; programming the first set of data to the set of non-volatile storage elements based on the evaluation, said programming includes writing a portion of the set of user data during the first sense amp address cycle of the first column address cycle; while writing the portion of the set of user data during the first sense amp address cycle, evaluating whether a plurality of additional sense amp cycles of the first column address cycle should be skipped; storing skip information for the plurality of additional sense amplifier cycles; and programming a remaining portion of the set of user data for the first column address cycle based on the skip information for the plurality of additional sense amplifier cycles.
27. A method according to claim 26 , further comprising: storing in a set of data latches during a read before write operation an indication of whether each bay address cycles of the set should be skipped; and storing in the set of data latches during the read before write operation an indication of whether each column address cycles of the set should be skipped; wherein storing the identifier includes storing an address for the first sense amplifier address cycle in the set of data latches during the read before write operation.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
March 15, 2013
February 3, 2015
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.