IP Library › Granted Patent US 10,467,093
Granted Patent B2
US 10,467,093 · App. 15/402,773 · Granted Nov 5, 2019

Non-volatile memory program failure recovery via redundant arrays

Inventors: Jeremy Isaac Nathaniel Werner (San Jose, CA); Earl T. Cohen (Oakland, CA)
Assignee: Seagate Technology LLC
G06F11/1068G06F3/061G06F3/064G06F3/0619G06F3/0656G06F3/0679G06F3/0688G06F11/1044G06F11/2056G11C29/52G06F11/108
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 10,467,093
App. No.
15/402,773
Granted
Nov 5, 2019
Kind
B2
Abstract

Methods, systems and computer-readable storage media for programming, by a storage controller, particular data stored in an allocated buffer to a particular one of a plurality of non-volatile memories (NVMs). Redundancy information may be updated sufficient to recover from failures of the plurality of NVMs. The allocated buffer may be freed prior to and independent of the particular NVM completing the programming. The particular data may continue to be programmed independent of freeing the allocated buffer. The continuing of the programming of the particular data may include determining whether there are any failures of the programming the particular data.

Claims (39)

1. A method comprising:

beginning, by a storage controller, a programming of particular data stored in an allocated buffer to a particular one of a plurality of non-volatile memories (NVMs);

updating redundancy information based on the particular data, the redundancy information sufficient to recover from failures of the plurality of NVMs;

upon updating the redundancy information, freeing the allocated buffer storing the particular data prior to and independent of completing the programming of the particular data to the particular one of the plurality of NVMs;

continuing the programming of the particular data to the particular one of the plurality of NVMs independent of the freeing the allocated buffer;

determining whether there are any failures in the programming of the particular data to the particular one of the plurality of NVMs; and

upon determining there is a failure in the programming of the particular data to the particular one of the plurality of NVMs, utilizing the redundancy information to recover from the failure in the programming.

2. The method of claim 1 , further comprising, preceding the beginning of the programming, receiving, at the storage controller, data to program portions of the plurality of NVMs, the data comprising the particular data to program to the particular one of the of the plurality of NVMs.

3. The method of claim 1 , wherein the redundancy information is first redundancy information, and further comprising:

updating second redundancy information different from the first redundancy information and sufficient to recover from failures of a subset of the plurality of NVMs, the updating of the second redundancy information being in response to detecting the failure of the programming of the particular data.

4. The method of claim 3 , wherein the particular data is stored as encoded in the first redundancy information when the failure of the programming is detected.

5. The method of claim 1 , wherein the allocated buffer resides in a buffer memory of the storage controller.

6. The method of claim 1 , wherein the allocated buffer is comprised in a first chip that is separate from a second chip that comprises the storage controller.

7. The method of claim 1 , wherein the storage controller is operable as a solid-state disk controller enabled to communicate with a computing host at least in part via a computing host interface compatible with a storage interface standard.

8. The method of claim 1 , wherein utilizing the redundancy information to recover from the failure in the programming comprises beginning a programming of the redundancy information to one or more of the plurality of NVMs.

9. A storage system comprising:

a plurality of non-volatile memories (NVMs); and

a storage controller communicatively coupled to the plurality of NVMs, the storage controller configured to

begin a programming of particular data stored in an allocated buffer to a particular one of the plurality of NVMs;

update redundancy information based on the particular data, the redundancy information sufficient to recover from failures of the plurality of NVMs;

upon updating the redundancy information, free the allocated buffer storing the particular data prior to and independent of completing the programming of the particular data to the particular one of the plurality of NVMs;

continue the programming of the particular data to the particular one of the plurality of NVMs independent of the freeing of the particular data from the allocated buffer;

determine whether there are any failures in the programming of the particular data to the particular one of the plurality of NVMs; and

upon determining there is a failure in the programming of the particular data to the particular one of the plurality of NVMs, utilize the redundancy information to recover from the failure in the programming.

10. The storage system of claim 9 , wherein preceding the beginning of the programming, the storage controller is further configured to receive data to program portions of the plurality of NVMs, the data comprising the particular data to program the particular one of the of the plurality of NVMs.

11. The storage system of claim 9 , wherein the redundancy information is first redundancy information, and wherein the storage controller is further configured to update second redundancy information different from the first redundancy information and sufficient to recover from failures of a subset of the plurality of NVMs, the updating second redundancy information being in response to detecting a failure of the programming of the particular data.

12. The storage system of claim 11 , wherein the particular data is stored as encoded in the first redundancy information when the failure of the programming is detected.

13. The storage system of claim 9 , wherein the allocated buffer resides in a buffer memory of the storage controller.

14. The storage system of claim 9 , wherein the storage controller is operable as a solid-state disk controller enabled to communicate with a computing host at least in part via a computing host interface compatible with a storage interface standard.

15. The storage system of claim 9 , wherein the storage controller comprises a flash memory interface enabled to communicate with the plurality of NVMs.

16. The storage system of claim 9 , wherein the plurality of NVMs comprise one or more flash memories.

17. The storage system of claim 9 , wherein utilizing the redundancy information to recover from the failure in the programming comprises beginning a programming of the redundancy information to one or more of the plurality of NVMs.

18. The storage system of claim 13 , wherein the redundancy information is maintained in the buffer memory of the storage controller.

19. A non-transitory computer readable medium having processor-executable instructions stored thereon that, when executed by a processor, cause the processor to:

begin a programming of particular data stored in an allocated buffer to a particular one of a plurality of non-volatile memories (NVMs);

update redundancy information based on the particular data, the redundancy information sufficient to recover from programming failures of the plurality of NVMs;

upon updating the redundancy information, free the allocated buffer storing the particular data prior to and independent of the particular one of the plurality of NVMs completing the programming; and

continue programming the particular data independent of the freeing the allocated buffer.

20. The non-transitory computer readable medium of claim 19 , wherein the processor is located in a storage controller that is operable as a solid-state disk controller enabled to communicate with a computing host at least in part via a computing host interface compatible with a storage interface standard.

Continuity (2)
Continuation 13728573 · Dec 27, 2012
Related Publication 20170147435A1 · May 25, 2017
Cited By (1)
US 12,725,674