IP Library Granted Patent US 11,914,523
Granted Patent B1
US 11,914,523 · App. 18/140,938 · Granted Feb 27, 2024

Hierarchical storage device with host controlled subdivisions

Inventors: Robert Lercari (Thousand Oaks, CA); Alan Chen (Simi Valley, CA); Mike Jadon (Manhattan Beach, CA); Craig Robertson (Simi Valley, CA); Andrey V. Kuzmin (Moscow, RU)
Assignee: Radian Memory Systems, Inc.
G06F12/1009G06F3/064G06F3/0616G06F3/0688G06F12/0246G06F12/109G06F3/0659G06F3/0662G06F2212/1016G06F2212/7201G06F2212/7202G06F2212/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,914,523
App. No.
18/140,938
Granted
Feb 27, 2024
Kind
B1
Abstract

This disclosure provides techniques hierarchical address virtualization within a memory controller and configurable block device allocation. By performing address translation only at select hierarchical levels, a memory controller can be designed to have predictable I/O latency, with brief or otherwise negligible logical-to-physical address translation time. In one embodiment, address transition may be implemented entirely with logical gates and look-up tables of a memory controller integrated circuit, without requiring processor cycles. The disclosed virtualization scheme also provides for flexibility in customizing the configuration of virtual storage devices, to present nearly any desired configuration to a host or client.

Claims (92)

1. A storage device comprising:

flash memory having erase units, wherein the flash memory is to have one or more namespaces, one or more groups of subdivisions within at least one of the namespaces, each group having two or more of the subdivisions, wherein a specific one of the subdivisions within a specific one of the groups within a specific one of the namespaces is mapped to one or more of the erase units of the flash memory; and

logic to cause the storage device to:

transmit to a host, responsive to receipt of at least one command from the host, information to identify the specific one of the namespaces and the specific one of the groups; and

receive a data write request and associated address information, and responsively,

derive a first address portion from the associated address information, to identify the specific one of the namespaces,

perform one or more operations to subdivide the associated address information, to derive a second address portion and a third address portion,

identify the specific one of the groups from the second address portion,

obtain from the third address portion an identifier for the specific one of the subdivisions, and

write data into one of the one or more erase units which are mapped to the specific one of the subdivisions which is designated by the identifier;

wherein said logic comprises at least one of (1) instructional logic stored on a physical storage medium and (2) hardware logic.

2. The storage device of claim 1 , wherein the logic is further to cause the storage drive to transmit information, to the host, indicating respective logical addresses for one or more groups of subdivisions within the specific one of the namespaces.

3. The storage device of claim 1 , wherein the identifier is a specific identifier, wherein the logic is further to cause the storage drive to transmit information, to the host, which identifies subdivisions within the specific one of the namespaces, including the specific one of the subdivisions, and wherein the information transmitted to the host includes the specific identifier.

4. The storage device of claim 3 , wherein the information transmitted to the host also indicates a size of the specific one of the subdivisions.

5. The storage device of claim 4 , wherein the size of the specific one of the subdivisions corresponds to a non-power-of-two number of storage locations in the flash memory.

6. The storage device of claim 4 , wherein the size of the specific one of the subdivisions corresponds to a minimum amount of storage capacity to be erased by the storage device.

7. The storage device of claim 6 , wherein, the logic is further to cause the storage device to receive a maintenance request and, in response to the maintenance request, to erase an amount of the flash memory corresponding to the minimum amount of storage capacity.

8. The storage device of claim 3 , wherein the information transmitted to the host further indicates a writeable capacity associated with each of the respectively-identified subdivisions.

9. The storage device of claim 1 , wherein the logic is further to cause the storage device to store metadata and to transmit, to the host, dependent on the metadata, a remaining writeable capacity corresponding to the specific one of the subdivisions.

10. The storage device of claim 1 , wherein the logic is further to cause the storage device to store metadata for the one or more of the erase units which are mapped to the specific one of the subdivisions, wherein the metadata represents a time since data was written to the one or more erase units which are mapped to the specific one of the subdivisions.

11. The storage device of claim 10 , wherein the logic is further to cause the storage device to compare the metadata to at least one criterion, and, upon detection that the metadata satisfies the at least one criterion, to copy data from one of the one or more of the erase units which are mapped to the specific one of the subdivisions to a different erase unit.

12. The storage device of claim 1 , wherein the logic is further to cause the storage device to store metadata for one or more of the erase units which are mapped to the specific one of the subdivisions, wherein the metadata indicates associated erase unit wear.

13. The storage device of claim 12 , wherein the logic is further to cause the storage device to:

erase one or more erase units which are mapped to the specific one of the subdivisions; and

in association with the erasure of the one or more erase units which are mapped to the specific one of the subdivisions, update the metadata which indicates the associated erase unit wear.

14. The storage device of claim 12 , wherein:

the logic is further to cause the storage device to map the subdivisions to respective sets of one or more of the erase units of the flash memory;

the data write request is a second data write request; and

the logic is further to cause the storage device to receive a first data write request, wherein the one or more erase units which are mapped to the specific one of the subdivisions are so-mapped in response to the first write request.

15. The storage device of claim 1 , wherein the logic is further to cause the storage device to store metadata for the specific one of the subdivisions, wherein the metadata is to indicate an extent to which the specific one of the subdivisions is unutilized and can continue to receive additional write data without the storage device first performing a maintenance operation on the specific one of the subdivisions.

16. The storage device of claim 15 , wherein the logic is further to cause the storage device to, in response to receiving the data write request:

write data accompanying the data write request into at least one erase unit of the one or more erase units which are mapped to the specific one of the subdivisions; and

responsively update the metadata.

17. The storage device of claim 1 , wherein the logic is further to cause the storage device to:

receive a maintenance command from the host, wherein the maintenance command is accompanied by information designating the specific one of the subdivisions; and

in response to receiving the maintenance command, erase the one or more of the erase units which are mapped to the specific one of the subdivisions.

18. The storage device of claim 17 , wherein the maintenance command is a first maintenance command, and wherein the logic is further to cause the storage device to:

store metadata for the specific one of the subdivisions, wherein the metadata is to indicate an extent to which the specific one of the subdivisions is unutilized and can continue to receive additional write data without the storage device first performing a maintenance operation; and

responsively update the metadata after receiving the first maintenance command.

19. The storage device of claim 1 , wherein the logic is further to cause the storage device to:

store metadata for the specific one of the subdivisions, wherein the metadata is to indicate an extent to which the specific one of the subdivisions is unutilized and can continue to receive additional write data;

selectively perform an operation which increases the extent to which the specific one of the subdivisions can receive additional write data; and

responsively update the metadata after performing the operation.

20. The storage device of claim 1 , wherein:

the logic is further to cause the storage device to control erasure of the one or more erase units mapped to the specific one of the subdivisions and, in controlling the erasure, to detect an error of at least one erase unit which fails to erase;

the data write request is a first data write request;

the storage device is also to receive a second data write request which designates the specific one of the subdivisions; and

in response to the second data write request, the logic is to cause the storage drive to map the specific one of the subdivisions to at least one different erase unit, not part of the one or more erase units which was mapped to the specific one of the subdivisions, and to write data accompanying the second write request into the at least one different erase unit.

21. The storage device of claim 1 , wherein the logic is further to cause the storage device to perform at least one division operation on the third address portion to identify a specific erase unit.

22. The storage device of claim 1 , wherein the flash memory further comprises planes, wherein the specific one of the subdivisions is mapped to two or more of the erase units of the flash memory, including erase units on different ones of the planes.

23. The storage device of claim 1 , wherein:

the identifier is a specific identifier;

the information transmitted to the host indicates two or more identifiers including the specific identifier, within the specific one of the namespaces, and a different identifier; and

the logic is further to cause the storage device to receive a maintenance command from the host and, responsive to the maintenance command, to copy data, without sending the data being copied to the host, from the one or more erase units which are mapped to the specific one of the subdivisions to one or more different erase units.

24. The storage device of claim 1 , wherein the logic is further to cause the storage device to:

store metadata representing a time since data was programmed into the specific one of the subdivisions;

compare the metadata representing the time since data was programmed to a threshold;

upon detection that the metadata has satisfied the threshold, copy data from the one or more erase units which are mapped to the specific one of the subdivisions to one or more different erase units; and

remap the specific one of the subdivisions to encompass the one or more different erase units.

25. The storage device of claim 1 , wherein the logic is further to cause the storage device to map the specific one of the subdivisions to no more than one of the erase units.

26. A storage device comprising:

flash memory having erase units, wherein the flash memory is to have one or more namespaces, one or more groups of subdivisions within at least one of the namespaces, each group having two or more of the subdivisions; and

logic to cause the storage device to:

transmit to a host, responsive to receipt of at least one command from the host, information to identify the specific one of the namespaces and the specific one of the groups; and

receive a first data write request and associated first address information from the host and a second data write request and associated second address information from the host;

responsive to the first data write request and associated first address information,

derive a first address portion from the associated address information, to identify the specific one of the namespaces,

perform one or more operations to subdivide the associated address information, to derive a second address portion and a third address portion,

identify the specific one of the groups from the second address portion,

obtain from the third address portion an identifier for a specific one of the subdivisions within the specific one of the groups,

map one or more of the erase units of the flash memory to the specific one of the subdivisions, and

write first data into one of the one or more erase units which are mapped to the specific one of the subdivisions;

responsive to the second data write request and associated second address information,

derive a first address portion from the associated second address information, to identify the specific one of the namespaces,

perform one or more operations to subdivide the associated second address information, to derive a second address portion and a third address portion,

identify the specific one of the groups from the second address portion which was derived from the associated second address information,

obtain from the third address portion the identifier,

write second data into one of the one or more erase units which are mapped to the specific one of the subdivisions;

wherein said logic comprises at least one of (1) instructional logic stored on a physical storage medium and (2) hardware logic.

27. An apparatus comprising:

at least one host device;

flash memory having erase units, wherein the flash memory is to have one or more namespaces, one or more groups of subdivisions within at least one of the namespaces, each group having two or more of the subdivisions, wherein a specific one of the subdivisions within a specific one of the groups within a specific one of the namespaces is mapped to one or more of the erase units of the flash memory; and

logic to cause the storage device to:

track metadata for the specific one of the subdivisions, which indicates an extent to which the specific one of the subdivisions is full;

transmit to the host device, responsive to receipt of at least one command from the host device, information to identify the specific one of the namespaces, the specific one of the groups of subdivisions, the specific one of the subdivisions and information representing the extent to which the specific one of the subdivisions is full and

receive a data write request and associated address information, and responsively,

derive a first address portion from the associated address information, to identify the specific one of the namespaces,

perform one or more operations to subdivide the associated address information, to derive a second address portion and a third address portion,

identify the specific one of the groups from the second address portion,

obtain from the third address portion an identifier for the specific one of the subdivisions, and

write data into one of the one or more erase units which are mapped to the specific one of the subdivisions;

wherein said logic comprises at least one of (1) instructional logic stored on a physical storage medium and (2) hardware logic.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2024
From: RADIAN MEMORY SYSTEMS, INC.
To: RADIAN MEMORY SYSTEMS LLC
Reel/Frame 067471/0240 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2023
From: KUZMIN, ANDREY V.; ROBERTSON, CRAIG; LERCARI, ROBERT; JADON, MIKE; CHEN, ALAN
To: RADIAN MEMORY SYSTEMS, LLC
Reel/Frame 063479/0569 →
CHANGE OF NAME Recorded Apr 28, 2023
From: RADIAN MEMORY SYSTEMS, LLC
To: RADIAN MEMORY SYSTEMS, INC.
Reel/Frame 064044/0503 →
Continuity (11)
Continuation 17377754 · Jul 16, 2021
Continuation 17213015 · Mar 25, 2021
Continuation 16841402 · Apr 6, 2020
Continuation 15690006 · Aug 29, 2017
Continuation 15074778 · Mar 18, 2016
Continuation 14880529 · Oct 12, 2015
Continuation In Part 14848273 · Sep 8, 2015
Provisional Application 62199969 · Jul 31, 2015
Provisional Application 62194172 · Jul 17, 2015
Provisional Application 62063357 · Oct 13, 2014
Provisional Application 62048162 · Sep 9, 2014
Cited By (2)
US 12,321,278 US 12,675,417