IP Library Granted Patent US 8,447,919
Granted Patent B1
US 8,447,919 · App. 12/806,125 · Granted May 21, 2013

Measure of health for writing to locations in flash

Inventors: Rajiv Agarwal (Palo Alto, CA); Marcus Marrow (Santa Clara, CA)
Assignee: SK hynix memory solutions inc.
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,447,919
App. No.
12/806,125
Granted
May 21, 2013
Kind
B1
Abstract

Flash memory is written to by determining a measure of health for each of a plurality of locations in flash memory. At least one of the plurality of locations in flash memory is selected based at least in part on the determined measures of health and the selected location(s) in flash memory is/are written to.

Claims (57)

1. A method for writing to flash memory, comprising:

using a processor to determine a measure of health for each of a plurality of locations in flash memory, including by: using the processor to obtain, for each of a plurality of pages in flash memory, a first number of write pulses required to write to each page;

using the processor to select at least one of the plurality of locations in flash memory based at least in part on the determined measures of health, including by: using the processor to select a page based at least in part on the first number of write pulses required to write to each page; and

writing to the selected location(s) in flash memory, including by:

counting a second number of write pulses required to write to the selected page; and

storing the second number of write pulses.

2. The method of claim 1 further comprising:

determining whether each of the plurality of locations has been written to at least once, wherein using a processor to determine and using the processor to select are performed in the event each of the plurality of locations have been written to at least once; and

selecting at least one of those locations in flash memory that have not been written to at least once in the event each of the plurality of locations have not been to at least once.

3. The method of claim 1 , wherein using the processor to select the page based at least in part on the first number of write pulses required to write to each page includes using the processor to select a page having the highest number of write pulses.

4. The method of claim 1 , wherein writing further includes:

determining whether a highest possible voltage has been written to the selected page at least once, wherein storing the second number of write pulses is performed in the event the highest possible voltage has been written to the selected page at least once; and

discarding the second number of write pulses in the event the highest possible voltage has not been written to the selected page at least once.

5. The method of claim 1 , wherein:

using a processor to determine includes using the processor to obtain, for each of a plurality of pages in flash memory, a number of erase pulses required to erase each page; and

using the processor to select includes using the processor to select a page based at least in part on the number of erase pulses required to erase each page.

6. A method for writing to flash memory, comprising:

using a processor to determine a measure of health for each of a plurality of locations in flash memory, including by: using the processor to obtain, for each of a plurality of pages in flash memory, a number of write pulses required to write to each page, wherein using the processor to obtain the number of write pulses includes using the processor to query a sorted data structure to return the page having the highest number of write pulses;

using the processor to select at least one of the plurality of locations in flash memory based at least in part on the determined measures of health, including by: using the processor to select a page based at least in part on the number of write pulses required to write to each page; and

writing to the selected location(s) in flash memory.

7. The method of claim 6 , wherein the sorted data structure includes at least one of the following: a tree, a list, or a lookup table.

8. A system for writing to flash memory, comprising:

a processor; and

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:

determine a measure of health for each of a plurality of locations in flash memory, including by: obtaining, for each of a plurality of pages in flash memory, a number of write pulses required to write to each page, by querying a sorted data structure to return the page having the highest number of write pulses;

select at least one of the plurality of locations in flash memory based at least in part on the determined measures of health, including by: selecting a page based at least in part on the number of write pulses required to write to each page; and

write to the selected location(s) in flash memory.

9. The system of claim 8 , wherein the memory is further configured to provide the processor with instructions which when executed cause the processor to:

determine whether each of the plurality of locations has been written to at least once, wherein using a processor to determine and using the processor to select are performed in the event each of the plurality of locations have been written to at least once; and

select at least one of those locations in flash memory that have not been written to at least once in the event each of the plurality of locations have not been to at least once.

10. The system of claim 8 , wherein the instructions for selecting the page based at least in part on the number of write pulses required to write to each page include instructions for selecting a page having the highest number of write pulses.

11. A system for writing to flash memory, comprising:

a processor; and

a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to:

determine a measure of health for each of a plurality of locations in flash memory, including by: obtaining, for each of a plurality of pages in flash memory, a first number of write pulses required to write to each page;

select at least one of the plurality of locations in flash memory based at least in part on the determined measures of health, including by: selecting a page based at least in part on the first number of write pulses required to write to each page; and

write to the selected location(s) in flash memory, including by:

counting a second number of write pulses required to write to the selected page; and

storing the second number of write pulses.

12. The system of claim 11 , wherein the instructions for writing further include instructions for:

determining whether a highest possible voltage has been written to the selected page at least once, wherein storing the second number of write pulses is performed in the event the highest possible voltage has been written to the selected page at least once; and

discarding the second number of write pulses in the event the highest possible voltage has not been written to the selected page at least once.

13. A computer program product for writing to flash memory, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

determining a measure of health for each of a plurality of locations in flash memory, including by: obtaining, for each of a plurality of pages in flash memory, a first number of write pulses required to write to each page;

selecting at least one of the plurality of locations in flash memory based at least in part on the determined measures of health, including by: selecting a page based at least in part on the first number of write pulses required to write to each page; and

writing to the selected location(s) in flash memory, including by:

counting a second number of write pulses required to write to the selected page; and

storing the second number of write pulses.

14. The computer program product of claim 13 , wherein the computer instructions for obtaining the first number of write pulses include computer instructions for querying a sorted data structure to return the page having the highest number of write pulses.

15. The computer program product of claim 14 , wherein the sorted data structure includes at least one of the following: a tree, a list, or a lookup table.

16. The computer program product of claim 13 , wherein:

the computer instructions for determining include computer instructions for obtaining, for each of a plurality of pages in flash memory, a number of erase pulses required to erase each page; and

the computer instructions for selecting include computer instructions for selecting a page based at least in part on the number of erase pulses required to erase each page.

17. A computer program product for writing to flash memory, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

determining a measure of health for each of a plurality of locations in flash memory, including by: obtaining, for each of a plurality of pages in flash memory, a number of write pulses required to write to each page, including by: querying a sorted data structure to return the page having the highest number of write pulses;

selecting at least one of the plurality of locations in flash memory based at least in part on the determined measures of health, including by: selecting a page based at least in part on the number of write pulses required to write to each page; and

writing to the selected location(s) in flash memory.

Assignments (2)
CHANGE OF NAME Recorded Feb 22, 2013
From: LINK_A_MEDIA DEVICES CORPORATION
To: SK HYNIX MEMORY SOLUTIONS INC.
Reel/Frame 029857/0281 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2010
From: AGARWAL, RAJIV; MARROW, MARCUS
To: LINK_A_MEDIA DEVICES CORPORATION
Reel/Frame 024998/0903 →
Continuity (1)
Provisional Application 61235437 · Aug 20, 2009