IP Library Granted Patent US 8,977,805
Granted Patent B2
US 8,977,805 · App. 13/593,237 · Granted Mar 10, 2015

Host-assisted compaction of memory blocks

Inventors: Ariel Maislos (Bnei Zion, IL); Barak Rotbard (Tel-Aviv, IL)
Assignee: Apple Inc.
G06F12/0246G11C16/10G06F2212/1016G06F2212/7205G06F3/0608G06F3/065G06F11/1008
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,977,805
App. No.
13/593,237
Granted
Mar 10, 2015
Kind
B2
Abstract

In a system that includes a host and a memory controller that is separate from the host and stores data for the host in a non-volatile memory, a method for data storage includes transferring from the memory controller to the host one or more source blocks from the non-volatile memory for compaction. The source blocks are compacted in the host by copying valid data from the source blocks into one or more destination blocks. The destination blocks are transferred from the host to the memory controller, and the destination blocks are stored by the memory controller in the non-volatile memory.

Claims (70)

1. A method for data storage, comprising:

in a system that includes a host and a memory controller that is separate from the host and stores data for the host in a non-volatile memory, allocating a portion of a host memory for use by the memory controller;

sending, by the memory controller, a signal to the host to exchange information;

sending, by the host, a query message to the memory controller responsive to the signal;

sending, by the memory controller, a response to the query message, wherein the response to the query message includes a request to retrieve information items relating to one or more source blocks of the non-volatile memory from the portion of the host memory, and a range of addresses indicating one or more storage locations in the host memory from which to retrieve the information items;

retrieving, by the host, from the portion of the host memory the information items dependent upon the range of addresses;

sending, by the host, the information items to the memory controller;

reading, by the memory controller, the one or more source blocks from the non-volatile memory dependent upon the information items;

transferring from the memory controller to the host the one or more source blocks;

compacting the one or more source blocks in the host by copying valid data from the one or more source blocks into one or more destination blocks;

transferring the one or more destination blocks from the host to the memory controller; and

storing the one or more destination blocks by the memory controller in the non-volatile memory.

2. The method according to claim 1 , wherein transferring the one or more source blocks comprises storing the one or more source blocks in host memory, and wherein compacting the one or more source blocks comprises producing the one or more destination blocks using a processor of the host and storing the destination blocks in the host memory.

3. The method according to claim 1 , wherein copying the valid data comprises performing a first sequence of read operations from the one or more source blocks, and then performing a second sequence of write operations to the one or more destination blocks.

4. The method according to claim 1 , wherein the information items comprise a logical-to-physical address mapping, and wherein storing the destination blocks comprises updating the logical-to-physical address mapping to indicate respective physical storage locations of the destination blocks in the non-volatile memory.

5. The method according to claim 1 , wherein transferring the one or more source blocks comprises sending to the host indications that identify the valid data, and wherein compacting the one or more source blocks comprises reading the valid data from the one or more source blocks based on the indications.

6. The method according to claim 1 , wherein transferring the one or more source blocks comprises sending to the host only the valid data from the source blocks.

7. The method according to claim 1 , wherein transferring the one or more source blocks and the one or more destination blocks comprises sending the one or more source blocks and the one or more destination blocks over a first physical interface that is separate from a second physical interface used for exchanging memory access commands between the memory controller and the host.

8. The method according to claim 1 , wherein transferring the one or more source blocks and the one or more destination blocks comprises sending the one or more source blocks and fetching the one or more destination blocks by the memory controller without execution of any operations by the host relating to transfer of the one or more source blocks and the one or more destination blocks.

9. The method according to claim 1 , wherein transferring the one or more source blocks and the one or more destination blocks comprises sending the one or more source blocks and the one or more destination blocks over a common physical interface that is also used for exchanging memory access commands between the memory controller and the host.

10. The method according to claim 9 , wherein the common physical interface conforms to one of a NAND interface specification, a Micro-SD (μSD) interface specification, an Embedded Multi-Media Card (eMMC) interface specification, a Universal Flash Storage (UFS) interface specification, a Serial Advanced Technology Attachment (SATA) interface specification, a Universal Serial Bus (USB) interface specification and a Peripheral Component Interconnect (PCI) interface.

11. The method according to claim 1 , wherein transferring the one or more source blocks and the one or more destination blocks comprises:

using a hardware signal, sending a request from the memory controller to the host to exchange information with the memory controller; and

responsively to the request, initiating exchange of at least one of the one or more source blocks or at least one of the one or more destination blocks by the host.

12. The method according to claim 1 , wherein transferring the one or more source blocks comprises sending the one or more source blocks in responses sent from the memory controller to the host, and wherein transferring the one or more destination blocks comprises sending the one or more destination blocks in one or more host commands sent from the host to the memory controller.

13. A data storage apparatus, comprising:

a first interface, which is configured to communicate with a non-volatile memory;

a second interface, which is configured to communicate with a host; and

a processor configured to:

send a signal to the host to exchange information;

receive a query message from the host responsive to sending the signal;

send a response to the query message, wherein the response to the query message includes a request to the host to retrieve, from a host memory, information items relating to one or more source blocks stored in the non-volatile memory, and a range of addresses indicating one or more storage locations in the host memory from which to retrieve the information items;

receive the information items from the host;

read the one or more source blocks from the non-volatile memory dependent upon the information items;

transfer to the host the one or more source blocks to the host;

receive from the host one or more destination blocks that were produced in the host by copying valid data from the one or more source blocks into the one or more destination blocks; and

store the one or more destination blocks in the non-volatile memory.

14. The apparatus according to claim 13 , wherein the information items comprise a logical-to-physical address mapping, and wherein the processor is further configured to update the logical-to-physical address mapping to indicate respective physical storage locations of the destination blocks in the non-volatile memory.

15. The apparatus according to claim 13 , wherein the processor is further configured to copy the valid data by performing a first sequence of read operations from the one or more source blocks, and then performing a second sequence of write operations to the one or more destination blocks.

16. The apparatus according to claim 13 , wherein the processor is further configured to send to the host indications that identify the valid data, so as to enable the host to read the valid data from the one or more source blocks based on the indications.

17. The apparatus according to claim 13 , wherein the processor is further configured to send to the host only the valid data from the one or more source blocks.

18. The apparatus according to claim 13 , wherein the processor is further configured to transfer the one or more source blocks and the destination blocks over a first physical interface that is separate from a second physical interface used for exchanging memory access with the host.

19. The apparatus according to claim 13 , wherein the processor is further configured to send the one or more source blocks and fetch the destination blocks without execution of any operations by the host relating to transfer of the one or more source blocks and the one or more destination blocks.

20. The apparatus according to claim 13 , wherein the processor is further configured to transfer the one or more source blocks and the one or more destination blocks over a common physical interface that is also used for exchanging memory access commands between the processor and the host.

21. The apparatus according to claim 20 , wherein the common physical interface conforms to one of a NAND interface specification, a Micro-SD (μSD) interface specification, an Embedded Multi-Media Card (eMMC) interface specification, a Universal Flash Storage (UFS) interface specification, a Serial Advanced Technology Attachment (SATA) interface specification, a Universal Serial Bus (USB) interface specification and a Peripheral Component Interconnect (PCI) interface.

22. The apparatus according to claim 13 , wherein to transfer the source blocks and the destination blocks, the processor is further configured to:

using a hardware signal, send a request to the host to exchange information with the processor; and

responsive to the request, initiate exchange of at least one source block of the one or more source blocks or at least one destination block of the one or more destination blocks by the host.

23. The apparatus according to claim 13 , wherein the processor is further configured to send the one or more source blocks in responses sent to the host, and to receive the one or more destination blocks in one or more host commands sent from the host.

24. A system, comprising:

a non-volatile memory, comprising a plurality of memory blocks;

a host coupled to a host memory; and

a memory controller configured to:

select, for compaction, one or more source blocks from the plurality of memory blocks;

send a signal to the host to exchange information;

receive a query message from the host responsive to sending the signal; and

send a response to the query message to the host, wherein the response to the query message includes a request to the host to retrieve information items relating to the one or more source blocks of the non-volatile memory from the host memory, and a range of addresses indicating one or more storage locations in the host memory from which to retrieve the information items;

wherein the host is configured to:

retrieve the information items from the host memory dependent upon the range of addresses; and

send the information items to the memory controller;

wherein the memory controller is further configured to:

read the one or more source blocks from the non-volatile memory dependent upon the information items; and

transfer the one or more source blocks to the host;

wherein the host is further configured to:

receive the one or more source blocks; and

compact the source blocks by copying valid data from the one or more source blocks into one or more destination blocks; and

wherein the memory controller is further configured to:

receive the one or more destination blocks from the host; and

store the one or more destination blocks in the non-volatile memory.

25. The system according to claim 24 , wherein the host is configured to copy the valid data by performing a first sequence of read operations from the one or more source blocks, and then performing a second sequence of write operations to the one or more destination blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2012
From: MAISLOS, ARIEL; ROTBARD, BARAK
To: APPLE INC.
Reel/Frame 028839/0099 →
Continuity (4)
Continuation In Part 12728287 · Mar 22, 2010
Provisional Application 61534389 · Sep 14, 2011
Provisional Application 61163133 · Mar 25, 2009
Related Publication 20130007352A1 · Jan 3, 2013