IP Library Granted Patent US 10,437,476
Granted Patent B2
US 10,437,476 · App. 15/790,882 · Granted Oct 8, 2019

Namespaces allocation in non-volatile memory devices

Inventor: Alex Frolikov (San Jose, CA)
Assignee: MICRON TECHNOLOGY, INC.
G06F3/0608G06F3/0607G06F3/0631G06F3/0652G06F3/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,437,476
App. No.
15/790,882
Granted
Oct 8, 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: receive, via the host interface, a request from a host to allocate a namespace of a quantity of non-volatile memory; generate, in response to the request, a namespace map identifying a plurality of blocks of addresses having a same predetermined block size, and a partial block of addresses having a size smaller than the predetermined block size; and convert, using the namespace map, logical addresses in the namespace communicated from the host to physical addresses for the quantity of the non-volatile memory. For example, the request for allocating the namespace can be in accordance with an NVMe protocol.

Claims (64)

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:

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

generate, in response to the request, a namespace map identifying:

a plurality of blocks of addresses having a same predetermined block size; and

a partial block of addresses having a size smaller than the predetermined block size; and

convert, using the namespace map, logical addresses in the namespace communicated from the host to physical addresses for the quantity of the non-volatile memory.

2. 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).

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

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

receiving, in a controller coupled with a non-volatile memory, a request from a host to create or reserve a namespace of a quantity of non-volatile memory;

generating, by the controller in response to the request, a namespace map identifying:

a plurality of blocks of addresses having a same predetermined block size; and

a partial block of addresses having a size smaller than the predetermined block size; and

converting, by the controller using the namespace map, logical addresses in the namespace communicated from the host to physical addresses for the quantity of the non-volatile memory.

5. The method of claim 4 , wherein the request is in accordance with a Non-Volatile Memory Host Controller Interface Specification (NVMHCIS).

6. The method of claim 4 , wherein each of the plurality of blocks is represented in the namespace map by an identification of a starting unit.

7. The method of claim 6 , wherein the partial block is represented in the namespace map by an identification of a unit allocated for the namespace and a chunk size.

8. The method of claim 7 , further comprising:

maintaining, in the computer storage device, a free block pool identifying at least one partial block of addresses.

9. The method of claim 8 , wherein the generating of the namespace map comprises:

allocating the plurality of blocks for the namespace;

determining a difference between the quantity of non-volatile memory requested for the namespace and a total size of the plurality of blocks; and

searching in the free block pool for a partial block of addresses that is equal to or larger than the difference.

10. The method of claim 9 , wherein the generating of the namespace map further comprises, in response to a determination that the free block pool has a first partial block of addresses having a size larger than the difference:

allocating a portion of the first partial block for the namespace; and

updating the first partial block in the free block pool to represent a remaining portion of first partial block that is not allocated for the namespace.

11. The method of claim 9 , wherein the generating of the namespace map further comprises, in response to a determination that the free block pool has a first partial block of addresses having a size equal to the difference:

removing the first partial block from the free block pool; and

allocating the first partial block for the namespace.

12. The method of claim 9 , wherein the generating of the namespace map further comprises, in response to a determination that the free block pool has no partial block of addresses having a size equal to or larger than the difference:

adding a first block of addresses having the same predetermined block size to the free block pool;

allocating a portion of the first block for the namespace; and

updating the first block in the free block pool to represent a remaining portion of the first block that is not allocated for the namespace.

13. The method of claim 8 , further comprising:

receiving, in the controller, a request from the host to delete the namespace; and

adding, by the controller, the partial block identified in the namespace to the free block pool.

14. The method of claim 13 , further comprising:

identifying, in the free block pool, contiguous free partial blocks; and

combining, in the free block pool, the contiguous free partial blocks into a single free partial block.

15. The method of claim 14 , further comprising:

determining whether the single free partial block has the predetermined block size; and

in response to a determination that the single free partial block has the predetermined block size, removing the single free partial block from the free block pool.

16. The method of claim 15 , wherein each block in the free block pool is represented by an identification of a starting unit and a chunk size.

17. 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:

receiving, in the controller coupled with a non-volatile memory, a request from a host to create or reserve a namespace of a quantity of non-volatile memory;

generating, by the controller in response to the request, a namespace map identifying:

a plurality of blocks of addresses having a same predetermined block size; and

a partial block of addresses having a size smaller than the predetermined block size; and

converting, by the controller using the namespace map, logical addresses in the namespace communicated from the host to physical addresses for the quantity of the non-volatile memory.

18. The non-transitory computer storage medium of claim 17 , wherein each of the plurality of blocks are represented in the namespace map by an identification of a starting unit; and the partial block is represented in the namespace map by an identification of a starting unit and a chunk size.

19. The non-transitory computer storage medium of claim 18 , further comprising:

maintaining, in the computer storage device, a free block pool identifying at least one partial block of addresses, wherein the generating of the namespace map comprises:

allocating the plurality of blocks;

determining a difference between the quantity of non-volatile memory requested for the namespace and a total size of the plurality of blocks; and

searching in the free block pool for a partial block of addresses that is equal to or larger than the difference.

20. The non-transitory computer storage medium of claim 19 , further comprising:

receiving, in the controller, a request from the host to delete the namespace;

adding, by the controller, the partial block identified in the namespace to the free block pool;

identifying, in the free block pool, contiguous free partial blocks; and

combining, in the free block pool, the contiguous free partial blocks into a single free partial block.

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/0618 →
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 044249/0331 →
Cited By (2)
US 12,299,280 US 12,353,332