Namespace management in non-volatile memory devices
AssigneeMicron Technology, Inc.
InventorAlex Frolikov
Life of this patent
Estimating the term…
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.
Claims18
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.
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.
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.
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.
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.
Dependencies are inferred from the claim text.