US 11,740,801 B1
Cooperative flash management of storage device subdivisions
Andrey V. Kuzmin, Moscow (RU); Alan Chen, Simi Valley, CA (US); and Robert Lercari, Thousand Oaks, CA (US)
Assigned to Radian Memory Systems, Inc., Manhattan Beach, CA (US)
Filed by Radian Memory Systems, Inc., Manhattan Beach, CA (US)
Filed on Jan. 5, 2022, as Appl. No. 17/568,891.
Application 17/568,891 is a continuation of application No. 16/832,793, filed on Mar. 27, 2020, granted, now 11,249,652.
Application 16/832,793 is a continuation of application No. 14/848,273, filed on Sep. 8, 2015, granted, now 10,642,505, issued on May 5, 2020.
Application 14/848,273 is a continuation in part of application No. 14/047,193, filed on Oct. 7, 2013, granted, now 9,229,854, issued on Jan. 5, 2016.
Application 14/047,193 is a continuation in part of application No. 13/767,723, filed on Feb. 14, 2013, granted, now 9,652,376, issued on May 16, 2017.
Claims priority of provisional application 62/063,357, filed on Oct. 13, 2014.
Claims priority of provisional application 62/048,162, filed on Sep. 9, 2014.
Claims priority of provisional application 61/757,464, filed on Jan. 28, 2013.
Int. Cl. G06F 3/06 (2006.01); G06F 12/02 (2006.01)
CPC G06F 3/0616 (2013.01) [G06F 3/0647 (2013.01); G06F 3/0679 (2013.01); G06F 12/0246 (2013.01); G06F 2212/7205 (2013.01); G06F 2212/7211 (2013.01)] 24 Claims
OG exemplary drawing
 
1. A storage device comprising:
NAND flash memory; and
a memory controller having logic to cause the memory controller to
map non-overlapping ranges of logical addresses to respective subdivisions of physical storage in the NAND flash memory, each of the respective subdivisions comprising erase blocks that must each be physically erased as a unit,
receive write requests, accompanying addresses and accompanying data from a host and, with respect to each one of the write requests,
identify a specific one of the respective subdivisions dependent on which one of the non-overlapping ranges encompasses the address accompanying the one of the write requests,
program the data accompanying with the one of the write requests into a next available storage location within the specific one of the respective subdivisions, and
in association with the programming of the data accompanying the one of the write requests, update information, for the specific one of the respective subdivisions, representing an extent to which the erase blocks of the specific one of the respective subdivisions are full,
store a value representing a size of the NAND flash memory that is to be physically erased in fulfilling a maintenance request issued by the host,
provide to the host, responsive to a query received from the host, the information, as updated, and the stored value,
update metadata for the specific one of the respective subdivisions, wherein the metadata represents a characteristic of the data in the specific one of the respective subdivisions,
with respect to the metadata, as updated,
perform a comparison based on the metadata to detect a condition, and
store information, responsive to detection of the condition, wherein the information is accessible to the host and indicates that the condition was detected;
wherein each said logic comprises at least one of circuitry or instructions stored on physical storage media that, when executed, are to control operation of circuitry.