IP Library Granted Patent US 10,649,661
Granted Patent B2
US 10,649,661 · App. 15/633,608 · Granted May 12, 2020

Dynamically resizing logical storage blocks

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 10,649,661
App. No.
15/633,608
Granted
May 12, 2020
Kind
B2
Abstract

Apparatuses, systems, methods, and computer program products are disclosed for dynamically resizing logical storage blocks. A controller for a non-volatile storage device includes a block component that determines a total number of available erase blocks of the non-volatile storage device. A controller for a non-volatile storage device includes a size module that determines numbers of erase blocks from available erase blocks to include in each of a plurality of logical blocks as a function of a total number of available erase blocks such that the numbers of erase blocks for each of the logical blocks deviates from each other by less than a predetermined deviation limit. A controller for a non-volatile storage device includes a map module that generates logical blocks for the non-volatile storage device by assigning determined numbers of erase blocks to each of the logical blocks.

Claims (55)

1. An apparatus comprising:

a controller for a non-volatile storage device, the controller comprising:

a block component configured to determine a total number of available erase blocks of the non-volatile storage device;

a size component configured to determine numbers of erase blocks from the available erase blocks to include in each of a plurality of logical blocks as a function of the total number of available erase blocks, the numbers of erase blocks for each of the logical blocks deviating from each other by less than a predetermined deviation limit;

a map component configured to generate the logical blocks for the non-volatile storage device by assigning the determined numbers of erase blocks to each of the logical blocks;

a reserve component configured to maintain a reserve pool of available erase blocks that are not assigned to a logical block, the reserve pool sized to ensure that the numbers of erase blocks that are assigned to each of the logical blocks deviates by less than the predetermined deviation limit, the reserve pool comprising available erase blocks from each plane of the non-volatile storage device; and

an update component configured to generate a new logical block in response to dissolving at least one of the plurality of logical blocks, the new logical block comprising one or more erase blocks from the at least one dissolved logical block and erase blocks from the reserve pool of available erase blocks such that the numbers of erase blocks for the new logical block satisfies the predetermined deviation limit relative to other logical blocks, the erase blocks from the reserve pool selected such that the new logical block comprises an erase block from each plane of the non-volatile storage device wherein the lowest age erase blocks that are available from each plane are selected for the new logical block.

2. The apparatus of claim 1 , wherein the controller further comprises an update component configured to:

track a refresh condition associated with each logical block, the refresh condition comprising one or more of a program/erase cycle count for the erase blocks of the logical block, an age of the logical block, and a failed bit count for the erase blocks of the logical block; and

dissolve the logical grouping of erase blocks included in the logical block in response to determining one of:

the program/erase cycle count satisfies a predetermined program/erase cycle threshold;

the age of the logical block satisfies an age threshold for the logical blocks; and

the failed bit count for the erase blocks satisfies a failed bit count threshold.

3. The apparatus of claim 2 , wherein:

the block component is further configured to determine a new total number of available erase blocks that are candidates for inclusion in new logical blocks in response to the update component dissolving the old logical blocks;

the size component is further configured to determine new numbers of erase blocks from the available erase blocks to include in each of the new logical blocks as a function of the total number of available erase blocks such that the numbers of erase blocks for each of the new logical blocks deviates by less than the predetermined deviation limit; and

the map component is further configured to generate the new logical blocks by assigning the determined new numbers of erase blocks to each of the new logical blocks.

4. The apparatus of claim 3 , wherein the size component is further configured to:

determine the number of erase blocks that are still useable from each of the dissolved logical blocks;

store each number of erase blocks that are still usable from each of the dissolved logical blocks in a queue; and

set, for each new logical block, the number of erase blocks to include in each new logical block to the next number of erase blocks popped off of the queue.

5. The apparatus of claim 1 , wherein the reserve component is further configured to assign at least one of the erase blocks from the pool of erase blocks in each logical block when the logical blocks are generated.

6. The apparatus of claim 1 , wherein the map component is further configured to assign each of the available erase blocks to logical blocks when the logical blocks are generated such that there are no unassigned erase blocks of the available erase blocks that can be assigned to logical blocks.

7. The apparatus of claim 1 , wherein a logical block is comprised of a virtual grouping of erase blocks, the map component being further configured to maintain a mapping of erase blocks to the logical blocks that the erase blocks are assigned to, the mapping being updated in response to new logical blocks being generated.

8. The apparatus of claim 1 , wherein the map component is further configured to select erase blocks to assign to the logical blocks as a function of an age of each of the erase blocks, erase blocks with a lower age being selected to be assigned to logical blocks before erase blocks with a higher age.

9. The apparatus of claim 8 , wherein the age of an erase block is defined as one or more of a total time that the erase block is activated, a time since the erase block was manufactured, and a number of program/erase cycles that have been performed on the erase block.

10. The apparatus of claim 8 , wherein the map component is further configured to select erase blocks to assign to the logical blocks as a function of the ages of the erase blocks such that the average ages of the erase blocks included in the logical blocks satisfies a predetermined age threshold.

11. The apparatus of claim 1 , wherein the predetermined deviation limit is selected such that the numbers of erase blocks for each of the logical blocks deviates by at most one erase block.

12. The apparatus of claim 1 , wherein the predetermined deviation limit comprises a percentage such that the numbers of erase blocks for each of the logical blocks deviates by less than twenty-five percent.

13. The apparatus of claim 1 , wherein the non-volatile storage device comprises a plurality dies, each die comprising a plurality of planes, and each plane comprising a plurality of erase blocks, each logical block comprising erase blocks selected from each plane of the die, the erase blocks from each plane of the die being assigned to a logical block in a sequential order of the planes.

14. An apparatus comprising:

means for identifying a pool of erase blocks of a non-volatile recording medium to assign to a plurality of virtual blocks, each of the plurality of virtual blocks comprising a plurality of erase blocks that are logically combined to form a single storage unit of the non-volatile recording medium;

means for calculating sizes for each of the plurality of virtual blocks, the sizes defining a number of erase blocks to assign to each of the plurality of virtual blocks;

means for assigning erase blocks from the pool of erase blocks to each of the virtual blocks such that variations in sizes between each virtual block is less than twenty-five percent;

means for maintaining a reserve pool of erase blocks comprising identified erase blocks that are not assigned to the plurality of virtual blocks, the reserve pool sized to ensure that the sizes of the virtual blocks vary by less than twenty-five percent, the reserve pool comprising available erase blocks from each plane of the non-volatile recording medium; and

means for generating a new logical block in response to dissolving at least one of the plurality of logical blocks, the new logical block comprising one or more erase blocks from the at least one dissolved logical block and erase blocks from the reserve pool of available erase blocks such that the numbers of erase blocks for the new logical block satisfies the predetermined deviation limit relative to other logical blocks, the erase blocks from the reserve pool selected such that the new logical block comprises an erase block from each plane of the non-volatile recording medium wherein the lowest age erase blocks that are available from each plane are selected for the new logical block.

15. The apparatus of claim 14 , further comprising:

means for tracking a refresh condition associated with each virtual block, the refresh condition comprising one or more of a program/erase cycle count for the erase blocks of the virtual block, an age of the virtual block, and a failed bit count for the erase blocks of the virtual block; and

means for dissolving the logical grouping of erase blocks included in the virtual block in response to determining one of:

the program/erase cycle count satisfies a predetermined program/erase cycle threshold;

the age of the virtual block satisfies an age threshold for the virtual blocks; and

the failed bit count for the erase blocks satisfies a failed bit count threshold.

16. The apparatus of claim 15 , further comprising:

means for identifying a new pool of erase blocks to assign to new virtual blocks in response to the old virtual blocks being dissolved;

means for calculating sizes for each of the new virtual blocks; and

means for assigning erase blocks from the new pool of erase blocks to each of the new virtual blocks such that variations in sizes between each new virtual block is less than twenty-five percent.

17. The apparatus of claim 14 , further comprising means for assigning erase blocks to virtual blocks as a function of the ages of the erase blocks such that the average ages of the erase blocks assigned to the virtual blocks satisfies a predetermined age threshold.

18. A system comprising:

a non-volatile memory device, the non-volatile memory device comprising a plurality of erase blocks; and

a controller for the non-volatile memory device, the controller performing operations for:

determining how many of the plurality of erase blocks are usable for creating super blocks, the super blocks comprising storage units of the non-volatile memory device that are comprised of a combination of a plurality of erase blocks;

generating a mapping of the usable erase blocks to the super blocks such that the number of usable erase blocks that are mapped to each of the super blocks varies by less than a threshold size;

periodically modifying the mapping of the useable erase blocks to the super blocks while ensuring that the number of usable erase blocks that are mapped to each of the super blocks varies by less than the threshold size;

maintaining a reserve pool of usable erase blocks that are not assigned to the super blocks, the reserve pool sized to ensure that the number of usable erase blocks that are assigned to each of the super blocks varies by less than the threshold size, the reserve pool comprising available erase blocks from each plane of the non-volatile memory device; and

generating a new logical block in response to dissolving at least one of the plurality of logical blocks, the new logical block comprising one or more erase blocks from the at least one dissolved logical block and at least one erase block from the reserve pool of available erase blocks such that the numbers of erase blocks for the new logical block satisfies the predetermined deviation limit relative to other logical blocks, the erase blocks from the reserve pool selected such that the new logical block comprises an erase block from each plane of the non-volatile memory device wherein the lowest age erase blocks that are available from each plane are selected for the new logical block.

Assignments (10)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2018
From: BENNETT, ALAN; GOROBETS, SERGEI; PARKER, LIAM
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045523/0612 →