IP Library Granted Patent US 9,711,225
Granted Patent B2
US 9,711,225 · App. 14/515,387 · Granted Jul 18, 2017

Regrouping and skipping cycles in non-volatile memory

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,711,225
App. No.
14/515,387
Granted
Jul 18, 2017
Kind
B2
Abstract

A non-volatile memory system utilizes multiple programming cycles to write units of data, such as a logical page of data, to a non-volatile memory array. User data is evaluated before writing to determine whether programming can be skipped for bay addresses. The system determines whether programming can be skipped for an initial set of bay groups. If a bay group cannot be skipped, the system determines whether the bay group includes individual bays that may be skipped. Bays are regrouped into new bay groups to reduce the number of BAD cycles during programming. Independent column addressing for multiple bays within a bay group is provided. During a column address cycle, a separate column address is provided to the bays to select different columns for programming within each bay. By simultaneously programming multiple column addresses during a single column address cycle, the system may skip programming for some column address cycles.

Claims (59)

1. A method of programming non-volatile storage, comprising:

providing a first column address to a first bay of non-volatile storage elements for a first column address cycle, wherein the first column address is associated with a first column that includes non-volatile storage elements in the first bay and a second bay of non-volatile storage elements;

providing a second column address to the second bay of non-volatile storage elements for the first column address cycle and a second column address cycle, wherein the second column address is associated with a second column that includes non-volatile storage elements in the first bay and the second bay; and

in response to the first column address and the second column address, simultaneously programming in the first column address cycle a first portion of the first column of non-volatile storage elements in the first bay and a second portion of the second column of non-volatile storage elements in the second bay, wherein programming in the first column address cycle includes skipping programming for a second portion of the first column in the second bay; and

programming in the second column address cycle a first portion of the second column in the first bay.

2. The method of claim 1 , wherein:

simultaneously programming includes skipping programming for the first portion of the second column of non-volatile storage elements in the first bay.

3. The method of claim 1 , further comprising:

identifying the first column and the second column for writing data in response to a write request;

comparing the user data to memory data from the first column of non-volatile storage elements and the second column of non-volatile storage elements;

based on the comparing, determining that programming cannot be skipped for the first column of non-volatile storage elements or the second column of non-volatile storage elements;

based on the comparing, determining that programming for the first portion of the first column cannot be skipped and that programming for the second portion of the second column cannot be skipped; and

generating bitmap data to group the first column address and the second column address into the first column address cycle.

4. The method of claim 3 , wherein:

providing the first column address to the first bay and providing the second column address to the second bay are performed simultaneously for the first column address cycle in response to the bitmap data.

5. The method of claim 1 , wherein:

the first bay of non-volatile storage elements and the second bay of non-volatile storage elements are part of a monolithic three-dimensional non-volatile memory array.

6. The method of claim 1 , wherein:

the first bay and the second bay are part of a bay group; and

the first column and the second column span the bay group.

7. The method of claim 6 , wherein the first column address cycle and the second column address cycle are performed for a first write request, the method further comprising:

determining in response to a second write request that programming for the first column address cannot be skipped for the first bay and the second bay; and

providing the first column address to the bay group to simultaneously program the first column across the first bay and the second bay in response to the second write request.

8. A non-volatile memory system, comprising:

a non-volatile memory array including a plurality of non-volatile storage elements arranged into a set of columns and a set of bays, wherein each column includes a plurality of subsets of non-volatile storage elements, wherein each subset of non-volatile storage elements from each column is associated with one bay from the set of bays; and

one or more control circuits in communication with the non-volatile memory array, the one or more control circuits configured to determine for a write request whether programming can be skipped for each subset of non-volatile storage elements from a first column of non-volatile storage elements and a second column of non-volatile storage elements based on comparing the write request to memory data from the first column of non-volatile storage elements and the second column of non-volatile storage elements, the one or more control circuits configured to group into a first column address cycle a first subset of non-volatile storage elements from the first column at a first bay that cannot be skipped with a second subset of non-volatile storage elements from the second column at a second bay that cannot be skipped; and group into a second column address cycle a first subset of non-volatile storage elements from the second column at the first bay that cannot be skipped.

9. The non-volatile memory system of claim 8 , wherein:

the one or more control circuits are configured to program the first subset of non-volatile storage elements from the first column and the second subset of non-volatile storage elements from the second column in the first column address cycle.

10. The non-volatile memory system of claim 9 , wherein:

the one or more control circuits are configured to select the first subset of non-volatile storage elements from the first column for programming during the first column address cycle by providing a first column address to a first bay including the first subset; and

the one or more control circuits are configured to select the second subset of non-volatile storage elements from the second column for programming during the first column address cycle by providing a second column address to a second bay including the second subset.

11. The non-volatile memory system of claim 10 , wherein:

the one or more control circuits are configured to group the first subset of non-volatile storage elements and the second subset of non-volatile storage elements by providing the first column address to the first bay for the first column address cycle and providing the second column address to the second bay for the first column address cycle.

12. The non-volatile memory system of claim 11 , wherein:

the one or more control circuits are configured to skip programming for a second subset of non-volatile storage elements from the first column during the first column address cycle based on comparing the write request to the memory data from the first column, wherein the second subset of non-volatile storage elements is part of the second bay.

13. A method of programming non-volatile storage, comprising:

identifying a set of columns for writing user data in response to a write request, wherein each column is associated with a plurality of bays;

comparing the user data to memory data from a set of non-volatile storage elements associated with the set of columns;

determining whether programming can be skipped for each of the columns based on comparing the user data;

for each column for which programming cannot be skipped, determining whether a portion of the column at each bay can be skipped; and

grouping in a first column address cycle a first column address to program a first portion of a first column at a first bay and a second column address to program a second portion of a second column at a second bay;

providing in a second column address cycle the second column address to program a first portion of the second column at the first bay.

14. The method of claim 13 , wherein grouping in the first column address cycle comprises:

providing the first column address to the first bay and the second column address to the second bay for the first column address cycle; and

simultaneously programming a first subset of non-volatile storage elements from the first column and a second subset of non-volatile storage elements from the second column during the single column address cycle.

15. The method of claim 13 , wherein the write request is a first write request, the method further comprising:

determining that programming cannot be skipped for the first column or the second column in response to a second write request;

providing the first column address to the first bay and the second bay during a first column address cycle associated with the second write request; and

providing the second column address to the first bay and the second bay during a second column address cycle associated with the second write request.

16. A non-volatile memory system, comprising:

a non-volatile memory array including a plurality of non-volatile storage elements arranged into a set of columns and a set of bays, wherein each column includes a plurality of subsets of non-volatile storage elements, wherein each subset of non-volatile storage elements from each column is associated with one bay from the set of bays;

a set of data latches configured to store bitmap data that identifies skip information for each subset of non-volatile storage elements for each column; and

one or more control circuits in communication with the non-volatile memory array, the one or more control circuits configured to program a first set of non-volatile storage elements associated with a first column address during a first column address cycle, wherein the first set of non-volatile storage elements is part of a first column of non-volatile storage elements and is located in a first bay, the one or more control circuits configured to program a second set of non-volatile storage elements associated with a second column address during the first column address cycle, wherein the second set of non-volatile storage elements is part of a second column of non-volatile storage elements and is located in a second bay, the one or more control circuits configured to program a first set of non-volatile storage elements associated with the second column address during a second column address cycle, wherein the first set of non-volatile storage elements associated with the second column address is part of the second column and is located in the first bay.

17. The non-volatile memory system of claim 16 , wherein:

each column is associated with a column address; and

the skip information identifies for each column address whether programming for the column address can be skipped individually for each bay.

18. The non-volatile memory system of claim 16 , wherein:

the set of non-volatile storage elements includes a set of memory cells including a reversible resistance-switching material; and

the non-volatile memory array is a monolithic three-dimensional non-volatile memory array.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2021
From: SANDISK TECHNOLOGIES LLC
To: WODEN TECHNOLOGIES INC.
Reel/Frame 058871/0928 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT LISTED PATENT NUMBER 8853569 TO THE CORRECT PATENT NUMBER 8883569 PREVIOUSLY RECORDED ON REEL 038300 FRAME 0665. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 25, 2016
From: SANDISK 3D LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038520/0552 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2016
From: SANDISK 3D LLC.
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038300/0665 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2014
From: BALAKRISHNAN, GOPINATH
To: SANDISK 3D LLC
Reel/Frame 033960/0975 →