IP Library › Granted Patent US 12,019,872
Granted Patent B2
US 12,019,872 · App. 17/942,388 · Granted Jun 25, 2024

Storage device that writes data from a host during garbage collection

Inventor: Shinichi Kanno (Tokyo, JP)
Assignee: Kioxia Corporation
G06F3/061G06F3/065G06F3/0656G06F3/0679G06F3/068G06F12/0246G06F12/0253G06F12/10G06F2212/7201G06F2212/7204G06F2212/7205G06F2212/7206
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 12,019,872
App. No.
17/942,388
Granted
Jun 25, 2024
Kind
B2
Abstract

A memory system includes a controller, a buffer, and a nonvolatile memory including a plurality of blocks, wherein each of the blocks includes a plurality of pages and each of the pages includes a plurality of unit data portions. The controller is configured to carry out garbage collection by reading data from one or more pages of a target block of the garbage collection and selectively copying valid unit data portions included in the read data to another block, count a number of invalid unit data portions included in the read data, and accept, in the buffer, unit data portions from a host as write data, up to a number determined based on the counted number, during the garbage collection.

Claims (113)

1. A memory system comprising:

a buffer;

a nonvolatile memory that includes a plurality of blocks, each of the plurality of blocks being a unit of a data erase operation, the plurality of blocks including at least a first block and a second block; and

a controller electrically connected to the nonvolatile memory and configured to:

in executing a garbage collection operation on the nonvolatile memory,

sequentially select data portions stored in the first block,

in a case where a first data portion that is one of the sequentially selected data portions includes valid data, copy the first data portion from the first block to the second block, and

in a case where a second data portion that is one of the sequentially selected data portions includes invalid data, increment an invalid data counter by a first amount of the invalid data included in the second data portion that is detected during the garbage collection operation, such that the invalid data counter indicates a second amount of invalid data; and

in parallel with the garbage collection operation,

allow write data from a host to be received in the buffer up to the second amount indicated by the invalid data counter, and

decrease the invalid data counter by a third amount of the received write data.

2. The memory system according to claim 1 , wherein

the controller is further configured to manage mapping between a logical block address and a physical address of the nonvolatile memory in a unit of management size, and

an amount of invalid data tracked by the invalid data counter is indicated in a unit of the management size.

3. The memory system according to claim 1 , wherein

the controller is further configured to:

manage, by using a free block pool, a plurality of free blocks among the plurality of blocks;

allocate one or more write destination blocks from the free block pool to write the write data received from the host; and

in a case where the number of the allocated one or more write destination blocks is equal to or greater than a threshold, increment the invalid data counter by a fourth amount of data which is writable to the allocated one or more write destination blocks.

4. The memory system according to claim 3 , wherein

the controller is configured to execute the garbage collection operation in a case where the number of free blocks managed by using the free block pool is less than the threshold.

5. The memory system according to claim 3 , wherein

the controller is further configured to:

invalidate the first data portion after the first data portion is copied from the first block to the second block; and

return the first block to the free block pool in a case where the first block stores no valid data.

6. The memory system according to claim 1 , wherein

the plurality of blocks further includes a third block, a fourth block, a fifth block, and a sixth block, and

the controller is further configured to:

logically divide the nonvolatile memory into a first area for writing data associated with a first namespace and a second area for writing data associated with a second namespace, the first area including at least the third block and the fourth block, the second including at least the fifth block and the sixth block;

in executing a first garbage collection operation for the garbage collection operation on the first area,

sequentially select data portions stored in the third block,

in a case where a third data portion that is one of the sequentially selected data portions includes valid data, copy the third data portion from the third block to the fourth block, and

in a case where a fourth data portion that is one of the sequentially selected data portions includes invalid data, increment a first invalid data counter by a fifth amount of the invalid data included in the fourth data portion that is detected during the first garbage collection operation, such that the first invalid data counter indicates a sixth amount of invalid data;

in parallel with the first garbage collection operation,

allow write data associated with the first namespace from the host to be received in the buffer up to the sixth amount indicated by the first invalid data counter, and

decrease the first invalid data counter by a seventh amount of the received write data associated with the first namespace;

in executing a second garbage collection operation for the garbage collection operation on the second area,

sequentially select data portions stored in the fifth block,

in a case where a fifth data portion that is one of the sequentially selected data portions includes valid data, copy the fifth data portion from the fifth block to the sixth block, and

in a case where a sixth data portion that is one of the sequentially selected data portions includes invalid data, increment a second invalid data counter by an eighth amount of the invalid data included in the sixth data portion that is detected during the second garbage collection operation, such that the second invalid data counter indicates a ninth amount of invalid data; and

in parallel with the second garbage collection operation,

allow write data associated with the second namespace from the host to be received in the buffer up to the ninth amount indicated by the second invalid data counter, and

decrease the second invalid data counter by a tenth amount of the received write data associated with the second namespace.

7. The memory system according to claim 1 , wherein

the plurality of blocks further includes a third block, a fourth block, a fifth block, and a sixth block, and

the controller is further configured to:

logically divide the nonvolatile memory into a first area for writing data associated with a first namespace and a second area for writing data associated with a second namespace, the first area including at least the third block and the fourth block, the second including at least the fifth block and the sixth block;

in executing a first garbage collection operation for the garbage collection operation on the first area,

sequentially select data portions stored in the third block,

in a case where a third data portion that is one of the sequentially selected data portions includes valid data, copy the third data portion from the third block to the fourth block, and

in a case where a fourth data portion that is one of the sequentially selected data portions includes invalid data, increment a first invalid data counter by an eleventh amount of the invalid data included in the fourth data portion that is detected during the first garbage collection operation;

in executing a second garbage collection operation for the garbage collection operation on the second area,

sequentially select data portions stored in the fifth block,

in a case where a fifth data portion that is one of the sequentially selected data portions includes valid data, copy the fifth data portion from the fifth block to the sixth block, and

in a case where a sixth data portion that is one of the sequentially selected data portions includes invalid data, increment a second invalid data counter by a twelfth amount of the invalid data included in the sixth data portion that is detected during the second garbage collection operation; and

in parallel with the first garbage collection operation and the second garbage collection operation,

allow write data from the host to be received in the buffer up to a thirteenth amount indicated by a sum of the first invalid data counter and the second invalid data counter.

8. The memory system according to claim 7 , wherein

the controller is further configured to, in a case where the number of insufficient free blocks in the nonvolatile memory is equal to or more than two, allow the write data portion from the host to be received in the buffer up to an amount obtained by dividing the thirteenth amount indicated by the sum of the first invalid data counter and the second invalid data counter by the number of the insufficient free blocks.

9. A method of controlling a nonvolatile memory, the nonvolatile memory including a plurality of blocks, each of the plurality of blocks being a unit of a data erase operation, the plurality of blocks including at least a first block and a second block, said method comprising:

in executing a garbage collection operation on the nonvolatile memory,

sequentially selecting data portions stored in the first block,

in a case where a first data portion that is one of the sequentially selected data portions includes valid data, copying the first data portion from the first block to the second block, and

in a case where a second data portion that is one of the sequentially selected data portions includes invalid data, incrementing an invalid data counter by a first amount of the invalid data included in the second data portion that is detected during the garbage collection operation, such that the invalid data counter indicates a second amount of invalid data; and

in parallel with the garbage collection operation,

allowing write data from a host to be received in a buffer up to the second amount indicated by the invalid data counter, and

decreasing the invalid data counter by a third amount of the received write data.

10. The method according to claim 9 , further comprising:

managing mapping between a logical block address and a physical address of the nonvolatile memory in a unit of management size, wherein

an amount of invalid data tracked by the invalid data counter is indicated in a unit of the management size.

11. The method according to claim 9 , further comprising:

managing, by using a free block pool, a plurality of free blocks among the plurality of blocks;

allocating one or more write destination blocks from the free block pool to write the write data received from the host; and

in a case where the number of the allocated one or more write destination blocks is equal to or greater than a threshold, incrementing the invalid data counter by a fourth amount of data which is writable to the allocated one or more write destination blocks.

12. The method according to claim 11 , further comprising:

executing the garbage collection operation in a case where the number of free blocks managed by using the free block pool is less than the threshold.

13. The method according to claim 11 , further comprising:

invalidating the first data portion after the first data portion is copied from the first block to the second block; and

returning the first block to the free block pool in a case where the first block stores no valid data.

14. The method according to claim 9 , wherein

the plurality of blocks further includes a third block, a fourth block, a fifth block, and a sixth block, and

the method further comprises:

logically dividing the nonvolatile memory into a first area for writing data associated with a first namespace and a second area for writing data associated with a second namespace, the first area including at least the third block and the fourth block, the second including at least the fifth block and the sixth block;

in executing a first garbage collection operation for the garbage collection operation on the first area,

sequentially selecting data portions stored in the third block,

in a case where a third data portion that is one of the sequentially selected data portions includes valid data, copying the third data portion from the third block to the fourth block, and

in a case where a fourth data portion that is one of the sequentially selected data portions includes invalid data, incrementing a first invalid data counter by a fifth amount of the invalid data included in the fourth data portion that is detected during the first garbage collection operation, such that the first invalid data counter indicates a sixth amount of invalid data;

in parallel with the first garbage collection operation,

allowing write data associated with the first namespace from the host to be received in the buffer up to the sixth amount indicated by the first invalid data counter, and

decreasing the first invalid data counter by a seventh amount of the received write data associated with the first namespace;

in executing a second garbage collection operation for the garbage collection operation on the second area,

sequentially selecting data portions stored in the fifth block,

in a case where a fifth data portion that is one of the sequentially selected data portions includes valid data, copying the fifth data portion from the fifth block to the sixth block, and

in a case where a sixth data portion that is one of the sequentially selected data portions includes invalid data, incrementing a second invalid data counter by an eighth amount of the invalid data included in the sixth data portion that is detected during the second garbage collection operation, such that the second invalid data counter indicates a ninth amount of invalid data; and

in parallel with the second garbage collection operation,

allowing write data associated with the second namespace from the host to be received in the buffer up to the ninth amount indicated by the second invalid data counter, and

decreasing the second invalid data counter by a tenth amount of the received write data associated with the second namespace.

15. The method according to claim 9 , wherein

the plurality of blocks further includes a third block, a fourth block, a fifth block, and a sixth block, and

the method further comprises:

logically dividing the nonvolatile memory into a first area for writing data associated with a first namespace and a second area for writing data associated with a second namespace, the first area including at least the third block and the fourth block, the second including at least the fifth block and the sixth block;

in executing a first garbage collection operation for the garbage collection operation on the first area,

sequentially selecting data portions stored in the third block,

in a case where a third data portion that is one of the sequentially selected data portions includes valid data, copying the third data portion from the third block to the fourth block, and

in a case where a fourth data portion that is one of the sequentially selected data portions includes invalid data, incrementing a first invalid data counter by an eleventh amount of the invalid data included in the fourth data portion that is detected during the first garbage collection operation;

in executing a second garbage collection operation for the garbage collection operation on the second area,

sequentially selecting data portions stored in the fifth block,

in a case where a fifth data portion that is one of the sequentially selected data portions includes valid data, copying the fifth data portion from the fifth block to the sixth block, and

in a case where a sixth data portion that is one of the sequentially selected data portions includes invalid data, incrementing a second invalid data counter by a twelfth amount of the invalid data included in the sixth data portion that is detected during the second garbage collection operation; and

in parallel with the first garbage collection operation and the second garbage collection operation,

allowing write data from the host to be received in the buffer up to a thirteenth amount indicated by a sum of the first invalid data counter and the second invalid data counter.

16. The method according to claim 15 , further comprising:

in a case where the number of insufficient free blocks in the nonvolatile memory is equal to or more than two, allowing the write data portion from the host to be received in the buffer up to an amount obtained by dividing the thirteenth amount indicated by the sum of the first invalid data counter and the second invalid data counter by the number of the insufficient free blocks.

Priority Claims (1)
JP 2016-185477 · Sep 23, 2016 · national
Continuity (3)
Continuation 16940269 · Jul 27, 2020
Continuation 15441068 · Feb 23, 2017
Related Publication 20230004289A1 · Jan 5, 2023