IP Library Granted Patent US 9,575,674
Granted Patent B2
US 9,575,674 · App. 14/589,382 · Granted Feb 21, 2017

Data streaming for solid-state bulk storage devices

Inventors: Frank Chen (North Potomac, MD); Yuan Rong (Shanghai, CN)
Assignee: Micron Technology, Inc.
G06F3/0619G06F3/0613G06F3/0631G06F3/0656G06F3/0659G06F3/0688G06F11/1016G06F11/1044G06F12/0246G06F2212/7203G06F2212/7207
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,575,674
App. No.
14/589,382
Granted
Feb 21, 2017
Kind
B2
Abstract

Methods facilitate data streaming in bulk storage devices by generating linked lists containing entries for both user data and metadata. These linked lists containing mixed data types facilitate receiving and outputting user data, and to insert or ignore, respectively, metadata corresponding to that user data without interrupting flow of the user data.

Claims (37)

1. A method of operating a storage device, comprising:

generating a linked list in response to decoding an access command received at the storage device, wherein the linked list has two or more first entries corresponding to user data, two or more second entries corresponding to metadata, and a defined order of the first entries and the second entries corresponding to a defined data structure of a page of data of a first memory of the storage device, wherein each first entry of the linked list identifies a size of a respective portion of user data and a starting address for storage of that portion of user data to a second memory of the storage device, and wherein each second entry of the linked list identifies a size of a respective portion of metadata and a starting address for storage of that portion of metadata to the second memory of the storage device;

storing portions of user data and portions of metadata to the second memory according to the sizes and the starting addresses identified by the ordered entries of the linked list; and

outputting at least the stored portions of user data from the second memory.

2. The method of claim 1 , further comprising receiving the portions of user data from an external device and generating the portions of metadata by the storage device when the access command is a write command.

3. The method of claim 2 , further comprising generating at least one of the portions of metadata prior to receiving all of the portions of user data.

4. The method of claim 3 , further comprising generating at least one of the portions of metadata after receiving at least one of the portions of user data.

5. The method of claim 2 , wherein generating the portions of metadata further comprises generating at least some metadata in response at least one of the portions of user data.

6. The method of claim 5 , wherein generating at least some metadata in response at least one of the portions of user data comprises generating at least error correction code data for the at least one of the portions of user data.

7. The method of claim 6 , wherein generating at least some metadata further comprises generating metadata comprising status indicators and/or mapping information.

8. The method of claim 1 , further comprising reading user data and metadata from the page of data of the first memory prior to storing the portions of user data and the portions of metadata to the second memory.

9. The method of claim 1 , wherein storing portions of user data and portions of metadata to the second memory comprises storing the portions of user data and the portions of metadata to non-contiguous sub-segments of the second memory.

10. The method of claim 1 , wherein generating a linked list further comprises generating the linked list such that sizes identified for each first entry of the linked list are the same size and sizes identified for each second entry of the linked list are the same size.

11. The method of claim 10 , wherein generating a linked list further comprises generating the linked list such that sizes identified for each first entry of the linked list are different than sizes identified for each second entry of the linked list.

12. The method of claim 1 , wherein generating a linked list further comprises generating the linked list such that sizes identified for each entry of the linked list are defined by sizes of respective portions of data of the defined data structure of the page of data.

13. The method of claim 1 , wherein generating a linked list further comprises generating the linked list such that the defined order of the first entries and the second entries comprises interleaving instances of the second entries with instances of the first entries.

14. The method of claim 1 , wherein generating a linked list having a defined order of the first entries and the second entries corresponding to a defined data structure of a page of data of a first memory of the storage device comprises generating the linked list such that the order of the first entries and the second entries of the linked list matches an order of portions of user data and portions of metadata as would be stored to the page of data of the first memory.

15. The method of claim 1 , further comprising:

when the access command is a read command:

storing portions of user data and portions of metadata to the second memory according to the sizes and the starting addresses identified by the ordered entries of the linked list comprises streaming data from the first memory to the second memory according to the sizes and the starting addresses identified by the ordered entries of the linked list; and

outputting at least the stored portions of user data from the second memory comprises outputting only the stored portions of user data from the second memory to an external device; and

when the access command is a write command:

storing portions of user data and portions of metadata to the second memory according to the sizes and starting addresses identified by the ordered entries of the linked list comprises storing portions of user data received from the external device and portions of metadata generated by the storage device to the second memory according to the sizes and starting addresses identified by the ordered entries of the linked list; and

outputting at least the stored portions of user data from the second memory comprises streaming the stored portions of user data and the stored portions of metadata from the second memory to the first memory in the defined order of the respective entries of the linked list such that the streamed data satisfies the defined data structure of the page of data of the first memory.

16. A method of operating a storage device, comprising:

generating a linked list in response to decoding a write command received at the storage device from an external device, wherein the linked list has two or more first entries corresponding to user data, two or more second entries corresponding to metadata, and a defined order of the first entries and the second entries corresponding to a defined data structure of a page of data of a first memory of the storage device, wherein each first entry of the linked list identifies a size of a respective portion of user data and a starting address for storage of that portion of user data to a second memory of the storage device, and wherein each second entry of the linked list identifies a size of a respective portion of metadata and a starting address for storage of that portion of metadata to the second memory of the storage device;

receiving user data from the external device associated with the write command;

storing portions of the user data received from the external device and portions of metadata generated by the storage device to the second memory according to the sizes and starting addresses identified by the ordered entries of the linked list; and

streaming the stored portions of user data and the stored portions of metadata from the second memory to the page of data of the first memory as identified by the write command in the defined order of the respective entries of the linked list such that the streamed data satisfies the defined data structure of the page of data of the first memory.

17. The method of claim 16 , further comprising generating at least one of the portions of metadata after receiving at least one of the portions of user data.

18. The method of claim 17 , further comprising generating at least one of the portions of metadata prior to receiving all of the portions of user data.

19. The method of claim 17 , wherein generating at least one of the portions of metadata after receiving at least one of the portions of user data further comprises generating at least some metadata in response at least one of the received portions of user data.

20. A method of operating a storage device, comprising:

generating a linked list in response to decoding a read command received at the storage device from an external device, wherein the linked list has two or more first entries corresponding to user data, two or more second entries corresponding to metadata, and a defined order of the first entries and the second entries corresponding to a defined data structure of a page of data of a first memory of the storage device, wherein each first entry of the linked list identifies a size of a respective portion of user data and a starting address for storage of that portion of user data to a second memory of the storage device, and wherein each second entry of the linked list identifies a size of a respective portion of metadata and a starting address for storage of that portion of metadata to the second memory of the storage device;

reading user data and metadata from the page of data of the first memory device as identified by the read command;

streaming portions of the user data and portions of the metadata from the first memory to the second memory according to the sizes and the starting addresses identified by the ordered entries of the linked list; and

outputting only the stored portions of user data from the second memory to the external device in response to the read command.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
Priority Claims (1)
CN 0810211463 · Sep 26, 2008 · national
Continuity (2)
Continuation 12327879 · Dec 4, 2008
Related Publication 20150113357A1 · Apr 23, 2015