IP Library › Granted Patent US 8,914,570
Granted Patent B2
US 8,914,570 · App. 13/464,084 · Granted Dec 16, 2014

Selective write-once-memory encoding in a flash based disk cache memory

Inventors: Ganesh Balakrishnan (Apex, NC); Anil Krishna (Cary, NC)
Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,914,570
App. No.
13/464,084
Granted
Dec 16, 2014
Kind
B2
Abstract

In a method for storing data in a flash memory array, the flash memory array includes a plurality of physical pages. The method includes receiving a request to perform a data access operation through a communication bus. The request includes data and a logical page address. The method further includes allocating one or more physical pages of the flash memory array to perform the data access operation. The method further includes, based on a historical usage data of the flash memory array, selectively encoding the data contained in the logical page into the one or more physical pages.

Claims (31)

1. A method for storing data in a flash memory array having a plurality of physical pages, the method comprising:

using a computer, receiving a request to perform a data access operation through a communication bus, the request comprising data and a logical page address;

allocating one or more physical pages of the flash memory array to perform the data access operation; and

based on a historical usage data of the flash memory array, selectively encoding the data contained in the logical page into the one or more physical pages, wherein selectively encoding the data contained in the logical page into the one or more physical pages comprises:

determining a probability of a subsequent data access request updating the data contained in the logical page;

determining whether the probability exceeds a predetermined threshold and;

in response to determining that the probability exceeds the predetermined threshold, encoding the data contained in the logical page into the one or more physical pages.

2. The method of claim 1 , wherein the selectively encoding the data comprises selectively encoding the data according to a Write Once Memory (WOM) code.

3. The method of claim 2 , wherein the WOM code enables storing N-1 bits of the data in an N-bit code value.

4. The method of claim 1 , wherein the historical usage data of the flash memory array comprises a plurality of counters, wherein each counter of the plurality of counters corresponds to a logical page stored in the flash memory array.

5. The method of claim 4 , wherein each counter of the plurality of counters comprises a hardware counter configured to count a number of write operations associated with the corresponding logical page.

6. The method of claim 4 , wherein each counter of the plurality of counters comprises a software counter configured to count a number of write operations associated with the corresponding logical page.

7. The method of claim 1 , further comprising:

dividing a plurality of logical pages stored within the flash memory array into two or more groups based on a predetermined criteria;

in response to the request, assigning the logical page into a group of the two or more groups based on the predetermined criteria; and

updating the historical usage data corresponding to the assigned group.

8. The method of claim 7 , wherein dividing the plurality of the logical pages further comprises generating a group identifier for each of the two or more groups.

9. The method of claim 7 , wherein the predetermined criteria includes data access pattern shared by all logical pages in a corresponding group.

10. The method of claim 7 , wherein the predetermined criteria comprises a process identification (ID) value.

11. The method of claim 1 , wherein the historical usage data is stored in a lookup table and wherein the lookup table contains one or more entries associating the logical page with the one or more physical pages.

12. The method of claim 7 , wherein the historical usage data comprises a histogram data structure having a plurality of bins and wherein the histogram data structure corresponds to a group of the two or more groups.

13. The method of claim 12 , wherein the histogram data structure comprises a plurality of frequency indicators, each of the plurality of frequency indicators indicating an occurrence frequency of a specific number of write operations accessing a logical page within the corresponding group.

14. The method of claim 12 , wherein the plurality of bins is less than or equal to a predetermined maximum number of bins.

15. The method of claim 1 , wherein the selectively encoding the data includes encoding the data in response to a read request.

16. A computer program product for storing data in a flash memory array having a plurality of physical pages, the computer program product comprising one or more non-transitory computer-readable tangible storage devices and program instructions stored on at least one of the one or more non-transitory computer-readable tangible storage devices, the program instructions comprising:

program instructions executable by a computer to receive a request to perform a data access operation through a communication bus, the request comprising data and a logical page address;

program instructions to allocate one or more physical pages of the flash memory array to perform the data access operation; and

program instructions to, based on a historical usage data of the flash memory array, selectively encode the data contained in the logical page into the one or more physical pages, wherein selectively encoding the data contained in the logical page into the one or more physical pages comprises:

program instructions to determine corresponding to a probability of a subsequent data access request updating the data contained in the logical page;

program instructions to determine whether the probability exceeds a predetermined threshold; and

in response to determining that the probability exceeds the predetermined threshold program instructions to encode, the data contained in the logical page into the one or more physical pages.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2012
From: BALAKRISHNAN, GANESH; KRISHNA, ANIL
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 028157/0164 →
Continuity (1)
Related Publication 20130297853A1 · Nov 7, 2013