IP Library Granted Patent US 8,244,959
Granted Patent B2
US 8,244,959 · App. 12/268,383 · Granted Aug 14, 2012

Software adapted wear leveling

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,244,959
App. No.
12/268,383
Granted
Aug 14, 2012
Kind
B2
Abstract

A subset of software objects stored in a first segment of non-volatile memory are identified as requiring frequent write operations or otherwise associated with a high endurance requirement. The subset of software objects are move to a second segment of non-volatile memory with a high endurance capacity, due to the application of wear leveling techniques to the second segment of non-volatile memory. The first and second segments of memory can be located in the same memory device or different memory devices.

Claims (49)

1. A method comprising:

storing a set of software objects in a first segment of a non-volatile memory;

identifying a subset of software objects having an endurance requirement that exceeds an endurance limit of the non-volatile memory;

storing the subset of software objects in a second segment of the non-volatile memory;

determining a first memory block in the second segment of the non-volatile memory is filled, wherein a memory block pointer is pointing to the first memory block, the memory block pointer indicating at which block a next write should occur;

copying valid pages of a third memory block into a second memory block, the second memory block being adjacent to the first memory block, the third memory block being adjacent to the second memory block;

erasing the third memory block; and

incrementing the memory block pointer to point to the second memory block.

2. The method of claim 1 , where the first and second segments are associated with one or more non-volatile memory devices.

3. The method of claim 1 , where the first segment stores code or data and the second segment stores data.

4. The method of claim 1 , where the second segment of non-volatile memory has a higher endurance capacity than an endurance capacity of the first segment of non-volatile memory.

5. The method of claim 1 , where identifying a subset of software objects further comprises:

detecting whether a number of erase operations of a page or block containing a software object approaches an erase operation limit associated with the non-volatile device; and

responsive to the detecting, moving the page or block to the second segment.

6. The method of claim 5 , where detecting comprises:

counting the number of erase operations performed on the page or block; and

storing the number in the page or block.

7. The method of claim 1 , further comprising:

updating a mapping between a logical address of a page or block in the first segment and a new physical address of the page or block in the second segment.

8. The method of claim 7 , comprising:

storing the mapping in the page or block.

9. The method of claim 1 , where an endurance capacity of the second segment is calculated in accordance with a software application endurance requirement.

10. The method of claim 1 , further comprising:

determining if the software object is smaller than a block; and

if so, moving the entire block containing the software object to the second segment.

11. The method of claim 1 , where the subset of software objects is identified upon initialization.

12. The method of claim 1 , wherein the subset of software objects is stored in the second segment of non-volatile memory upon initialization.

13. A method comprising:

storing a set of software objects in a first segment of a non-volatile memory;

identifying a subset of software objects having an endurance requirement that exceeds an endurance limit of the non-volatile memory;

storing the subset of software objects in a second segment of the non-volatile memory;

determining a first memory block in the second segment of the non-volatile memory is filled, wherein a memory block pointer is pointing to the first memory block, the memory block pointer indicating at which block a next write should occur;

copying valid pages of a subsequent memory block into a second memory block, the second memory block being adjacent to the first memory block, the subsequent memory block having more than a threshold number of valid pages that are copied into the subsequent memory block;

erasing the subsequent block; and

incrementing the memory block pointer to point to the second memory block.

14. The method of claim 13 , further comprising:

in response to copying valid pages of a subsequent memory block into a second memory block:

determining the subsequent memory block is located more than two blocks subsequent from the first memory block; and

copying the valid pages of a fourth memory block into the second memory block, wherein the fourth memory block is located two blocks subsequent to the first memory block.

15. The method of claim 13 , where the second segment of non-volatile memory has a higher endurance capacity than an endurance capacity of the first segment of non-volatile memory.

16. The method of claim 13 , where identifying a subset of software objects further comprises:

detecting whether a number of erase operations of a page or block containing a software object approaches an erase operation limit associated with the non-volatile device; and

responsive to the detecting, moving the page or block to the second segment.

17. The method of claim 13 , further comprising:

updating a mapping between a logical address of a page or block in the first segment and a new physical address of the page or block in the second segment.

18. The method of claim 13 , further comprising:

determining if the software object is smaller than a block; and

if so, moving the entire block containing the software object to the second segment.

19. The method of claim 13 , where the subset of software objects is identified upon initialization.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2010
From: ATMEL CORPORATION
To: ATMEL ROUSSET S.A.S.
Reel/Frame 024097/0324 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2008
From: FUSELLA, YVES; GODZINSKI, STEPHANE; PARIS, LAURENT; MARANINCHI, JEAN-PASCAL; CHARBOUILLOT, SAMUEL
To: ATMEL CORPORATION
Reel/Frame 021988/0680 →