IP Library Granted Patent US 11,630,767
Granted Patent B2
US 11,630,767 · App. 17/543,710 · Granted Apr 18, 2023

Garbage collection—automatic data placement

Inventors: Rajinikanth Pandurangan (Fremont, CA); Changho Choi (San Jose, CA)
G06F12/0246G06F3/0608G06F3/0652G06F3/0679G06F2212/1044G06F2212/2022G06F2212/7201G06F2212/7205
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 11,630,767
App. No.
17/543,710
Granted
Apr 18, 2023
Kind
B2
Abstract

A Solid State Drive (SSD) is disclosed. The SSD may include flash memory to store data. An SSD controller may manage reading and writing data to the flash memory. The SSD may include an automatic stream detection logic to select a stream identifier responsive to attributes of data. A garbage collection logic may select an erase block and program valid data in the erase block into a second block responsive to a stream ID determined the automatic stream detection logic. The stream ID may be determined after the garbage collection logic has selected the erase block for garbage collection.

Claims (45)

1. A device, comprising:

memory to store data, the memory storing a first data in a first portion and a second data in a second portion, the first data stored in the first portion based at least in part on a first request from a second device, the second data stored in the second portion based at least in part on a second request from the second device, the first portion associated with a first stream identifier (ID) based at least in part on the first request and the second portion associated with a second stream ID based at least in part on the second request;

a controller to manage writing data to or reading the data from the memory;

a circuit to select a third stream ID based at least in part on at least one attribute of the first data, wherein the circuit is capable of selecting any of the first stream ID, the second stream ID, and a different stream ID for the first data.

2. The device according to claim 1 , wherein:

the controller includes an Input/Output (I/O) queue to receive requests from the second device; and

the device further includes a second circuit to place a programming request for the first data from a third circuit into the I/O queue.

3. The device according to claim 2 , wherein the controller further includes a receiver to receive an earlier request from the second device, the earlier request including the first data, wherein the first data is written to the first portion responsive to the earlier request.

4. The device according to claim 3 , wherein the device is configured to write the first data to the first portion based at least in part on the earlier request and the first stream ID from the circuit.

5. The device according to claim 2 , wherein the third circuit further includes a fourth circuit to erase the first portion.

6. The device according to claim 5 , wherein the fourth circuit is configured to erase the first portion based at least in part on the device processing the programming request.

7. The device according to claim 5 , wherein the fourth circuit is configured to erase the first portion based at least in part on the programming request being placed in the I/O queue by the second circuit.

8. The device according to claim 1 , further comprising:

a second circuit to request the third stream ID from the circuit, the second circuit including:

a third circuit to select a third portion based at least in part on the third stream ID; and

a fourth circuit to write the first data to the third portion.

9. The device according to claim 8 , wherein the third portion stores data programmed based at least in part on the second circuit.

10. The device according to claim 1 , wherein the third stream ID is based at least in part on at least one of an application ID of an application, a remaining lifetime for the first data, a sequentiality for the first data, a recency for the first data, a write size for the first data, a write time for the first data, and a read frequency for the first data.

11. A method, comprising:

identifying a first portion on a device for garbage collection, the device also including a second portion storing a second data, the first portion based at least in part on a first stream identifier (ID) and the second portion based at least in part on a second stream ID, the first data stored in the first portion based at least in part on a first request from a second device and the second data stored in the second portion based at least in part on a second request from the second device;

identifying a first data in the first portion to be programmed;

selecting, by a circuit, a third stream ID for the first data based at least in part on at least one attribute of the first data, wherein the circuit is capable of selecting any of the first stream ID, the second stream ID, and a different stream ID as the third stream ID; and

programming the first data in the first portion into a third portion, the third portion selected based on the third stream ID.

12. A method according to claim 11 , wherein programming the first data in the first portion into a third portion includes placing a programming request into an Input/Output (I/O) queue to write the first data to the third portion, the I/O queue configured to receive requests from the second device.

13. A method according to claim 12 , further comprising erasing the first portion.

14. A method according to claim 13 , wherein erasing the first portion includes erasing the first portion based at least in part on the programming request being placed in the I/O queue.

15. A method according to claim 11 , wherein

programming the first data in the first portion into the third portion includes:

selecting the third portion based at least in part on the third stream ID; and

programming the first data to the third portion.

16. A method according to claim 15 , wherein selecting the third portion based at least in part on the third stream ID includes selecting a special portion based at least in part on the third stream ID, the special portion storing data programmed during the garbage collection.

17. A method according to claim 11 , wherein the third stream ID is based at least in part on at least one of an application ID of an application, a remaining lifetime for the first data, a sequentiality for the first data, a recency for the first data, a write size for the first data, a write time for the first data, and a read frequency for the first data.

18. A method according to claim 11 , wherein a value for the at least one attribute of the first data may vary depending on the first request.

19. A method, comprising:

receiving at a device, from a second device, a first request including a first data;

selecting, by the device, a first stream ID based on the first request;

writing the first data to a first portion on the device based on the first request, the first portion based on the first stream ID;

receiving at the device, from the second device, a second request including a second data;

selecting, by the device, a second stream ID based on the second request, the second stream ID different from the first stream ID;

writing the second data to a second portion on the device based on the second request, the second portion based on the second stream ID; and

identifying the first portion for garbage collection;

identifying the first data in the first portion for programming;

selecting, by a circuit, a third stream ID based at least in part on at least one attribute of the first data, wherein the circuit is capable of selecting any of the first stream ID, the second stream ID, and a different stream ID for the first data; and

programming the first data into a third portion on the device based at least in part on the third stream ID.

20. A method according to claim 19 , wherein the third portion is the second portion.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2023
From: PANDURANGAN, RAJINIKANTH; CHOI, CHANGHO
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 063367/0281 →
Continuity (4)
Continuation 16892276 · Jun 3, 2020
Continuation 15620814 · Jun 12, 2017
Provisional Application 62490027 · Apr 25, 2017
Related Publication 20220171701A1 · Jun 2, 2022
Cited By (1)
US 12,505,037