IP Library Granted Patent US 10,503,404
Granted Patent B2
US 10,503,404 · App. 15/790,979 · Granted Dec 10, 2019

Namespace management in non-volatile memory devices

Inventor: Alex Frolikov (San Jose, CA)
Assignee: MICRON TECHNOLOGY, INC.
G06F3/0608G06F3/0604G06F3/0607G06F3/0631G06F3/0652G06F3/0673G06F3/0688G06F12/0246G06F13/4282G06F2212/7201G06F2213/0026
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,503,404
App. No.
15/790,979
Granted
Dec 10, 2019
Kind
B2
Abstract

A computer storage device having: a host interface; a controller; non-volatile storage media; and firmware. The firmware instructs the controller to: divide a contiguous logical address capacity into blocks according to a predetermined block size; and maintain a data structure to identify: free blocks are available for allocation to new namespaces; and blocks that have been allocated to namespaces in use. Based on the content of the data structure, non-contiguous blocks can be allocated to a namespace; and logical addresses in the namespace can be translated to physical addresses for addressing the non-volatile storage media of the storage device.

Claims (89)

1. A computer storage device, comprising:

a host interface;

a controller;

non-volatile storage media; and

firmware containing instructions which, when executed by the controller, instruct the controller to at least:

store a block size of logical addresses;

divide a logical address capacity of the non-volatile storage media into blocks according to the block size;

maintain a data structure to identify:

a first subset of the blocks that are available for allocation to new namespaces; and

a second subset of the blocks that have been allocated to existing namespaces;

receive, via the host interface, a request from a host to allocate a first namespace of a quantity of non-volatile memory;

allocate, in response to the request, a first set of blocks from the first subset to the first namespace;

update content of the data structure in response to the first set of blocks being allocated to the first namespace; and

translate logical addresses in the first namespace to physical addresses for the non-volatile storage media using the content of the data structure;

wherein the data structure includes an array of identifications of blocks in the second subset and pointers to portions of the array containing corresponding sets of identifications of blocks that are allocated to respective ones of the existing namespaces.

2. The computer storage device of claim 1 , wherein the instructions which, when executed by the controller, further instruct the controller to:

receive, via the host interface, a request from the host to delete the first namespace;

update the content of the data structure to return the first set of blocks from the second subset in the data structure to the first subset in the data structure.

3. The computer storage device of claim 1 , wherein the data structure includes a set of indicators for the respective ones of the existing namespaces, each of the indicators indicating whether or not a respective set of identifications of blocks allocated to a corresponding one of the existing namespaces is contiguous in the logical address capacity.

4. The computer storage device of claim 1 , wherein the data structure includes an array of identifications of blocks in the first subset.

5. The computer storage device of claim 1 , wherein the first set of blocks are not contiguous in the logical address capacity.

6. The computer storage device of claim 5 , wherein the block size is a power of two.

7. The computer storage device of claim 6 , wherein the logical address capacity is not a multiple of the block size.

8. The computer storage device of claim 7 , wherein the quantity of non-volatile memory requested for the first namespace is not a multiple of the block size.

9. The computer storage device of claim 8 , wherein the data structure identifies the first subset and the second subset using a first array of identifiers of blocks in the first subset and a second array of identifiers of blocks in the second subset.

10. The computer storage device of claim 9 , wherein the data structure further includes, for each respective namespace in the existing namespaces, a starting location in the second array for the respective namespace.

11. The computer storage device of claim 1 , wherein the request to allocate the namespace is in accordance with a Non-Volatile Memory Host Controller Interface Specification (NVMHCIS).

12. The computer storage device of claim 1 , wherein the computer storage device is a solid state drive.

13. A method implemented in a computer storage device, the method comprising:

dividing a logical address capacity of non-volatile storage media of the computer storage device into blocks according to a predetermined block size;

maintaining a data structure to identify:

a first subset of the blocks that are available for allocation to new namespaces; and

a second subset of the blocks that have been allocated to existing namespaces;

receiving, via a host interface of the computer storage device, a request from a host to allocate a first namespace of a quantity of non-volatile memory;

allocating, in response to the request, a first set of blocks from the first subset to the first namespace;

updating content of the data structure in response to the first set of blocks being allocated to the first namespace; and

translating logical addresses in the first namespace to physical addresses for the non-volatile storage media using the content of the data structure;

wherein the data structure includes:

an array of identifications of blocks in the second subset;

pointers to portions of the array containing corresponding sets of identifications of blocks that are allocated to respective ones of the existing namespaces;

an array of identifications of blocks in the first subset; and

a set of indicators for the respective ones of the existing namespaces, each of the indicators indicating whether or not a respective set of identifications of blocks allocated to a corresponding one of the existing namespaces is contiguous in the logical address capacity.

14. The method of claim 13 , wherein the instructions which, when executed by the controller, further instruct the controller to:

receive, via the host interface, a request from the host to delete the first namespace;

update the data structure to return the first set of blocks from the second subset in the data structure to the first subset in the data structure.

15. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising:

dividing a logical address capacity of non-volatile storage media of the computer storage device into blocks according to a predetermined block size;

maintaining a data structure having content identifying:

a first subset of the blocks that are available for allocation to new namespaces; and

a second subset of the blocks that have been allocated to existing namespaces;

receiving, via a host interface of the computer storage device, a request from a host to allocate a first namespace of a quantity of non-volatile memory;

allocating, in response to the request, a first set of blocks from the first subset to the first namespace;

updating the content of the data structure in response to the first set of blocks being allocated to the first namespace; and

translating logical addresses in the first namespace to physical addresses for the non-volatile storage media using the content of the data structure;

wherein the block size is a power of two; and the first set of blocks are not contiguous in the logical address capacity;

wherein the logical address capacity is not a multiple of the block size; and the quantity of non-volatile memory requested for the first namespace is not a multiple of the block size.

16. The non-transitory computer storage medium of claim 15 , wherein the data structure further includes:

an array of identifiers of blocks in the second subset grouped for the existing namespaces; and

for each respective namespace in the existing namespaces, a pointer identifying a portion of the array that contains identifiers of blocks allocated for the respective namespace.

17. A computer storage device, comprising:

a host interface;

a controller;

non-volatile storage media; and

firmware containing instructions which, when executed by the controller, instruct the controller to at least:

store a block size of logical addresses;

divide a logical address capacity of the non-volatile storage media into blocks according to the block size;

maintain a data structure to identify:

a first subset of the blocks that are available for allocation to new namespaces; and

a second subset of the blocks that have been allocated to existing namespaces;

receive, via the host interface, a request from a host to allocate a first namespace of a quantity of non-volatile memory;

allocate, in response to the request, a first set of blocks from the first subset to the first namespace;

update content of the data structure in response to the first set of blocks being allocated to the first namespace; and

translate logical addresses in the first namespace to physical addresses for the non-volatile storage media using the content of the data structure;

wherein the first set of blocks are not contiguous in the logical address capacity;

wherein the block size is a power of two; and

wherein the logical address capacity is not a multiple of the block size.

18. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising:

dividing a logical address capacity of non-volatile storage media of the computer storage device into blocks according to a predetermined block size;

maintaining a data structure having content identifying:

a first subset of the blocks that are available for allocation to new namespaces; and

a second subset of the blocks that have been allocated to existing namespaces;

receiving, via a host interface of the computer storage device, a request from a host to allocate a first namespace of a quantity of non-volatile memory;

allocating, in response to the request, a first set of blocks from the first subset to the first namespace;

updating the content of the data structure in response to the first set of blocks being allocated to the first namespace; and

translating logical addresses in the first namespace to physical addresses for the non-volatile storage media using the content of the data structure;

wherein the block size is a power of two; and the first set of blocks are not contiguous in the logical address capacity;

wherein the data structure further includes:

an array of identifiers of blocks in the second subset grouped for the existing namespaces; and

for each respective namespace in the existing namespaces, a pointer identifying a portion of the array that contains identifiers of blocks allocated for the respective namespace.

Assignments (6)
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 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050716/0678 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2018
From: FROLIKOV, ALEX
To: MICRON TECHNOLOGY, INC.
Reel/Frame 046978/0555 →
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 →
SUPPLEMENT NO. 7 TO PATENT SECURITY AGREEMENT Recorded Feb 6, 2018
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 045267/0833 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2017
From: FROLIKOV, ALEX
To: MICRON TECHNOLOGY, INC.
Reel/Frame 044250/0024 →