IP Library Granted Patent US 8,949,506
Granted Patent B2
US 8,949,506 · App. 12/847,766 · Granted Feb 3, 2015

Initiating wear leveling for a non-volatile memory

Inventors: Daniel J. Post (Campbell, CA); Vadim Khmelnitsky (Foster City, CA)
Assignee: Apple Inc.
G06F12/0246G06F2212/7205G06F2212/7211Y02B60/1225
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,949,506
App. No.
12/847,766
Granted
Feb 3, 2015
Kind
B2
Abstract

Systems and methods are provided for initiating wear leveling on block-aligned boundaries for non-volatile memories (“NVMs”), such as flash memory. In some embodiments, an electronic device including the NVM may suspend the programming of data upon reaching the end of a dynamic block. The electronic device may then perform wear leveling on a low-cycled block of the NVM. The electronic device may thus be configured to copy static data from the low-cycled block to another block of the NVM. After wear leveling has completed, the memory interface can program a second portion of the data to a new dynamic block of the NVM. This way, the electronic device can improve the efficiency of garbage collection. In addition, the electronic device can decrease the programming time for user generated writes, the wearing of the NVM, and overall power consumption.

Claims (15)

1. A method for aligning data in a non-volatile memory, the method comprising:

receiving a write request to program data to the non-volatile memory; and

in response to receiving the write request:

programming a first portion of data to a first block of the non-volatile memory; and

upon reaching the end of the first block, determining whether to suspend the programming of the data in order to perform wear leveling based on at least one factor, wherein the determining whether to suspend the programming further comprises determining a size of the data, and wherein in response to determining that the size of the data is above a pre-determined threshold, suspending the programming of the data on the block-aligned boundary in order to perform wear leveling.

2. The method of claim 1 , wherein the determining whether to suspend the programming further comprises:

receiving a suppression command from a file system; and

programming the second portion of the data to a second block.

3. The method of claim 1 , wherein the determining whether to suspend the programming further comprises determining an input/output (“I/O”) priority of the data.

4. The method of claim 3 , wherein in response to determining that the I/O priority is high, programming a second portion of the data to a second block.

5. The method of claim 3 , wherein in response to determining that the I/O priority is low, suspending the programming of the data on the block-aligned boundary in order to perform wear leveling.

6. The method of claim 1 , wherein in response to determining that the size of the data is below a pre-determined threshold, programming a second portion of the data to a second block.

7. The method of claim 1 , wherein in response to determining that the size of the data is above a pre-determined threshold, suspending the programming of the data on the block-aligned boundary in order to perform wear leveling.

8. The method of claim 1 , wherein the determining whether to suspend the programming further comprises maintaining a ratio of a number of programmed blocks to a number of wear leveling operations.

9. The method of claim 1 , wherein the determining whether to suspend the programming further comprises determining whether the write request is time-critical.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2010
From: POST, DANIEL J.; KHMELNITSKY, VADIM
To: APPLE INC.
Reel/Frame 024878/0962 →
Continuity (1)
Related Publication 20120030409A1 · Feb 2, 2012