Virtual Memory Device (VMD) Application/Driver with Dual-Level Interception for Data-Type Splitting, Meta-Page Grouping, and Diversion of Temp Files to Ramdisks for Enhanced Flash Endurance
First Claim
1. A Virtual-Memory Device (VMD) driver for executing on a host comprising:
- a file type identifier for generating a data type for a host write received by the VMD driver;
a data split manager for sorting host write data based on the data type generated by the file type identifier;
a data write cache for storing host write data having a user data type;
a meta-data cache for storing host write data having a meta-data data type;
a paging cache for storing host write data having a paging file data type;
a temp cache for storing host write data having a temp data type;
a user grouping engine for grouping user data stored in the data write cache into user meta-pages;
a meta-data grouping engine for grouping meta-data data stored in the data write cache into meta-data meta-pages; and
an output buffer for sending grouped meta-pages and data type information to a flash drive system for storage.
1 Assignment
0 Petitions
Accused Products
Abstract
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.
196 Citations
24 Claims
-
1. A Virtual-Memory Device (VMD) driver for executing on a host comprising:
-
a file type identifier for generating a data type for a host write received by the VMD driver; a data split manager for sorting host write data based on the data type generated by the file type identifier; a data write cache for storing host write data having a user data type; a meta-data cache for storing host write data having a meta-data data type; a paging cache for storing host write data having a paging file data type; a temp cache for storing host write data having a temp data type; a user grouping engine for grouping user data stored in the data write cache into user meta-pages; a meta-data grouping engine for grouping meta-data data stored in the data write cache into meta-data meta-pages; and an output buffer for sending grouped meta-pages and data type information to a flash drive system for storage. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A Virtual-Memory Device (VMD) driver for executing on a host comprising:
-
a data type assignor for generating a data type for a host write received by the VMD driver; a task priority assignor for assigning a priority to tasks including writing of host write data by data type, wherein priority is a function of the data type from the data type assignor; a target assignor for sorting host write data based on the data type generated by the data type assignor; a data write cache for storing host write data having a user data type; a ramdisk driver for storing host write data having a temp data type to a ramdisk stored in a host dynamic-random-access memory (DRAM); a data read cache for storing data for reading by the host; a grouping engine for grouping data stored in the data write cache into meta-pages; an un-grouping engine for un-grouping data in stored in meta-pages into ungrouped data for storage in the data read cache; wherein meta-pages are sent from the grouping engine to a volume manager for transfer to a flash memory, and meta-pages stored in the flash memory are received by the un-grouping engine; a power monitor for detecting a power failure; a flush manager for flushing data stored in the host DRAM to a SSD DRAM and then to a flash memory of a flash drive system when power is lost; a resume manager reloader for fetching flushed data from flash memory of the flash drive system and then to the host DRAM when power is restored. - View Dependent Claims (7, 8)
-
-
9. A method for refreshing a flash memory comprising:
-
obtaining a current date; for a current block in a list of blocks in the flash memory; (a) reading a block status table for an erase count of the current block and for a write date of the current block that indicates when the current block was last written; calculating a first time delay as a difference of the write date and the current date; comparing the first time delay to a retention time; when the first time delay exceeds the retention time, moving all valid pages in the current block to empty pages in a spare block in a dynamic-random-access memory (DRAM); when the spare block in the DRAM is full, moving data from the spare block in DRAM to a spare block in the flash memory; erasing the current block; selecting another block in the list of blocks of flash memory as the current block and repeating from (a) until all blocks in the list of blocks have been processed, whereby flash blocks are refreshed.
-
-
10. A method for refreshing a flash memory comprising:
-
obtaining a current date; for a current page in a current block in a list of blocks in the flash memory; (a) reading a block status table for an erase count of the current block; (b) reading a page status table for a write date of the current page that indicates when the current page was last written; calculating a first time delay as a difference of the write date and the current date; comparing the first time delay to a retention time; when the first time delay exceeds the retention time, moving the current page in the current block to an empty page in a spare block in a dynamic-random-access memory (DRAM), and marking the current page as garbage page; when the spare block in the DRAM is full, moving data from the spare block in DRAM to a spare block in the flash memory; selecting another page in the current block and repeating from (b) until all pages in the current block have been processed; selecting another block in the list of blocks of flash memory as the current block and repeating from (a) until all blocks in the list of blocks have been processed, whereby flash pages are refreshed. - View Dependent Claims (11)
-
-
12. A Super Enhanced Endurance Device (SEED) Solid-State Drive (SSD) Endurance Translation Layer (ETL) method to increase endurance of a flash memory having a low 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.
-
-
13. A Super Enhanced Endurance Device (SEED) comprising:
-
a host interface for receiving host reads and host writes from a host; a SEED dynamic-random-access memory (DRAM) buffer for storing data; 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 SEED Solid-State Drive (SSD) 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 flash interface for erasing blocks and writing pages in the flash memory, wherein a block is a multiple of pages in size; a flash memory for storing grouped meta pages from the SSD DRAM buffer; 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. - View Dependent Claims (14, 15, 16)
-
-
17. A Virtual-Memory Device (VMD) driver for executing on a host comprising:
-
a host Endurance Translation Layer (ETL) executing on the host, the host ETL for increasing endurance of a flash memory having a low specified erase-cycle lifetime; a host dynamic-random-access memory (DRAM) buffer on the host, the host DRAM buffer controlled by a host controller that uses the host ETL to provide temporary storage on the host to reduce flash wear; a Super Enhanced Endurance Device (SEED) on a Solid-State Drive (SSD) on a SSD, the SEED for increasing endurance of the flash memory that has the low specified erase-cycle lifetime; and a SEED Endurance Translation Layer (ETL) in a SEED DRAM buffer that is controlled by a SEED controller, the SEED ETL providing temporary storage to reduce flash wear. - View Dependent Claims (18, 19, 20)
-
-
21. A Virtual-Memory Device (VMD) driver for executing on a host comprising:
-
an encryption engine, coupled to receive intercepted high-level host writes, for generating encrypted data; a compression engine, coupled to receive intercepted high-level host writes, for generating compressed data; a data write cache for storing host write data; a data read cache for storing data for reading by the host; a grouping engine for grouping data stored in the data write cache into meta-pages; an un-grouping engine for un-grouping data in stored in meta-pages into ungrouped data for storage in the data read cache; wherein meta-pages are sent from the grouping engine to a volume manager for transfer to a flash memory, and meta-pages stored in the flash memory are received by the un-grouping engine; a power monitor for detecting a power failure; a host dynamic-random-access memory (DRAM) buffer for storing a host Endurance Translation Layer (ETL); a flush manager for flushing data stored in the host ETL of the host DRAM buffer to a Solid-State Drive (SSD) ETL DRAM and then to a flash memory of a Solid-State Drive (SSD) system when power is lost; a resume manager reloader for fetching flushed data from the flash memory of the SSD system and then to the host ETL of the host DRAM buffer when power is restored. - View Dependent Claims (22)
-
-
23. An endurance flash file system comprising:
-
an upper-level file filter driver, for executing on a host, for intercepting high-level host writes to a flash drive; an encryption/decryption engine, coupled to receive high-level host writes intercepted by the upper-level file filter driver, for generating encrypted data and for decrypting encrypted data; a compression/decompression engine, coupled to receive high-level host writes from the upper-level file filter driver, for generating compressed data and for decompressing compressed data; wherein compressed data and encrypted data are sent to a File System Driver (FSD) executing on the host; a lower-level file filter driver, for executing on the host, for intercepting lower-level file system host writes to a flash drive system; a data write cache for storing host write data; a data read cache for storing data for reading by the host; a grouping engine for grouping data stored in the data write cache into meta-pages; an un-grouping engine for un-grouping data in stored in meta-pages into ungrouped data for storage in the data read cache; wherein meta-pages are sent from the grouping engine to a volume manager for transfer to a flash memory, and meta-pages stored in the flash memory are received by the un-grouping engine; a file priority tag sorter for generating a data type for a host write received; a task policy assignor for assigning a priority to tasks including writing of host write data by the data type, wherein priority is a function of the data type from the file priority tag sorter; a performance adjustor for adjusting priority of tasks; a target assignor for sorting host write data based on the data type generated by the file priority tag sorter; a transaction system for logging events indicating start and completion of data writes to the flash memory; a flush manager for flushing data stored in a host DRAM to a SSD DRAM and then to a flash memory of a flash drive system when power is lost; a resume manager reloader for fetching flushed data from the flash memory of the flash drive system and then to the host DRAM when power is restored; and a disk miniport driver for managing vendor-specific functions of the flash drive system.
-
-
24. A Super Enhanced Endurance Device (SEED) 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 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 enhanced flash portion of a flash memory configured for use as a strong page; a program/erase manager for controlling a page write/block erase time of the flash memory to increase endurance and decrease retention; a refresh manager for controlling a refresh time for retention in the enhanced flash.
-
Specification