IP Library Granted Patent US 8,745,328
Granted Patent B2
US 8,745,328 · App. 13/305,511 · Granted Jun 3, 2014

Updating error correction codes for data blocks

Inventors: Michael J. Cornwell (San Jose, CA); Christopher P. Dudte (San Jose, CA); Nir Jacob Wakrat (Los Altos, CA)
Assignee: Apple Inc.
G06F11/0778G06F3/0679
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,745,328
App. No.
13/305,511
Granted
Jun 3, 2014
Kind
B2
Abstract

Systems and processes may be used to retrieve metadata from a nonvolatile memory of a portable device and transmit the retrieved metadata to an external host. Metadata may be analyzed using the external host and/or at least a portion of the metadata may be modified based on the analysis. Modified metadata may be transmitted from the external host to a memory controller of the host.

Claims (43)

1. A method for managing memory comprising:

receiving, by an external host, metadata for one or more data blocks in a nonvolatile memory of a portable device, the metadata identifying an initial error correction code (ECC) algorithm for each of the data blocks;

determining, by the external host, a bad data block in the nonvolatile memory of the portable device based on the received metadata, wherein the bad data block includes one or more errors, and wherein the bad data block comprises a first bad data block;

modifying the received metadata to identify, for the bad data block, a subsequent ECC algorithm having a strength greater than a strength of the initial ECC algorithm;

transmitting the modified metadata to the portable device, wherein the portable device is configured to, apply execute the subsequent ECC algorithm to correct the one or more errors in the bad data block; and

determining a second bad data block based on an associated time stamp or erase count exceeding a specified threshold, wherein the metadata identifies the associated time stamp or the erase count.

2. The method of claim 1 , further comprising:

detecting, by the external host, a temporary connection with the portable device; and

in response to the detecting, transmitting, through the temporary connection, a request for the metadata for the data blocks in the nonvolatile memory of the portable device.

3. The method of claim 2 , wherein the temporary connection includes a Universal Serial Bus (USB) connection or a FireWire connection.

4. The method of claim 1 , further comprising transmitting at least one of a write command or an erase command to the nonvolatile memory to verify the bad data block.

5. The method of claim 1 , further comprising:

transmitting a command signal to rewrite data associated with a time stamp; and

updating the time stamp in the received metadata.

6. The method of claim 1 , wherein the nonvolatile memory comprises flash memory.

7. A computer program product encoded on a tangible, non-transitory storage medium, the product comprising computer readable instructions for causing one or more processors to perform operations comprising:

receiving, by an external host, metadata for one or more data blocks in a nonvolatile memory of a portable device, the metadata identifying an initial error correction code (ECC) algorithm for each of the data blocks;

determining, by the external host, a bad data block in the nonvolatile memory of the portable device based on the received metadata, wherein the bad data block includes one or more errors, and wherein the bad data block comprises a first bad data block;

modifying the received metadata to identify, for the bad data block, a subsequent ECC algorithm having a strength greater than a strength of the initial ECC algorithm;

transmitting the modified metadata to the portable device, wherein the portable device is configured to, apply the subsequent ECC algorithm to correct the one or more errors in the bad data block; and

determining a second bad data block based on an associated time stamp or erase count exceeding a specified threshold, wherein the metadata identifies the associated time stamp or the erase count.

8. The computer program product of claim 7 , the instructions further comprising:

detecting, by the external host, a temporary connection with the portable device; and

in response to the detecting, transmitting, through the temporary connection, a request for the metadata for the data blocks in the nonvolatile memory of the portable device.

9. The computer program product of claim 8 , wherein the temporary connection includes a Universal Serial Bus (USB) connection or a FireWire connection.

10. The computer program product of claim 7 , the instructions further comprising transmitting at least one of a write command or an erase command to the nonvolatile memory to verify the bad data block.

11. The computer program product of claim 7 , the instructions further comprising:

transmitting a command signal to rewrite data associated with a time stamp; and

updating the time stamp in the received metadata.

12. The computer program product of claim 7 , wherein the nonvolatile memory comprises flash memory.

13. A computing device, comprising: one or more processors configured to:

receive metadata for one or more data blocks in a nonvolatile memory of a portable device, the metadata identifying an initial error correction code (ECC) algorithm for each of the data blocks;

determine a bad data block in the nonvolatile memory of the portable device based on the received metadata, wherein the bad data block includes one or more errors, and wherein the bad data block comprises a first bad data block;

modify the received metadata to identify, for the bad data block, a subsequent ECC algorithm having a strength greater than a strength of the initial ECC algorithm;

transmit the modified metadata to the portable device, wherein the portable device is configured to apply the subsequent ECC algorithm to correct the one or more errors in the bad data block; and

determine a second bad data block based on an associated time stamp or erase count exceeds a specified threshold, the metadata identifies the associated time stamp or the erase count.

14. The computing device of claim 13 , the processors further configured to:

detect a temporary connection with the portable device; and

in response to the detecting, transmit, through the temporary connection, a request for the metadata for the data blocks in the nonvolatile memory of the portable device.

15. The computing device of claim 14 , wherein the temporary connection includes a Universal Serial Bus (USB) connection or a FireWire connection.

16. The computing device of claim 13 , the processors further configured to transmit at least one of a write command or an erase command to the nonvolatile memory to verify the bad data block.

17. The computing device of claim 13 , the processors further configured to: transmit a command signal to rewrite data associated with a time stamp; and update the time stamp in the received metadata.

18. The computing device of claim 13 , wherein the nonvolatile memory comprises flash memory.

Continuity (3)
Continuation 13035314 · Feb 25, 2011
Division 11739818 · Apr 25, 2007
Related Publication 20120072807A1 · Mar 22, 2012