Patent ID: 8782370

Claim:
A method for data storage in a memory, wherein the memory includes multiple groups of memory cells and is configured to concurrently store first data using a first storage configuration having a first access time, and second data using a second storage configuration having a second access time, longer than the first access time, such that each memory cell in each of the groups stores at least one bit of the first data and one or more bits of the second data, the method comprising: accepting data items for storage in the memory; classifying the accepted data items into a fast-access class and a normal-access class, wherein frequently read data items are classified as fast-access class and less frequently read data items are classified as normal-access class; storing the data items classified as fast-access class into blocks of the memory using the first storage configuration; storing the data items classified as normal-access class into blocks of the memory using the second storage configuration; tracking a frequency of read accesses of each of the stored data items; selecting two or more candidate blocks of the memory to serve as source blocks for a compaction process dependent upon the tracked frequencies of read accesses of stored data items in each of the candidate blocks; copying data items in the source blocks with tracked frequencies above a pre-determined threshold to target blocks using the first storage configuration; copying data items in the source blocks with tracked frequencies below a pre-determined threshold to the target blocks using the second storage configuration.