Patentable/Patents/US-10642748
US-10642748

Memory controller for flash memory with zones configured on die bounaries and with separate spare management per zone

PublishedMay 5, 2020
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical 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.

Patent Claims
26 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A memory controller to control flash memory dies, the memory controller comprising: a host interface to receive data storage and access requests from a host; circuitry to receive configuration information from the host so as to define block devices, each of the block devices comprising a virtual address space mapped to a mutually-exclusive subset of the flash memory dies, wherein each of the block devices is to have a number of dies in the corresponding mutually-exclusive subset determined according to the configuration information, and wherein the corresponding virtual address space is less than an amount of storage space provided by the corresponding mutually-exclusive subset, such that the corresponding mutually-exclusive subset provides spare capacity; circuitry to manage the spare capacity for each of the block devices on an independent basis and to intermittently reassign at least part the corresponding virtual address space in a manner that maps to the spare capacity for corresponding block device; and circuitry to control fulfillment of the data storage and access requests from the host by issuing commands to the flash memory dies; wherein the host is free to define the respective block devices such that the respective spare capacities are free to be different in size from one another, such that the respective virtual address spaces are configurable by the host to provide different wear characteristics; wherein each of the data storage and access requests is to select one of the block devices; and wherein said circuitry is to issue a first command to a flash memory die associated with a first one of the block devices, in response to a first request of the data storage and access requests from the host which selects the first one of the block devices, without awaiting completion of a second command issued by the memory controller to a flash memory die associated with a second one of the block devices, wherein the second command is issued by the memory controller in response to a second request of the data storage and access requests from the host which selects the second one of the block devices.

2

2. The memory controller of claim 1 , wherein: the memory controller further comprises circuitry to control the performance of maintenance operations in flash memory associated with the first one of the block devices and to control performance of maintenance operations in flash memory associated with the second one of the block devices, said maintenance operations including at least one of garbage collection or wear leveling; the circuitry to control fulfillment of the data storage and access requests is to issue data read commands and data write commands to the flash memory associated with the first one of the block devices irrespective of whether maintenance operations are currently being performed in the second one of the block devices; and the circuitry to control fulfillment of the data storage and access requests is to issue data read commands and data write commands to the flash memory associated with the second one of the block devices irrespective of whether maintenance operations are currently being performed in the first one of the block devices.

3

3. The memory controller of claim 2 , wherein: the memory controller further comprises circuitry to identify need for the maintenance operations in each of the first one of the block devices and the second one of the block devices; the memory controller further comprises circuitry to transmit information to the host responsive to identification of the need for the maintenance operations in a given one of the first block device or the second block device, while deferring performance of the maintenance operations in the flash memory associated with the given one of the first block device or the second block device; the circuitry to control the performance of maintenance operations in the flash memory associated with the first one of the block devices and to control performance of maintenance operations in the flash memory associated with the second one of the block devices is to initiate the maintenance operations in the given one of the first block device or the second block device responsive to a host command to proceed, received via the host interface; and a time at which the host command to proceed is received by the memory controller at least partially dictates when performance of the maintenance operations is initiated in the flash memory associated with the given one of the first block device or the second block device by the memory controller.

4

4. The memory controller of claim 1 , wherein: the configuration information comprises, for each associated one of the block devices including the first one and the second one of the block devices, a respective parameterized description; the circuitry to control fulfillment of the data storage and access requests from the host is to assign physical addresses in response to each of the data storage and access requests from the host, the physical addresses indexing storage units in which to store corresponding data; and the assignment of the physical addresses for each of the block devices is performed in a manner dependent on the respective parameterized description for the associated one of the block devices.

5

5. The memory controller of claim 4 , wherein: the respective parameterized description for each associated one of the block devices identifies whether write data for sequential addresses is to be assigned to sequential physical spaces within a given one of the storage units for the associated one of the block devices or whether the write data for the sequential addresses is to be assigned to physical spaces in respective, sequential ones of the storage units for the associated one of the block devices; and the respective parameterized description for the first one of the block devices and the respective parameterized description for the second one of the block devices can be selected to be different from one another, such that write data for sequential addresses can be assigned to physical storage space in a first manner for the first one of the block devices and write data for sequential addresses can be assigned to physical storage space in a second manner for the second one of the block devices, according to the respective parameterized description.

6

6. The memory controller of claim 4 , wherein: the respective parameterized description for each associated one of the block devices identifies a respective range of logical addresses that is to be linearly mapped to flash memory for the associated one of the block devices; and a sub-address field of each of the logical addresses for each of the block devices is to be directly mapped to a structural hierarchical level for the associated one of the block devices, such that different values of the sub-address field resolve to respective ones of the storage units at the structural hierarchical level for the associated one of the block devices.

7

7. The memory controller of claim 4 , wherein: the respective parameterized description for each of the block devices identifies a number of the storage units at a structural hierarchical level for the associated block device that are to be reserved as spares, for selective replacement of ones of the storage units that are not reserved as spares for the associated one of the block devices; and the configuration information for each of the block devices comprises the number for the associated block device, and the number is selectively different for each one of the block devices.

8

8. The memory controller of claim 1 , wherein: at least one of the flash memory dies can be programmably and selectively associated with any one of the block devices.

9

9. A memory controller to control flash memory dies, the memory controller comprising: a host interface to receive data storage and access requests from a host; circuitry to receive configuration information from the host so as to define block devices, each of the block devices comprising a virtual address space mapped to a mutually-exclusive subset of the flash memory dies, wherein each of the block devices is to have a number of dies in the corresponding mutually-exclusive subset determined according to the configuration information, and wherein the corresponding virtual address space is less than an amount of storage space provided by the corresponding mutually-exclusive subset, such that the corresponding mutually-exclusive subset provides spare capacity; circuitry to manage the spare capacity for each of the block devices on an independent basis and to intermittently reassign at least part the corresponding virtual address space in a manner that maps to the spare capacity for corresponding block device; and circuitry to control fulfillment of the data storage and access requests from the host by issuing commands to the flash memory dies; wherein the host is free to define the respective block devices such that the respective spare capacities are free to be different in size from one another, such that the respective virtual address spaces are configurable by the host to provide different wear characteristics; wherein each of the data storage and access requests is to select one of the block devices; wherein said circuitry is to issue a first command to a flash memory die associated with a first one of the block devices in response to a first request of the data storage and access requests from the host which selects the first one of the block devices, without awaiting completion of a second command issued by the memory controller to a flash memory die associated with a second one of the block devices, wherein the second command is issued by the memory controller in response to a second request of the data storage and access requests from the host which selects the second one of the block devices; and wherein the memory controller further comprises circuitry to control the performance of maintenance operations in flash memory associated with the first one of the block devices and to control performance of maintenance operations in flash memory associated with the second one of the block devices, said maintenance operations including at least one of garbage collection or wear leveling, the circuitry to control fulfillment of the data storage and access requests is to issue data read commands and data write commands to the flash memory associated with the first one of the block devices irrespective of whether maintenance operations are currently being performed in the second one of the block devices, and the circuitry to control fulfillment of the data storage and access requests is to issue data read commands and data write commands to the flash memory associated with the second one of the block devices irrespective of whether maintenance operations are currently being performed in the first one of the block devices.

10

10. The memory controller of claim 9 , wherein: the memory controller further comprises circuitry to identify need for the maintenance operations in each of the first one of the block devices and the second one of the block devices; the memory controller further comprises circuitry to transmit information to the host responsive to identification of the need for the maintenance operations in a given one of the first block device or the second block device, while deferring performance of the maintenance operations in the flash memory associated with the given one of the first block device or the second block device; the circuitry to control the performance of maintenance operations in the flash memory associated with the first one of the block devices and to control performance of maintenance operations in the flash memory associated with the second one of the block devices is to initiate the maintenance operations in the given one of the first block device or the second block device responsive to a host command to proceed, received via the host interface; and a time at which the host command to proceed is received by the memory controller at least partially dictates when performance of the maintenance operations is initiated in the flash memory associated with the given one of the first block device or the second block device by the memory controller.

11

11. The memory controller of claim 9 , wherein: the configuration information comprises, for each associated one of the block devices including the first one and the second one of the block devices, a respective parameterized description; the circuitry to control fulfillment of the data storage and access requests from the host is to assign physical addresses in response to each of the data storage and access requests from the host, the physical addresses indexing storage units in which to store corresponding data; and the assignment of the physical addresses for each of the block devices is performed in a manner dependent on the respective parameterized description for the associated one of the block devices.

12

12. The memory controller of claim 11 , wherein: the respective parameterized description for each associated one of the block devices identifies whether write data for sequential addresses is to be assigned to sequential physical spaces within a given one of the storage units for the associated one of the block devices or whether the write data for the sequential addresses is to be assigned to physical spaces in respective, sequential ones of the storage units for the associated one of the block devices; and the respective parameterized description for the first one of the block devices and the respective parameterized description for the second one of the block devices can be selected to be different from one another, such that write data for sequential addresses can be assigned to physical storage space in a first manner for the first one of the block devices and write data for sequential addresses can be assigned to physical storage space in a second manner for the second one of the block devices, according to the respective parameterized description.

13

13. The memory controller of claim 11 , wherein: the respective parameterized description for each associated one of the block devices identifies a respective range of logical addresses that is to be linearly mapped to flash memory for the associated one of the block devices; and a sub-address field of each of the logical addresses for each of the block devices is to be directly mapped to a structural hierarchical level for the associated one of the block devices, such that different values of the sub-address field resolve to respective ones of the storage units at the structural hierarchical level for the associated one of the block devices.

14

14. The memory controller of claim 11 , wherein: the respective parameterized description for each of the block devices identifies a number of the storage units at a structural hierarchical level for the associated block device that are to be reserved as spares, for selective replacement of ones of the storage units that are not reserved as spares for the associated one of the block devices; and the configuration information for each of the block devices comprises the number for the associated block device, and the number is selectively different for each one of the block devices.

15

15. A memory controller to control flash memory dies, the memory controller comprising: a host interface to receive data storage and access requests from a host; circuitry to receive configuration information from the host so as to define block devices, each of the block devices comprising a virtual address spaced mapped to a mutually-exclusive subset of the flash memory dies, wherein each of the block devices is to have a number of dies in the corresponding mutually-exclusive subset determined according to the configuration information, and wherein the corresponding virtual address space is less than an amount of storage space provided by the corresponding mutually-exclusive subset, such that the corresponding mutually-exclusive subset provides spare capacity; circuitry to manage the spare capacity for each of the block devices on an independent basis and to intermittently reassign at least part the corresponding virtual address space in a manner that maps to the spare capacity for corresponding block device; and circuitry to control fulfillment of the data storage and access requests from the host by issuing commands to the flash memory dies; wherein the host is free to define the respective block devices such that the respective spare capacities are free to be different in size from one another, such that the respective virtual address spaces are configurable by the host to provide different wear characteristics; wherein each of the data storage and access requests is to select one of the block devices; wherein said circuitry is to issue a first command to a flash memory die associated with a first one of the block devices, in response to a first request of the data storage and access requests from the host which selects the first one of the block devices, without awaiting completion of a second command issued by the memory controller to a flash memory die associated with a second one of the block devices, wherein the second command is issued by the memory controller in response to a second request of the data storage and access requests from the host which selects the second one of the block devices; and wherein the configuration information comprises, for each associated one of the block devices including the first one and the second one of the block devices, a respective parameterized description, the circuitry to control fulfillment of the data storage and access requests from the host is to assign physical addresses in response to each of the data storage and access requests from the host, the physical addresses indexing storage units in which to store corresponding data, and the assignment of the physical addresses for each of the block devices is performed in a manner dependent on the respective parameterized description for the associated one of the block devices.

16

16. The memory controller of claim 15 , wherein: the memory controller further comprises circuitry to control the performance of maintenance operations in flash memory associated with the first one of the block devices and to control performance of maintenance operations in flash memory associated with the second one of the block devices, said maintenance operations including at least one of garbage collection or wear leveling; the circuitry to control fulfillment of the data storage and access requests is to issue data read commands and data write commands to the flash memory associated with the first one of the block devices irrespective of whether maintenance operations are currently being performed in the second one of the block devices; and the circuitry to control fulfillment of the data storage and access requests is to issue data read commands and data write commands to the flash memory associated with the second one of the block devices irrespective of whether maintenance operations are currently being performed in the first one of the block devices.

17

17. The memory controller of claim 16 , wherein: the memory controller further comprises circuitry to identify need for the maintenance operations in each of the first one of the block devices and the second one of the block devices; the memory controller further comprises circuitry to transmit information to the host responsive to identification of the need for the maintenance operations in a given one of the first block device or the second block device, while deferring performance of the maintenance operations in the flash memory associated with the given one of the first block device or the second block device; the circuitry to control the performance of maintenance operations in the flash memory associated with the first one of the block devices and to control performance of maintenance operations in the flash memory associated with the second one of the block devices is to initiate the maintenance operations in the given one of the first block device or the second block device responsive to a host command to proceed, received via the host interface; and a time at which the host command to proceed is received by the memory controller at least partially dictates when performance of the maintenance operations is initiated in the flash memory associated with the given one of the first block device or the second block device by the memory controller.

18

18. The memory controller of claim 15 , wherein: the respective parameterized description for each associated one of the block devices identifies whether write data for sequential addresses is to be assigned to sequential physical spaces within a given one of the storage units for the associated one of the block devices or whether the write data for the sequential addresses is to be assigned to physical spaces in respective, sequential ones of the storage units for the associated one of the block devices; and the respective parameterized description for the first one of the block devices and the respective parameterized description for the second one of the block devices can be selected to be different from one another, such that write data for sequential addresses can be assigned to physical storage space in a first manner for the first one of the block devices and write data for sequential addresses can be assigned to physical storage space in a second manner for the second one of the block devices, according to the respective parameterized description.

19

19. The memory controller of claim 15 , wherein: the respective parameterized description for each associated one of the block devices identifies a respective range of logical addresses that is to be linearly mapped to flash memory for the associated one of the block devices; and a sub-address field of each of the logical addresses for each of the block devices is to be directly mapped to a structural hierarchical level for the associated one of the block devices, such that different values of the sub-address field resolve to respective ones of the storage units at the structural hierarchical level for the associated one of the block devices.

20

20. The memory controller of claim 15 , wherein: the respective parameterized description for each of the block devices identifies a number of the storage units at a structural hierarchical level for the associated block device that are to be reserved as spares, for selective replacement of ones of the storage units that are not reserved as spares for the associated one of the block devices; and the configuration information for each of the block devices comprises the number for the associated block device, and the number is selectively different for each one of the block devices.

21

21. The memory controller of claim 15 , wherein: at least one of the flash memory dies can be programmably and selectively associated with any one of the block devices.

22

22. The memory controller of claim 15 , embodied as a memory controller integrated circuit, wherein each of the host and the flash memory dies are external to the memory controller integrated circuit.

23

23. A device, comprising: flash memory dies; and a memory controller to control the flash memory dies, wherein the memory controller comprises a host interface to receive data storage and access requests from a host, circuitry to receive configuration information from the host so as to define block devices, each of the block devices comprising a virtual address space mapped to a mutually-exclusive subset of the flash memory dies, wherein each of the block devices is to have a number of dies in the corresponding mutually-exclusive subset determined according to the configuration information, and wherein the corresponding virtual address space is less than an amount of storage space provided by the corresponding mutually-exclusive subset, such that the corresponding mutually-exclusive subset provides spare capacity, circuitry to manage the spare capacity for each of the block devices on an independent basis and to intermittently reassign at least part the corresponding virtual address space in a manner that maps to the spare capacity for corresponding block device, and circuitry to control fulfillment of the data storage and access requests from the host by issuing commands to the flash memory dies, wherein the host is free to define the respective block devices such that the respective spare capacities are free to be different in size from one another, such that the respective virtual address spaces are configurable by the host to provide different wear characteristics, wherein each of the data storage and access requests is to select one of the block devices, and wherein said circuitry is to issue a first command to a flash memory die associated with a first one of the block devices, in response to a first request of the data storage and access requests from the host which selects the first one of the block devices, without awaiting completion of a second command issued by the memory controller to a flash memory die associated with a second one of the block devices, wherein the second command is issued by the memory controller in response to a second request of the data storage and access requests from the host which selects the second one of the block devices.

24

24. The device of claim 23 , wherein: the memory controller further comprises circuitry to control the performance of maintenance operations in flash memory associated with the first one of the block devices and to control performance of maintenance operations in flash memory associated with the second one of the block devices, said maintenance operations including at least one of garbage collection or wear leveling; the circuitry to control fulfillment of the data storage and access requests is to issue data read commands and data write commands to the flash memory associated with the first one of the block devices irrespective of whether maintenance operations are currently being performed in the second one of the block devices; and the circuitry to control fulfillment of the data storage and access requests is to issue data read commands and data write commands to the flash memory associated with the second one of the block devices irrespective of whether maintenance operations are currently being performed in the first one of the block devices.

25

25. The device of claim 23 , wherein: the memory controller further comprises circuitry to identify need for the maintenance operations in each of the first one of the block devices and the second one of the block devices; the memory controller further comprises circuitry to transmit information to the host responsive to identification of the need for the maintenance operations in a given one of the first block device or the second block device, while deferring performance of the maintenance operations in the flash memory associated with the given one of the first block device or the second block device; the circuitry to control the performance of maintenance operations in the flash memory associated with the first one of the block devices and to control performance of maintenance operations in the flash memory associated with the second one of the block devices is to initiate the maintenance operations in the given one of the first block device or the second block device responsive to a host command to proceed, received via the host interface; and a time at which the host command to proceed is received by the memory controller at least partially dictates when performance of the maintenance operations is initiated in the flash memory associated with the given one of the first block device or the second block device by the memory controller.

26

26. The device of claim 23 , wherein: the configuration information comprises, for each associated one of the block devices including the first one and the second one of the block devices, a respective parameterized description; the circuitry to control fulfillment of the data storage and access requests from the host is to assign physical addresses in response to each of the data storage and access requests from the host, the physical addresses indexing storage units in which to store corresponding data; and the assignment of the physical addresses for each of the block devices is performed in a manner dependent on the respective parameterized description for the associated one of the block devices.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

August 29, 2017

Publication Date

May 5, 2020

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Memory controller for flash memory with zones configured on die bounaries and with separate spare management per zone” (US-10642748). https://patentable.app/patents/US-10642748

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.

Memory controller for flash memory with zones configured on die bounaries and with separate spare management per zone — Andrey V. Kuzmin | Patentable