IP Library Granted Patent US 8,856,475
Granted Patent B1
US 8,856,475 · App. 13/171,467 · Granted Oct 7, 2014

Efficient selection of memory blocks for compaction

Inventors: Avraham Meir (Rishon Lezion, IL); Michael Shachar (Caesarea, IL)
Assignee: Apple Inc.
G06F12/0253G06F12/0261
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,856,475
App. No.
13/171,467
Granted
Oct 7, 2014
Kind
B1
Abstract

A method for storing data in a memory that includes multiple memory blocks, includes running a compaction process that selects one or more memory blocks containing both valid data and invalid data, copies the valid data from the selected memory blocks to other storage locations, and then erases the selected memory blocks. At least one memory block, which meets a criterion predictive of imminent invalidation of at least some of the data in the block, is identified. Selection of the identified memory block in the compaction process is inhibited.

Claims (30)

1. A method for storing data in a memory that includes multiple memory blocks, the method comprising:

selecting one or more memory blocks for compaction, wherein each one of the one or more memory blocks includes both valid data and invalid data;

determining a number of accesses of each logical address for each memory block of the one or more memory blocks;

determining one or more frequently-accessed logical addresses of each memory block of the one or more memory blocks dependent upon the number of accesses of each logical address;

identifying at least one of the one or more memory blocks responsive to a determination that a ratio of a number of the one or more frequently-accessed logical addresses of the at least one of one or more memory blocks and a total number of valid logical addresses in the at least one of the one or more memory blocks is greater than a predetermined threshold; and

compacting the selected one or more memory blocks excluding the identified at least one of the one or more memory blocks.

2. The method according to claim 1 , wherein the at least one memory block comprises data currently being invalidated.

3. The method according to claim 1 , wherein the at least one of the one or more memory blocks comprises data wherein invalidation occurred more recently than a predefined time out period.

4. The method according to claim 1 , wherein the at least one of the one or more memory blocks comprises multiple addresses that have been invalidated sequentially.

5. The method according to claim 1 , wherein the at least one of the one or more memory blocks comprises an amount of frequently-accessed data greater than a predefined amount.

6. A data storage apparatus, comprising:

an interface for communicating with a memory that includes multiple memory blocks; and

a processor, which is configured to:

select one or more memory blocks for compaction, wherein each one of the one or more memory blocks includes both valid data and invalid data;

determine a number of accesses of each logical address for each memory block of the one or more memory blocks;

determine one or more frequently-accessed logical addresses of each memory block of the one or more memory blocks dependent upon the number of accesses of each logical address;

identify at least one of the one or more memory blocks responsive to a determination that a ratio of a number of the one or more frequently-accessed logical addresses of the at least one of the one or more memory blocks and a total number of valid logical addresses in the at least one of the one or more memory blocks is greater than a predetermined threshold; and

compact the selected one or more memory blocks excluding the identified at least one of the one or more memory blocks.

7. The apparatus according to claim 6 , wherein the at least one of the one or more memory blocks includes data which is currently being invalidated.

8. The apparatus according to claim 6 , wherein the at least one of the one or more memory blocks includes data wherein invalidation occurred more recently than a predefined time out period.

9. The apparatus according to claim 6 , wherein the at least one of the one or more memory blocks includes multiple addresses that have been invalidated sequentially.

10. The apparatus according to claim 6 , wherein the at least one of the one or more memory blocks includes an amount of frequently-accessed data greater than a predefined amount.

11. A data storage apparatus, comprising:

a memory comprising multiple memory blocks; and

a processor, which is configured to:

select one or more memory blocks for compaction, wherein each one of the one or more memory blocks includes both valid data and invalid data;

determine a number of accesses of each logical address for each memory block of the one or more memory blocks;

determine one or more frequently-accessed logical addresses of each memory block of the one or more memory blocks dependent upon the number of accesses of each logical address;

identify at least one of the one or more memory blocks responsive to a determination that a ratio of a number of the one or more frequently-accessed logical addresses of the at least one of the one or more memory blocks and a total number of valid logical addresses in the at least one block of the one or more memory blocks is greater than a predetermined threshold; and

compact each memory block of the selected one or more memory blocks excluding the identified at least one of the one or more memory blocks.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2012
From: ANOBIT TECHNOLOGIES LTD.
To: APPLE INC.
Reel/Frame 028399/0733 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 5, 2011
From: MEIR, AVRAHAM; SHACHAR, MICHAEL
To: ANOBIT TECHNOLOGIES LTD.
Reel/Frame 026540/0093 →
Continuity (1)
Provisional Application 61369719 · Aug 1, 2010