Memory controller for flash memory with zones configured on die bounaries and with separate spare management per zone
First Claim
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 Assignments
0 Petitions
Accused Products
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.
155 Citations
26 Claims
-
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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
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. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
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. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22)
-
-
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. - View Dependent Claims (24, 25, 26)
-
Specification