data is distributed to solid-state disks (SSDs) using the RAID-0 technique. Based on a utilization of a first region of a first one of the SSDs, the first region is selected for garbage collection. Valid data from the first region is copied to an active region of the first one of the SSDs as part of a process of garbage collection. While the process of garbage collection is being performed, data is distributed to a subset of the SSDs using the RAID-0 technique where the subset of the SSDs does not include the first one of the plurality of nonvolatile solid-state memories selected for garbage collection.
|
1. A method of storing data to a nonvolatile solid-state memory, comprising:
distributing data from a host to a plurality of nonvolatile solid-state memories using a RAID-0 technique;
based on a utilization of a first region of a first one of the plurality of nonvolatile solid-state memories, selecting the first region of the first one of the plurality of nonvolatile solid-state memories for garbage collection;
copying valid data from a region of a nonvolatile random access memory to at least the first region of the first one of the plurality of nonvolatile solid-state memories as part of a process of garbage collection; and
while the process of garbage collection is being performed, distributing the data from the host to a subset of the plurality of nonvolatile solid-state memories using the RAID-0 technique, the subset of the plurality of nonvolatile solid-state memories not including the first one of the plurality of nonvolatile solid-state memories selected for garbage collection.
7. A nonvolatile solid-state memory storage system, comprising:
a plurality of nonvolatile solid-state memories; and
a nonvolatile solid-state memory driver configured to distribute data from a host to the plurality of nonvolatile solid-state memories using a RAID-0 technique and configured to, based on a utilization of a first region of a first one of the plurality of nonvolatile solid-state memories, select the first region of the first one of the plurality of nonvolatile solid-state memories for garbage collection, and configured to copy valid data from a region of a nonvolatile random access memory to at least the first region of the first one of the plurality of nonvolatile solid-state memories as part of a process of garbage collection, and configured to, while the process of garbage collection is being performed, distribute the data from the host to a subset of the plurality of nonvolatile solid-state memories using the RAID-0 technique, the subset of the plurality of nonvolatile solid-state memories not including the first one of the plurality of nonvolatile solid-state memories selected for garbage collection.
15. A non-transitory computer readable medium having instructions stored thereon for storing data to a nonvolatile solid-state memory that, when executed by a computer, at least instruct the computer to:
distribute data from a host to a plurality of nonvolatile solid-state memories using a RAID-0 technique;
based on a utilization of a first region of a first one of the plurality of nonvolatile solid-state memories, select the first region of the first one of the plurality of nonvolatile solid-state memories for garbage collection;
copy valid data from the first region of the first one of the plurality of nonvolatile solid-state memories to an active region of the first one of the plurality of nonvolatile solid-state memories as part of a process of garbage collection; and
while the process of garbage collection is being performed, distribute the data from the host to a subset of the plurality of nonvolatile solid-state memories using the RAID-0 technique, the subset of the plurality of nonvolatile solid-state memories not including the first one of the plurality of nonvolatile solid-state memories selected for garbage collection.
2. The method of
after the process of garbage collection is complete on the first region of the first one of the plurality of nonvolatile solid-state memories, distributing the data from the host to the complete set of the plurality of nonvolatile solid-state memories using the RAID-0 technique.
3. The method of
maintaining a first set of flags to indicate which of the plurality of nonvolatile solid-state memories is undergoing the process of garbage collection.
4. The method of
maintaining a second set of flags to indicate which of the plurality of nonvolatile solid-state memories being used for garbage collection information on a respective active region of the plurality of nonvolatile solid-state memories.
5. The method of
maintaining a third set of flags associated with a plurality of logical block addresses that indicate when metadata associated with each of the plurality of logical block addresses has not been written to the plurality of nonvolatile solid-state memories.
6. The method of
after the process of garbage collection is complete on the first region of the first one of the plurality of nonvolatile solid-state memories, distributing the data from the host to the complete set of the plurality of nonvolatile solid-state memories using the RAID-0 technique.
8. The storage system of
after the process of garbage collection is complete on the first region of the first one of the plurality of nonvolatile solid-state memories, distribute the data from the host to the complete set of the plurality of nonvolatile solid-state memories using the RAID-0 technique.
9. The storage system of
maintain a first set of flags to indicate which of the plurality of nonvolatile solid-state memories is undergoing the process of garbage collection.
10. The storage system of
maintain a second set of flags to indicate which of the plurality of nonvolatile solid-state memories being used for garbage collection information on a respective active region of the plurality of nonvolatile solid-state memories.
11. The storage system of
maintain a third set of flags associated with a plurality of logical block addresses that indicate when metadata associated with each of the plurality of logical block addresses has not been written to the plurality of nonvolatile solid-state memories.
12. The storage system of
after the process of garbage collection is complete on the first region of the first one of the plurality of nonvolatile solid-state memories, distribute the data from the host to the complete set of the plurality of nonvolatile solid-state memories using the RAID-0 technique.
13. The storage system of
14. The storage system of
16. The medium of
after the process of garbage collection is complete on the first region of the first one of the plurality of nonvolatile solid-state memories, distribute the data from the host to the complete set of the plurality of nonvolatile solid-state memories using the RAID-0 technique.
17. The medium of
maintain a first set of flags to indicate which of the plurality of nonvolatile solid-state memories is undergoing the process of garbage collection.
18. The medium of
maintain a second set of flags to indicate which of the plurality of nonvolatile solid-state memories being used for garbage collection information on a respective active region of the plurality of nonvolatile solid-state memories.
19. The medium of
maintaining a third set of flags associated with a plurality of logical block addresses that indicate when metadata associated with each of the plurality of logical block addresses has not been written to the plurality of nonvolatile solid-state memories.
20. The medium of
after the process of garbage collection is complete on the first region of the first one of the plurality of nonvolatile solid-state memories, distribute the data from the host to the complete set of the plurality of nonvolatile solid-state memories using the RAID-0 technique.
|
An undesirable occurrence with flash memory is write amplification. When write amplification occurs, the amount of data actually written to flash memory device is greater than the amount of data necessary to store that data. This occurs because flash memory must be erased before it can be rewritten. Thus, in order to write data to a particular block of flash memory, any data not being overwritten in that block must first be moved and written elsewhere. This multiplies the number of writes required which consumes bandwidth to the flash memory and decreases the life expectancy of the flash memory.
An embodiment of the invention may therefore comprise a method of storing data to a nonvolatile solid-state memory, comprising: distributing data to a plurality of nonvolatile solid-state memories using a RAID-0 technique; based on a utilization of a first region of a first one of the plurality of nonvolatile solid-state memories, selecting the first region of the first one of the plurality of nonvolatile solid-state memories for garbage collection; copying valid data from the first region of the first one of the plurality of nonvolatile solid-state memories to an active region of the first one of the plurality of nonvolatile solid-state memories as part of a process of garbage collection; and, while the process of garbage collection is being performed, distributing data to subset of the plurality of nonvolatile solid-state memories using the RAID-0 technique, the subset of the plurality of nonvolatile solid-state memories not including the first one of the plurality of nonvolatile solid-state memories selected for garbage collection.
An embodiment of the invention may therefore further comprise a nonvolatile solid-state memory storage system, comprising: a plurality of nonvolatile solid-state memories; and, a nonvolatile solid-state memory controller configured to distribute data to the plurality of nonvolatile solid-state memories using a RAID-0 technique and configured to, based on a utilization of a first region of a first one of the plurality of nonvolatile solid-state memories, select the first region of the first one of the plurality of nonvolatile solid-state memories for garbage collection, and configured to copy valid data from the first region of the first one of the plurality of nonvolatile solid-state memories to an active region of the first one of the plurality of nonvolatile solid-state memories as part of a process of garbage collection, and configured to, while the process of garbage collection is being performed, distribute data to subset of the plurality of nonvolatile solid-state memories using the RAID-0 technique, the subset of the plurality of nonvolatile solid-state memories not including the first one of the plurality of nonvolatile solid-state memories selected for garbage collection.
SSD 120 includes controller 130, and nonvolatile memory (NVM) 150. Controller 130 is operatively coupled to NVM 150. Thus, controller 130 may operate and control NVM 150. Controller 130 may operate and control NVM 150 to emulate a mass storage device such as a disk drive. NVM 150 is shown having regions 150A-150E. Controller 130 is shown as optionally operatively coupled to at least one of the regions 150A-150E. Thus, controller 150 may be operatively coupled to one or more of regions 150A-150E to read and/or write data.
SSD 121 includes controller 131, and NVM 151. Controller 131 is operatively coupled to NVM 151. Thus, controller 131 may operate and control NVM 151. Controller 131 may operate and control NVM 151 to emulate a mass storage device such as a disk drive. NVM 151 is shown having regions 151A-151E. Controller 131 is shown as optionally operatively coupled to at least one of the regions 151A-151E. Thus, controller 151 may be operatively coupled to one or more of regions 151A-151E to read and/or write data.
SSD 122 includes controller 132, and NVM 152. Controller 132 is operatively coupled to NVM 152. Thus, controller 132 may operate and control NVM 152. Controller 132 may operate and control NVM 151 to emulate a mass storage device such as a disk drive. NVM 152 is shown having regions 152A-152E. Controller 132 is shown as optionally operatively coupled to at least one of the regions 152A-152E. Thus, controller 152 may be operatively coupled to one or more of regions 152A-152E to read and/or write data. NVMs 150-152 may also be known as “flash memory.” In an embodiment, NVMs 150-152 may be NAND type flash memory.
Host 110 is operatively coupled to HBA 160 and NVRAM 170. Host includes memory 180. Memory 180 includes memory allocations 140-143. Thus, Host 110 may operate and control memory 180 and NVRAM 170. NVRAM 170 is shown partitioned into regions 173A-173E. Thus, Host 110, and driver 115 and/or the elements of driver 115 may be operatively coupled to one or more of regions 173A-173E to read and/or write data.
SSDs 120-122 are operatively coupled to host 110. SSDs 120-122 are operatively coupled to driver 115, and I/O manager 116 in particular. Within SSDs 120-122, controllers 130-132 are shown as operatively coupled to driver 115, and I/O manager 116 in particular.
In an embodiment, storage system 100 creates a redundant array of inexpensive disks (RAID) level 0 (RAID-0) volume across SSDs 120-122. Region manager 117 manages and controls the allocation and use of the regions 173A-173E. Region manager 117 is responsible for breaking up NVRAM 170 into the regions 173A-173E. The region manager breaks NVRAM 170 into blocks of a set size (e.g., 1 GB regions) which each then contain a smaller sized metadata block. A region size may be chosen as two times the size of controllers 130-133 block size used for batch erasing NVMs 150-152, respectively. Region manager 117 allocates regions 173A-173E such that each region 173A-173E is restricted to (i.e., corresponds to) a single SSD 120-123.
Region manager 117 also maintains at least one active region which is used for I/O transactions from host 110 (e.g., application 112) and for garbage collection activities (i.e., I/O transactions from garbage collection manager 118). In an embodiment, region manager 117 maintains an active region for each of SSDs 120-122. For example, as illustrated in
Initially, as I/O transactions are received by driver 115, region manager 117 assigns LBAs to be used from all active regions on SSDs 120-122 in parallel. This helps keep flash controllers 130-132 all busy simulating the RAID-0 volume.
When a region on an SSD 120-122 has a sufficient amount of data that is no longer needed (a.k.a., stale pages or “holes”), the rest of the region (i.e., the part(s) of the region with good data that is still needed) is read and re-written to another region that has been previously erased (i.e., that is empty). This process is called “garbage collection” and is managed by garbage collection manager 118.
In an embodiment, when garbage collection manager 118 selects a region for garbage collection, the SSD holding that region is marked for garbage collection activity. While the garbage collection procedure is being performed on the selected region (and SSD), host I/O transactions are sent to active regions on SSDs 120-122 that do not have garbage collection activity currently being performed on them. The garbage collection I/O transactions are sent to the active region of the SSD on which the garbage collection procedure is being performed.
For example, as illustrated in
It should be understood that by sending garbage collection I/O transactions that transfer garbage collection data from the region 173A-173E being garbage collected, multiple regions can be used for garbage collection activity to fill the current active region. In other words, if the garbage collection data from region being garbage collected exceeds the free space on the active region, region manager 117 can allocate another active region to receive the remaining garbage collection data associated with the region being garbage collected. It should also be understood that by separating out host 110 I/O transactions and garbage collection I/O transactions into different regions (and/or different SSDs 120-122), the co-location of frequently changing data is increased. Likewise, by separating out host 110 I/O transactions and garbage collection I/O transactions into different regions (and/or different SSDs 120-122), the co-location of stagnant (i.e., not as frequently changing data) data is increased. This results in frequently changing data and stagnant data migrating to different regions. This helps avoid the fragmentation of stale data blocks across a large number of regions. The fragmentation of stale data blocks across a large number of regions can lead to unnecessary movement (i.e., write amplification) of large amounts of data (i.e., blocks) during garbage collection procedures.
In another embodiment, when garbage collection manager 118 selects a region for garbage collection, system 100 may send garbage collection I/O transactions to the active region of an SSD on which the garbage collection procedure is not being performed. This may be done to help equalize the distribution of regions with similar amounts of holes across all SSDs 120-122. Flags can be used to indicate which SSD 120-122 is being used for garbage collection activity on a region, and which SSD 120-122 is being used to receive the garbage collection data on its active region. This can help migrate garbage collection I/O transactions from different SSDs 120-122 to an SSD 120-122 with a larger number of regions with a relatively high stale block density. By managing where host 100 I/O transactions and garbage collection I/O transactions are stored, the load on controllers 130-132 can be balanced (i.e., attempted to be equalized among all controllers 130-132).
In an embodiment, metadata can be managed at the SSD 120-122 level. Driver 115 uses NVRAM 170 to store metadata within each active region (in the metadata section of that region 173A-173E, respectively.) Once a metadata section is filled up with I/O transactions from host 100 and/or garbage collection manager 118, the metadata block is written.
As metadata is retrieved from NVRAM 170 during system 100 initialization, the metadata sections should be read in the order they were written so that stale references (i.e., LBA references to stale data that has been moved by, for example, garbage collection) are replaced with the most current LBA of the good data. In an embodiment, region manager 117 assigns a sequence number to the current active metadata section. This sequence number is to be written along with, and at the same time as, the metadata section. The sequence numbers typically increase across SSDs 120-122 because all of the active regions are being used in parallel.
To avoid the same LBA location from being rewritten multiple times in different metadata sections that are still open, a flag is maintained in the host LBA mapping. This flag indicates the current LBA location has yet to be flushed to an SSD (i.e., it is still in a transient state in NVRAM 170.) If this flag is set and the same LBA is rewritten, then the new data is written to the same metadata section to avoid data corruption. To write the new data to the same section, a search in NVRAM 170 is made to find the right metadata section for the right SSD 120-122. It should be understood that the probability of having to perform this search is low.
Based on a utilization of a first region of a first one of the plurality of nonvolatile solid-state memories, the first region of the first one of the plurality of nonvolatile memories is selected for garbage collection (304). For example, based on a utilization (i.e., the amount of stale data blocks or holes) of a region 173C on NVRAM 170, region 173C is selected for garbage collection by garbage collection manager 118.
Valid data is copied from the first region of the first one of the plurality of nonvolatile solid-state memories to an active region of the first one of the plurality of nonvolatile solid-state memories as part of a process of garbage collection (306). For example, the valid (i.e., non-stale) data stored in region 173C is copied to region 152E of SSD 122 under the control of garbage collection manager 118 as part of a garbage collection process.
While the process of garbage collection is being performed, data is distributed to a subset of the plurality of nonvolatile solid-state memories using the RAID-0 technique where the subset does not include the first one of the plurality of nonvolatile solid-state memories selected for garbage collection (308). For example, while the valid data is being copied from region 173C to region 152E, host 100 I/O transactions are distributed to SSDs 120 and 121 (but not SSD 122) using a RAID-0 technique such that all SSDs 120 and 121 (but not SSD 122) appear to applications 112 as a single volume.
In an embodiment, after the process of garbage collection is complete on the first region of the first one of the plurality of nonvolatile solid-state memories, data is distributed to the complete set of the plurality of nonvolatile solid-state memories using the RAID-0 technique. For example, after the valid data is copied from region 173C to region 152E, host 110 I/O transactions are distributed to SSDs 120-122 using a RAID-0 technique such that all SSDs 120-122) appear to applications 112 as a single volume.
A first set of flags can be maintained to indicate which of the plurality of nonvolatile solid-state memories is undergoing the process of garbage collection. For example, driver 115 can maintain a first set of flags to indicate which of the plurality of SSDs 120-122 undergoing the process of garbage collection. A second set of flags can be maintained to indicate which of the plurality of nonvolatile solid-state memories is being used for garbage collection information on a respective active region of the plurality of nonvolatile solid-state memories. For example, driver 115 can maintain a second set of flags to indicate which of SSDs 120, 121, or 122 is being used to receive the garbage collection data from NVRAM 170. A third set of flags associated with a plurality of logical block addresses that indicate when metadata associated with each of the plurality of logical block addresses has not been written to the plurality of nonvolatile solid-state memories can be maintained.
A second set of flags can be maintained to indicate which of the plurality of nonvolatile solid-state memories is being used for garbage collection information on a respective active region of the plurality of nonvolatile solid-state memories (404). For example, driver 115 can maintain a second set of flags to indicate which of SSDs 120, 121, or 122 is being used to receive the garbage collection data from NVRAM 170. A third set of flags associated with a plurality of logical block addresses that indicate when metadata associated with each of the plurality of logical block addresses has not been written to the plurality of nonvolatile solid-state memories can be maintained (406).
Optionally, after the process of garbage collection is complete on the first region of the first one of the plurality of nonvolatile solid-state memories, data is distributed to the complete set of the plurality of nonvolatile solid-state memories using the RAID-0 technique (408). For example, after the valid data is copied from region 173C to region 152E, host 110 I/O transactions may be distributed to SSDs 120-122 using the RAID-0 technique such that all SSDs 120-122) appear to applications 112 as a single volume.
The methods, systems, and functions described above may be implemented with or executed by one or more computer systems. The methods described above may also be stored on a non-transitory computer readable medium. Many of the elements of storage system 100 and may be, comprise, or include computers systems. This includes, but is not limited to host 110, SSDs 120-122, and controllers 130-132.
Communication interface 520 may comprise a network interface, modem, port, bus, link, transceiver, or other communication device. Communication interface 520 may be distributed among multiple communication devices. Processing system 530 may comprise a microprocessor, microcontroller, logic circuit, or other processing device. Processing system 530 may be distributed among multiple processing devices. User interface 560 may comprise a keyboard, mouse, voice recognition interface, microphone and speakers, graphical display, touch screen, or other type of user interface device. User interface 560 may be distributed among multiple interface devices. Storage system 540 may comprise a disk, tape, integrated circuit, RAM, ROM, network storage, server, or other memory function. Storage system 540 may be a computer readable medium. Storage system 540 may be distributed among multiple memory devices.
Processing system 530 retrieves and executes software 550 from storage system 540. Processing system 530 may retrieve and store data 570. Processing system 530 may also retrieve and store data via communication interface 520. Processing system 530 may create or modify software 550 or data 570 to achieve a tangible result. Processing system 530 may control communication interface 520 or user interface 560 to achieve a tangible result. Processing system 530 may retrieve and execute remotely stored software via communication interface 520.
Software 550 and remotely stored software may comprise an operating system, utilities, drivers, networking software, and other software typically executed by a computer system. Software 550 may comprise an application program, applet, firmware, or other form of machine-readable processing instructions typically executed by a computer system. When executed by processing system 530, software 550 or remotely stored software may direct computer system 500 to operate as described herein.
The foregoing description of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and other modifications and variations may be possible in light of the above teachings. The embodiment was chosen and described in order to best explain the principles of the invention and its practical application to thereby enable others skilled in the art to best utilize the invention in various embodiments and various modifications as are suited to the particular use contemplated. It is intended that the appended claims be construed to include other alternative embodiments of the invention except insofar as limited by the prior art.
Shivashankaraiah, Vinay Bangalore
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
8489804, | Sep 14 2009 | CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | System for using dynamic random access memory to reduce the effect of write amplification in flash memory |
20100023682, | |||
20110055471, | |||
20120284587, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 08 2013 | SHIVASHANKARAIAH, VINAY BANGALORE | LSI Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030343 | /0924 | |
May 03 2013 | Avago Technologies General IP (Singapore) Pte. Ltd. | (assignment on the face of the patent) | / | |||
May 06 2014 | LSI Corporation | DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT | PATENT SECURITY AGREEMENT | 032856 | /0031 | |
May 06 2014 | Agere Systems LLC | DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT | PATENT SECURITY AGREEMENT | 032856 | /0031 | |
Aug 14 2014 | LSI Corporation | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 035390 | /0388 | |
Feb 01 2016 | DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT | Agere Systems LLC | TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS RELEASES RF 032856-0031 | 037684 | /0039 | |
Feb 01 2016 | DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT | LSI Corporation | TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS RELEASES RF 032856-0031 | 037684 | /0039 | |
Feb 01 2016 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | BANK OF AMERICA, N A , AS COLLATERAL AGENT | PATENT SECURITY AGREEMENT | 037808 | /0001 | |
Jan 19 2017 | BANK OF AMERICA, N A , AS COLLATERAL AGENT | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS | 041710 | /0001 | |
May 09 2018 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | MERGER SEE DOCUMENT FOR DETAILS | 047422 | /0464 | |
Sep 05 2018 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464 ASSIGNOR S HEREBY CONFIRMS THE MERGER | 048883 | /0702 |
Date | Maintenance Fee Events |
Jul 01 2019 | REM: Maintenance Fee Reminder Mailed. |
Dec 16 2019 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Nov 10 2018 | 4 years fee payment window open |
May 10 2019 | 6 months grace period start (w surcharge) |
Nov 10 2019 | patent expiry (for year 4) |
Nov 10 2021 | 2 years to revive unintentionally abandoned end. (for year 4) |
Nov 10 2022 | 8 years fee payment window open |
May 10 2023 | 6 months grace period start (w surcharge) |
Nov 10 2023 | patent expiry (for year 8) |
Nov 10 2025 | 2 years to revive unintentionally abandoned end. (for year 8) |
Nov 10 2026 | 12 years fee payment window open |
May 10 2027 | 6 months grace period start (w surcharge) |
Nov 10 2027 | patent expiry (for year 12) |
Nov 10 2029 | 2 years to revive unintentionally abandoned end. (for year 12) |