Non-Volatile Memory Program Failure Recovery Via Redundant Arrays
First Claim
1. A method comprising:
- receiving, at a non-volatile memory controller, data to program N portions of a plurality of non-volatile memories, the data comprising particular data to program a particular one of the N portions;
storing the particular data in an allocated buffer associated with the non-volatile memory controller;
beginning programming the particular data to a particular one of the non-volatile memories;
updating redundancy information sufficient to recover from failures of M of the N portions;
freeing the allocated buffer;
wherein at least one of the storing, the beginning programming the particular data, the updating redundancy information, and the freeing is in response to the receiving; and
wherein the freeing is prior to the particular non-volatile memory completing the programming.
5 Assignments
0 Petitions
Accused Products
Abstract
Non-volatile memory program failure recovery via redundant arrays enables higher programming bandwidth and/or reduced latency in some storage subsystem implementations, e.g. a solid-state disk. Data to program N portions of a plurality of non-volatile memories is received at a non-volatile memory controller. The data includes particular data to program a particular one of the N portions. The particular data is stored in an allocated buffer associated with the non-volatile memory controller. Programming the particular data to a particular one of the non-volatile memories is begun. Redundancy information sufficient to recover from failures of M of the N portions is updated. The allocated buffer is freed. At least one of the storing, the beginning programming, the updating, and the freeing is in response to the receiving of the particular data. The freeing is prior to the particular non-volatile memory completing the programming.
-
Citations
20 Claims
-
1. A method comprising:
-
receiving, at a non-volatile memory controller, data to program N portions of a plurality of non-volatile memories, the data comprising particular data to program a particular one of the N portions; storing the particular data in an allocated buffer associated with the non-volatile memory controller; beginning programming the particular data to a particular one of the non-volatile memories; updating redundancy information sufficient to recover from failures of M of the N portions; freeing the allocated buffer; wherein at least one of the storing, the beginning programming the particular data, the updating redundancy information, and the freeing is in response to the receiving; and wherein the freeing is prior to the particular non-volatile memory completing the programming. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A tangible computer readable medium having a set of instructions stored therein that when executed by a processing element cause the processing element to perform and/or control operations comprising:
-
receiving, at a non-volatile memory controller, data to program N portions of a plurality of non-volatile memories, the data comprising particular data to program a particular one of the N portions; storing the particular data in an allocated buffer associated with the non-volatile memory controller; beginning programming the particular data to a particular one of the non-volatile memories; updating redundancy information sufficient to recover from failures of M of the N portions; freeing the allocated buffer; wherein at least one of the storing, the beginning programming the particular data, the updating redundancy information, and the freeing is in response to the receiving of the particular data; and wherein the freeing is prior to the particular non-volatile memory completing the programming. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15)
-
-
16. A system comprising:
-
an allocated buffer; means for receiving, at a non-volatile memory controller, data to program N portions of a plurality of non-volatile memories, the data comprising particular data to program a particular one of the N portions; means for storing the particular data in the allocated buffer associated with the non-volatile memory controller; means for beginning programming the particular data to a particular one of the non-volatile memories; means for updating redundancy information sufficient to recover from failures of M of the N portions; means for freeing the allocated buffer; wherein at least one of the means for storing, the means for beginning programming the particular data, the means for updating redundancy information, and the means for freeing is responsive to the means for receiving; and wherein the means for freeing is operable to free the allocated buffer prior to the particular non-volatile memory completing the programming. - View Dependent Claims (17, 18, 19, 20)
-
Specification