发明名称 Virtual memory device (VMD) application/driver for enhanced flash endurance
摘要 A Virtual-Memory Device (VMD) driver and application execute on a host to increase endurance of flash memory attached to a Super Enhanced Endurance Device (SEED) or Solid-State Drive (SSD). Host accesses to flash are intercepted by the VMD driver using upper and lower-level filter drivers and categorized as data types of paging files, temporary files, meta-data, and user data files, using address ranges and file extensions read from meta-data tables. Paging files and temporary files are optionally written to flash. Full-page and partial-page data are grouped into multi-page meta-pages by data type before storage by the SSD. Ramdisks and caches for storing each data type in the host DRAM are managed and flushed to the SSD by the VMD driver. Write dates are stored for pages or blocks for management functions. A spare/swap area in DRAM reduces flash wear. Reference voltages are adjusted when error correction fails.
申请公布号 US9548108(B2) 申请公布日期 2017.01.17
申请号 US201414575943 申请日期 2014.12.18
申请人 Super Talent Technology, Corp. 发明人 Yu Frank;Ma Abraham C.;Chen Shimon;Yan Yi Syu
分类号 G06F12/00;G06F13/00;G06F13/28;G11C11/56;G06F12/02;G11C13/00;G11C16/34;G11C29/00 主分类号 G06F12/00
代理机构 gPatent LLC 代理人 gPatent LLC ;Auvinen Stuart T.
主权项 1. A Super Enhanced Endurance Device (SEED) Solid-State Drive (SSD) Endurance Translation Layer (ETL) method to increase endurance of a flash memory having a specified erase-cycle lifetime comprising: creating an ETL in a dynamic-random-access memory (DRAM) buffer that is controlled by a controller and using the ETL to provide temporary storage to reduce flash wear; creating a spare/swap area in the DRAM buffer; operating a controller to use the spare/swap area in the DRAM buffer to merge valid data in a flash memory with new data to generate combined data; when over-writing a full page or a partial page of an existing block in the flash memory, writing new data to a spare block in the DRAM buffer related to the existing block in the flash memory, and when the spare block is needed by additional new data for a different block in the flash memory, writing a combination of the spare block with the new data and data from the existing block in the flash memory into a swap block in the flash memory and marking a page status as a garbage page for all pages of the existing block in the flash memory; and 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 desired data in the ETL to the flash memory, whereby a spare/swap function is performed by the controller using the DRAM buffer rather than the flash memory; tracking bad pages of the flash memory by performing a routine comprising: when an erased block in the flash memory has been erased, increasing an erase count in an erase count table for the erased block; reading a page status table for the erased block, the page status table having a plurality of page entries, each page entry storing a status for a page in the erased block, the status including an indication of a bad page or of a good page; for each page in the erased block, reading the page entry for the page from the page status table; when the page status from the page status table is bad, processing a next page; when the page status from the page status table is good, counting a number of un-erased bits in the page; when the number of un-erased bits exceeds a first threshold, changing the page status to indicate a bad page in the page entry and increasing a bad page count; when the number of un-erased bits is between a first threshold and a second threshold, and the page status from the page status table indicates that error-correction code (ECC) protection is needed, processing a next page; when the number of un-erased bits is between a first threshold and a second threshold, and the page status from the page status table indicates that ECC protection is not needed, changing the page status in the page entry to indicate that ECC protection is needed by marking its page status as protect page and increasing an ECC protection page count; when the bad page count for the erased block exceeds a third threshold, indicating that the erased block is a bad block and not writing new data to the erased block by marking its page status as bad page, whereby bad erased blocks are identified by counting bad pages within the erased block and allowing bad pages to exist in a good block to prolong flash endurance.
地址 San Jose CA US