IP Library Granted Patent US 12710899
Granted Patent B2
US 12710899 · App. 18/820,085 · Granted Aug 18, 2026

System for generating virtual block stripes in a memory device

Inventors: Aaron Lee (Sunnyvale, CA); Daniel Zhang (Milpitas, CA); Yang Liu (Melissa, TX); Tingjun Xie (Milpitas, CA); Juane Li (Milpitas, CA); Jiangli Zhu (San Jose, CA)
Assignee: MICRON TECHNOLOGY, INC.
G06F3/0665G06F3/0619G06F3/064G06F3/0679
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 12710899
App. No.
18/820,085
Granted
Aug 18, 2026
Kind
B2
Abstract

A method for generating a virtual block stripe in a memory device is described. The method includes determining a minimum quantity of data blocks in the virtual block stripe to be generated and determining that a first bank has a first quantity of operational data blocks that is greater than the minimum quantity of data blocks in the virtual block stripe. The method also includes determining that a second bank has a second quantity of operational data blocks that is less than the minimum quantity of data blocks in the virtual block stripe and logically mapping one or more data blocks of the first bank to the second bank. The method further includes generating the virtual block stripe comprising the second quantity of operational data blocks of the second bank and the logically mapped one or more data blocks of the first bank.

Claims (55)

1 . A method for generating a virtual block stripe in a memory device, the method comprising:

determining via a controller a total quantity of operational data blocks in the memory device relative to a quantity of non-operational data blocks in the memory device to determine a minimum quantity of data blocks in the virtual block stripe to be generated in the memory device via the controller, wherein determining the minimum quantity of data blocks in the virtual block stripe to be generated comprises:

determining a third quantity of data blocks of one of a plurality of planes of the memory device having a greatest quantity of operational data blocks;

dividing the total quantity of operational data blocks in the memory device by the greatest quantity of operational data blocks of the respective one of the planes of the memory device to determine a quotient; and

rounding the quotient down to determine the minimum quantity of data blocks in the virtual block stripe to be generated;

determining via the controller that a first bank of data blocks in the memory device has a first quantity of operational data blocks that is greater than the minimum quantity of data blocks in the virtual block stripe to be generated;

determining via the controller that a second bank of data blocks in the memory device has a second quantity of operational data blocks that is less than the minimum quantity of data blocks in the virtual block stripe to be generated;

logically mapping one or more data blocks of the first bank to the second bank via the controller; and

generating the virtual block stripe comprising the second quantity of operational data blocks of the second bank and the logically mapped one or more data blocks of the first bank via the controller.

2 . The method of claim 1 , further comprising updating a virtual block stripe lookup table in response to generating the virtual block stripe via the controller, the virtual block stripe lookup table providing logical mapping of each data block of each of a plurality of virtual block stripes.

3 . The method of claim 1 , wherein the virtual block stripe is a first virtual block stripe, the method comprising generating a second virtual block stripe comprising the first quantity of operational data blocks of the first bank less the one or more data blocks of the first bank that are logically mapped to the second bank via the controller.

4 . The method of claim 1 , further comprising:

selecting the one or more data blocks of the first bank to be one or more respective donor blocks that are added to a donor block queue via the controller; and

selecting one or more recipient blocks from the donor block queue to be logically mapped to the second bank to generate the virtual block stripe via the controller.

5 . The method of claim 1 , further comprising:

determining if the total quantity of operational data blocks is less than a minimum operational block threshold; and

indicating failure of the memory device in response to the total quantity of operational data blocks being less than the minimum operational block threshold.

6 . The method of claim 1 , further comprising:

determining if the minimum quantity of data blocks in the virtual block stripe to be generated is less than a minimum block stripe threshold; and

indicating failure of the memory device in response to the minimum quantity of data blocks in the virtual block stripe to be generated being less than the minimum block stripe threshold.

7 . The method of claim 1 , further comprising:

determining via the controller that a third bank of data blocks in the memory device has a third quantity of operational data blocks that is equal to the minimum quantity of data blocks in the virtual block stripe to be generated;

leaving intact the third quantity of operational data blocks of the third bank; and

selecting a next bank of data blocks in the memory device for comparing a respective quantity of operational data blocks relative to the minimum quantity of data blocks in the virtual block stripe to be generated.

8 . The method of claim 7 , wherein the virtual block stripe is a first virtual block stripe, the method comprising generating a second virtual block stripe corresponding to the third quantity of operational data blocks of the third bank via the controller.

9 . A system for performing a media scan operation in a memory device, comprising:

the memory device; and

a processing device coupled to the memory device, the processing device to perform operations comprising:

determining a total quantity of operational data blocks in the memory device relative to a quantity of non-operational data blocks in the memory device to determine a minimum quantity of data blocks in a virtual block stripe to be generated in the memory device, wherein determining the minimum quantity of data blocks in the virtual block stripe to be generated comprises:

determining a greatest quantity of operational data blocks between each of a plurality of planes of the memory device;

dividing a total quantity of operational data blocks in the memory device by the greatest quantity of operational data blocks between each of the planes of the memory device to determine a quotient; and

rounding the quotient down to determine the minimum quantity of data blocks in the virtual block stripe to be generated;

determining that a first bank of data blocks in the memory device has a first quantity of operational data blocks that is greater than the minimum quantity of data blocks in the virtual block stripe to be generated;

determining that a second bank of data blocks in the memory device has a second quantity of operational data blocks that is less than the minimum quantity of data blocks in the virtual block stripe to be generated;

logically mapping one or more data blocks of the first bank to the second bank; and

generating the virtual block stripe comprising the second quantity of operational data blocks of the second bank and the logically mapped one or more data blocks of the first bank.

10 . The system of claim 9 , further comprising updating a virtual block stripe lookup table in response to generating the virtual block stripe, the virtual block stripe lookup table providing logical mapping of each data block of each of a plurality of virtual block stripes.

11 . The system of claim 9 , wherein the virtual block stripe is a first virtual block stripe, the operations further comprising generating a second virtual block stripe comprising the first quantity of operational data blocks of the first bank less the one or more data blocks of the first bank that are logically mapped to the second bank.

12 . The system of claim 9 , further comprising:

selecting the one or more data blocks of the first bank to be one or more respective donor blocks that are added to a donor block queue; and

selecting one or more recipient blocks from the donor block queue to be logically mapped to the second bank to generate the virtual block stripe.

13 . A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to perform a method for generating a virtual block stripe of a memory device, the method comprising:

determining a total quantity of operational data blocks in the memory device relative to a quantity of non-operational data blocks in the memory device to determine a minimum quantity of data blocks in the virtual block stripe to be generated in the memory device, wherein determining the minimum quantity of data blocks in the virtual block stripe to be generated comprises:

determining a greatest quantity of operational data blocks between each of a plurality of planes of the memory device;

dividing a total quantity of operational data blocks in the memory device by the greatest quantity of operational data blocks between each of the planes of the memory device to determine a quotient; and

rounding the quotient down to determine the minimum quantity of data blocks in the virtual block stripe to be generated;

determining that a first bank in the memory device has a first quantity of operational data blocks that is greater than the minimum quantity of data blocks in the virtual block stripe to be generated;

determining that a second bank in the memory device has a second quantity of operational data blocks that is less than the minimum quantity of data blocks in the virtual block stripe to be generated;

logically mapping one or more data blocks of the first bank to the second bank; and

generating the virtual block stripe comprising the second quantity of operational data blocks of the second bank and the logically mapped one or more data blocks of the first bank.

14 . The medium of claim 13 , further comprising updating a virtual block stripe lookup table in response to generating the virtual block stripe, the virtual block stripe lookup table providing logical mapping of each data block of each of a plurality of virtual block stripes.

15 . The medium of claim 13 , wherein the virtual block stripe is a first virtual block stripe, the method comprising generating a second virtual block stripe comprising the first quantity of operational data blocks of the first bank less the one or more data blocks of the first bank that are logically mapped to the second bank.

16 . The medium of claim 13 , further comprising:

selecting the one or more data blocks of the first bank to be one or more respective donor blocks that are added to a donor block queue; and

selecting one or more recipient blocks from the donor block queue to be logically mapped to the second bank to generate the virtual block stripe.