×

Virtual memory device (VMD) application/driver for enhanced flash endurance

  • US 9,548,108 B2
  • Filed: 12/18/2014
  • Issued: 01/17/2017
  • Est. Priority Date: 06/18/2008
  • Status: Active Grant
First Claim
Patent Images

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.

View all claims
  • 0 Assignments
Timeline View
Assignment View
    ×
    ×