Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
First Claim
1. A super-endurance flash drive comprising:
- a host interface for receiving host reads and host writes from a host;
a dynamic-random-access memory (DRAM) buffer for storing data;
a flash memory for storing data that is retained when power is lost, the flash memory being block-erasable and page-writeable;
a controller for controlling access to the flash memory and to the DRAM buffer in response to host reads and host writes received by the host interface, the controller writing host data to the DRAM buffer;
an Endurance Translation Layer (ETL) implemented in the DRAM buffer and controlled by the controller that uses the ETL to provide temporary storage to reduce flash wear;
a data write cache stored in the DRAM buffer and managed by the controller;
a Redundant Array of Individual Disks (RAID) structure of data distribution in the DRAM buffer for writing new data across several channels of the flash memory, the RAID structure managed by the controller; and
a backup power supply for powering the DRAM buffer and the flash memory and the controller when power is lost, the backup power supply having a sufficient capacity for the controller to copy data in the ETL to the flash memory according to a policy;
wherein the ETL implemented in the DRAM buffer comprises;
a page mapping table stored in the DRAM buffer and accessed by the controller, the page mapping table having entries selected by a logical address from the host;
a plurality of sub-sector mapping tables stored in the DRAM buffer and accessed by the controller, each sub-sector mapping table comprising a plurality of sector entries selected by a sector number within a page;
wherein a sector entry comprises;
a partial-sector bit that indicates when the entry is a full-sector entry for a full sector of data for the host and when the entry is a partial-sector entry for a partial sector of data from the host;
a page pointer that points to a page location in the DRAM buffer that stores the full sector of data or the partial sector of data;
when the entry is a full-sector entry, a sector identifier that identifies a sector within the page location;
when the entry is a partial-sector entry, a byte offset that identifies a starting byte location within the page location, and a length that indicates a length of the partial sector of data;
wherein full-sector entries and partial-sector entries are stored in the plurality of sub-sector mapping tables;
a data in buffer stored in the DRAM buffer and accessed by the controller; and
wherein each page of the stripe-ready unit includes full page data or grouped partial page data;
wherein the controller allows host write data to be stored in the data write cache, then a stripe-ready unit be written to the flash memory according to a policy.
2 Assignments
0 Petitions
Accused Products
Abstract
A flash drive has increased endurance and longevity by reducing writes to flash. An Endurance Translation Layer (ETL) is created in a DRAM buffer and provides temporary storage to reduce flash wear. A Smart Storage Switch (SSS) controller assigns data-type bits when categorizing host accesses as paging files used by memory management, temporary files, File Allocation Table (FAT) and File Descriptor Block (FDB) entries, and user data files, using address ranges and file extensions read from FAT. Paging files and temporary files are never written to flash. Partial-page data is packed and sector mapped by sub-sector mapping tables that are pointed to by a unified mapping table that stores the data-type bits and pointers to data or tables in DRAM. Partial sectors are packed together to reduce DRAM usage and flash wear. A spare/swap area in DRAM reduces flash wear. Reference voltages are adjusted when error correction fails.
-
Citations
15 Claims
-
1. A super-endurance flash drive comprising:
-
a host interface for receiving host reads and host writes from a host; a dynamic-random-access memory (DRAM) buffer for storing data; a flash memory for storing data that is retained when power is lost, the flash memory being block-erasable and page-writeable; a controller for controlling access to the flash memory and to the DRAM buffer in response to host reads and host writes received by the host interface, the controller writing host data to the DRAM buffer; an Endurance Translation Layer (ETL) implemented in the DRAM buffer and controlled by the controller that uses the ETL to provide temporary storage to reduce flash wear; a data write cache stored in the DRAM buffer and managed by the controller; a Redundant Array of Individual Disks (RAID) structure of data distribution in the DRAM buffer for writing new data across several channels of the flash memory, the RAID structure managed by the controller; and a backup power supply for powering the DRAM buffer and the flash memory and the controller when power is lost, the backup power supply having a sufficient capacity for the controller to copy data in the ETL to the flash memory according to a policy; wherein the ETL implemented in the DRAM buffer comprises; a page mapping table stored in the DRAM buffer and accessed by the controller, the page mapping table having entries selected by a logical address from the host; a plurality of sub-sector mapping tables stored in the DRAM buffer and accessed by the controller, each sub-sector mapping table comprising a plurality of sector entries selected by a sector number within a page; wherein a sector entry comprises; a partial-sector bit that indicates when the entry is a full-sector entry for a full sector of data for the host and when the entry is a partial-sector entry for a partial sector of data from the host; a page pointer that points to a page location in the DRAM buffer that stores the full sector of data or the partial sector of data; when the entry is a full-sector entry, a sector identifier that identifies a sector within the page location; when the entry is a partial-sector entry, a byte offset that identifies a starting byte location within the page location, and a length that indicates a length of the partial sector of data; wherein full-sector entries and partial-sector entries are stored in the plurality of sub-sector mapping tables; a data in buffer stored in the DRAM buffer and accessed by the controller; and wherein each page of the stripe-ready unit includes full page data or grouped partial page data; wherein the controller allows host write data to be stored in the data write cache, then a stripe-ready unit be written to the flash memory according to a policy. - View Dependent Claims (2)
-
-
3. A super-endurance flash drive comprising:
-
a host interface for receiving host reads and host writes from a host; a dynamic-random-access memory (DRAM) buffer for storing data; a flash memory for storing data that is retained when power is lost, the flash memory being block-erasable and page-writeable; a controller for controlling access to the flash memory and to the DRAM buffer in response to host reads and host writes received by the host interface, the controller writing host data to the DRAM buffer; an Endurance Translation Layer (ETL) implemented in the DRAM buffer and controlled by the controller that uses the ETL to provide temporary storage to reduce flash wear; a data write cache stored in the DRAM buffer and managed by the controller; a Redundant Array of Individual Disks (RAID) structure of data distribution in the DRAM buffer for writing new data across several channels of the flash memory, the RAID structure managed by the controller; and a backup power supply for powering the DRAM buffer and the flash memory and the controller when power is lost, the backup power supply having a sufficient capacity for the controller to copy data in the ETL to the flash memory according to a policy; wherein the ETL implemented in the DRAM buffer further comprises; a bad block manager, activated when a block in the flash memory is erased to generate an erased block; count means for counting a number of un-erased bits in a page in the erased block; when the number of un-erased bits exceeds a lower threshold and does not exceed a higher threshold, marking the page as a protected page and increasing a number of error-correction code (ECC) bits stored for the protected page; page marking means, activated when the number of un-erased bits exceeds the higher threshold, for marking the page as a bad page and not storing host data in the bad page; repeat means for repeating the count means and the page marking means for all pages in the erased block; bad page count means for counting a number of bad pages in the erased block; block marking means, activated when the erased block has a number of bad pages that exceeds a block threshold, for marking the erased block as a bad block and not storing host data in any pages in the bad block. - View Dependent Claims (4, 5)
-
-
6. An Endurance Translation Layer (ETL) method to increase endurance of a flash memory that has a low specified erase-cycle lifetime comprising:
-
controlling access to the flash memory and to a dynamic-random-access memory (DRAM) buffer in response to host reads and host writes received by a host interface, using a controller to write host data to the DRAM buffer; creating an ETL in the DRAM buffer that is controlled by the controller and using the ETL to provide temporary storage to reduce flash wear; distributing data in the DRAM buffer to form a Redundant Array of Individual Disks (RAID) structure of data distribution in the DRAM buffer for writing new data across several channels of the flash memory, the RAID structure managed by the controller; using a data split manager to identify a data-type to be a non-temporary data-type or a temporary data type; using a backup power supply to power the DRAM buffer and the flash memory and the controller when power is lost, the backup power supply having a sufficient capacity for the controller to copy non-temporary data in the ETL to the flash memory according to a policy; using the controller to manage a data write cache stored in the DRAM buffer; and writing a full page of data stored in the ETL in the DRAM buffer that is pointed to by the pointer from the matching entry; when the data from a host is for a partial page in the flash memory; creating or locating a sub-sector mapping table that is pointed to by the pointer in the matching entry in the mapping table; for each full sector of data from the host, updating an entry in the sub-sector mapping table to indicate a full-sector type and a pointer to the full sector of data that is stored into the DRAM buffer; for a partial sector of data from the host, updating an entry in the sub-sector mapping table to indicate a partial-sector type and a pointer to a grouping page that stores partial sectors, and a length and a starting byte offset of the partial sector, whereby the sub-sector mapping table has entries for full sectors and for the partial sector; wherein each page of the stripe-ready unit includes full page data or grouped partial page data; wherein the controller allows host write data to be stored in the data write cache, then the stripe-ready unit is written to the flash memory according to a policy. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15)
-
Specification