IP Library Granted Patent US 9,940,070
Granted Patent B2
US 9,940,070 · App. 14/928,649 · Granted Apr 10, 2018

System and method for rescheduling host and maintenance operations in a non-volatile memory

Inventors: Alan Welsh Sinclair (Falkirk, GB); Sergey Anatolievich Gorobets (Edinburgh, GB)
Assignee: SanDisk Technologies LLC
G06F3/0659G06F3/0611G06F3/0679G06F3/0688G06F12/02
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,940,070
App. No.
14/928,649
Granted
Apr 10, 2018
Kind
B2
Abstract

Systems and methods for balancing maintenance and programming host data across multiple maintenance source blocks in a non-volatile memory are disclosed. A memory system may include non-volatile memory and a controller configured to execute one or more of the steps of selecting a fixed plurality of maintenance source blocks for executing a balance cycle of maintenance and host writes across the selected fixed plurality of maintenance source blocks. The method interleaves moving of valid data from source blocks with host data writes to achieve a balance of free space generation and consumption for the balance cycle, while periodically reevaluating an overall interleave ratio and/or substituting other previously programmed blocks for one of the previously selected plurality during the balance cycle.

Claims (42)

1. A method of managing data comprising:

performing, in a non-volatile memory system having a non-volatile memory with a plurality of layers and a controller in communication with the at least one non-volatile memory, each of the plurality of layers having a different bit-per-cell data capacity, the following steps:

identifying a layer in the plurality of layers for performing a balance cycle of maintenance operations;

selecting a fixed plurality of previously programmed blocks in the identified layer for the balance cycle;

determining a balance cycle interleave ratio of host data writes to maintenance writes based on a total amount of valid data in the fixed plurality of previously programmed blocks, wherein the balance cycle of maintenance operations comprises operations to move all valid data from each of the fixed plurality of previously programmed blocks selected for the balance cycle interleaved with writing an amount of host data equal to an amount of obsolete data in the plurality of previously programmed blocks such that an amount of free space created by moving the valid data from the fixed plurality of previously programmed blocks balances an amount of free space consumed by host writes during the balance cycle;

initiating a maintenance operation on a first block of the fixed plurality of previously programmed blocks using the determined balance cycle interleave ratio;

at each of a plurality of predetermined scheduling points in the balance cycle of maintenance operations, determining an updated balance cycle interleave ratio based on a current remaining amount of valid data in the fixed plurality of previously programmed blocks; and

applying the updated balance cycle interleave ratio to remaining maintenance operations in the balance cycle of maintenance operations.

2. The method of claim 1 , wherein selecting the fixed plurality of previously programmed blocks comprises selecting previously programmed blocks having a least amount of valid data.

3. The method of claim 2 , wherein determining the updated balance cycle interleave ratio comprises:

determining, when a predetermined scheduling point is reached in the balance cycle, whether a change has occurred in an amount of valid data in any of the fixed plurality of previously programmed blocks still awaiting a maintenance operation in the balance cycle; and

when the change has occurred, updating the balance cycle interleave ratio to increase a ratio of host writes to maintenance writes in a remainder of the balance cycle based on the change.

4. The method of claim 2 , wherein determining the updated balance cycle interleave ratio comprises:

determining, when a predetermined scheduling point is reached in the balance cycle, whether an amount of valid data in another previously programmed block in the layer is less than an amount of valid data in a remaining one of the fixed plurality of previously programmed blocks awaiting a maintenance operation;

when the amount of valid data in the another previously programmed block is less than the amount of valid data in the remaining one, replacing the remaining one of the fixed plurality of previously programmed blocks awaiting the maintenance operation with the another previously programmed block to form a current remaining set of the fixed plurality of previously programmed blocks awaiting the maintenance operation; and

determining the updated balance cycle interleave ratio based on a current remaining amount of valid data in the current remaining set; and applying the updated interleave ratio to remaining maintenance operations in the balance cycle.

5. The method of claim 1 , wherein selecting the fixed plurality of previously programmed blocks comprises:

selecting previously programmed blocks having a least amount of valid data.

6. The method of claim 1 , wherein non-volatile memory comprises a non-volatile memory die and the plurality of layers are contained within the non-volatile memory die.

7. The method of claim 1 , wherein the non-volatile memory comprises an independently managed set of non-volatile memory die and the plurality of layers span across all of the non-volatile memory die in the independently managed set.

8. The method of claim 1 , wherein the non-volatile memory comprises a three dimensional memory array.

9. A method of managing data comprising:

performing, in a non-volatile memory system having a non-volatile memory with a plurality of layers and a controller in communication with the at least one non-volatile memory, each of the plurality of layers having a different bit-per-cell data capacity, the following steps:

selecting a fixed plurality of previously programmed blocks in in the non-volatile memory for executing a balance cycle of maintenance operations;

determining a balance cycle interleave ratio of host data writes to maintenance writes based on a total amount of valid data in the fixed plurality of previously programmed blocks;

initiating a maintenance operation on a first block of the fixed plurality of previously programmed blocks using the determined balance cycle interleave ratio;

after initiating the maintenance operation, and in response to reaching a predetermined scheduling point in the balance cycle, the non-volatile memory system determining whether to substitute a different previously programmed block for one of the fixed plurality of previously programmed blocks based on a change in an amount of valid data in one of the fixed plurality of previously programmed blocks or in the different previously programmed block; and

substituting the different previously programmed block for one of the fixed plurality of previously programmed blocks in response to the change in the amount of valid data.

10. The method of claim 9 , wherein substituting the different previously programmed block further comprising substituting the different previously programmed block for one of the fixed plurality of previously programmed blocks when the different previously programmed blocks contains less valid data than the one of the fixed plurality of previously programmed blocks.

11. The method of claim 9 , wherein substituting the different previously programmed block further comprising substituting the different previously programmed block for one of the fixed plurality of previously programmed blocks when the amount of valid data in one of the fixed plurality decreases prior to initiating a maintenance operation on the one of the plurality of previously programmed blocks.

12. A memory system, comprising:

at least one non-volatile memory 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;

data management circuitry in communication with the non-volatile memory, the data management circuitry configured to select a fixed plurality of previously programmed blocks in one of the plurality of layers layer for a balance cycle of maintenance operations, the balance cycle comprising a set of maintenance cycles for the fixed plurality of previously programmed blocks; and

program interleave circuitry configured to:

determine a balance cycle interleave ratio of host data writes to maintenance writes based on a total amount of valid data in the fixed plurality of previously programmed blocks, wherein the balance cycle of maintenance operations comprises operations to move all valid data from each of the fixed plurality of previously programmed blocks selected for the balance cycle interleaved with writing an amount of host data equal to an amount of obsolete data in the plurality of previously programmed blocks such that an amount of free space created by moving the valid data from the fixed plurality of previously programmed blocks balances an amount of free space consumed by host writes during the balance cycle;

upon determining the balance cycle interleave ratio, initiate a maintenance operation on a first block of the fixed plurality of previously programmed blocks using the determined balance cycle interleave ratio;

at each of a plurality of predetermined scheduling points in the balance cycle of maintenance operations, determine an updated balance cycle interleave ratio based on a current remaining amount of valid data in the fixed plurality of previously programmed blocks; and

apply the updated balance cycle interleave ratio to remaining maintenance operations in the balance cycle of maintenance operations until a next scheduling point of the predetermined plurality of scheduling points.

13. The system of claim 12 , wherein the data management circuitry is configured to select the fixed plurality of previously programmed blocks having a least amount of valid data.

14. The system of claim 12 , wherein non-volatile memory comprises a non-volatile memory die and the plurality of layers are contained within the non-volatile memory die.

15. The system of claim 12 , wherein the non-volatile memory comprises an independently managed set of non-volatile memory die and the plurality of layers span across all of the non-volatile memory die in the independently managed set.

16. The system of claim 12 , wherein the non-volatile memory comprises a three dimensional memory array.

Assignments (5)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038812/0954 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2015
From: SINCLAIR, ALAN WELSH; GOROBETS, SERGEY ANATOLIEVICH
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 037330/0199 →
Continuity (1)
Related Publication 20170123726A1 · May 4, 2017