Managing unreliable memory in data storage systems
First Claim
1. A data storage system comprising:
- a non-volatile memory array; and
a controller configured to;
execute a memory access operation directed to a memory unit of the non-volatile memory array, the memory unit having fewer memory locations than a block of memory, wherein the block of memory is a smallest number of memory locations that is erasable as a unit;
detect a memory error that indicates a failure to execute the memory access operation;
in response to detecting the memory error that indicates the failure to execute the memory access operation;
add an entry corresponding to the memory unit to an unreliable memory unit list, the unreliable memory unit list comprising a plurality of entries corresponding to memory units of the non-volatile memory array designated as unreliable,whereby unreliable memory is tracked at a granularity level finer than a smallest granularity level at which the non-volatile memory array is erasable; and
in response to determining that a total number of unreliable memory units in a first memory block containing the memory unit exceeds a first threshold;
add an entry corresponding to the first memory block to an unreliable memory block list thereby preventing execution of subsequent memory access operations in the first memory block,wherein the first threshold differs from a second threshold used by the controller to determine whether to add an entry corresponding to a second memory block of the non-volatile memory array to the unreliable memory block list, andwherein the operational life of the data storage system is extended by allowing for memory access operations to be directed to some reliable memory units of the first memory block after it has been determined that the first memory block comprises one or more unreliable memory units.
8 Assignments
0 Petitions
Accused Products
Abstract
A data storage system configured to manage unreliable memory units is disclosed. In one embodiment, the data storage system maintains an unreliable memory unit list designating memory units in a non-volatile memory array as reliable or unreliable. The unreliable memory unit list facilitates management of unreliable memory at a granularity level finer than the granularity of a block of memory. The data storage system can add entries to the unreliable memory unit list as unreliable memory units are discovered. Further, the data storage system can continue to perform memory access operations directed to reliable memory units in blocks containing other memory units determined to be unreliable. As a result, the operational life of the data storage system is extended.
17 Citations
20 Claims
-
1. A data storage system comprising:
-
a non-volatile memory array; and a controller configured to; execute a memory access operation directed to a memory unit of the non-volatile memory array, the memory unit having fewer memory locations than a block of memory, wherein the block of memory is a smallest number of memory locations that is erasable as a unit; detect a memory error that indicates a failure to execute the memory access operation; in response to detecting the memory error that indicates the failure to execute the memory access operation; add an entry corresponding to the memory unit to an unreliable memory unit list, the unreliable memory unit list comprising a plurality of entries corresponding to memory units of the non-volatile memory array designated as unreliable, whereby unreliable memory is tracked at a granularity level finer than a smallest granularity level at which the non-volatile memory array is erasable; and in response to determining that a total number of unreliable memory units in a first memory block containing the memory unit exceeds a first threshold; add an entry corresponding to the first memory block to an unreliable memory block list thereby preventing execution of subsequent memory access operations in the first memory block, wherein the first threshold differs from a second threshold used by the controller to determine whether to add an entry corresponding to a second memory block of the non-volatile memory array to the unreliable memory block list, and wherein the operational life of the data storage system is extended by allowing for memory access operations to be directed to some reliable memory units of the first memory block after it has been determined that the first memory block comprises one or more unreliable memory units. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. In a data storage system comprising a controller and a non-volatile memory array, a method of managing unreliable memory units, the method comprising:
-
executing a memory access operation directed to a memory unit of the non-volatile memory array, the memory unit having fewer memory locations than a block of memory, wherein the block of memory is a smallest number of memory locations that is erasable as a unit; detecting a memory error that indicates a failure to execute the memory access operation; in response to detecting the memory error that indicates the failure to execute the memory access operation; adding an entry corresponding to the memory unit to an unreliable memory unit list, the unreliable memory unit list comprising a plurality of entries corresponding to memory units of the non-volatile memory array designated as unreliable, whereby unreliable memory is tracked at a granularity level finer than a smallest granularity level at which the non-volatile memory array is erasable; and in response to determining that a total number of unreliable memory units in a first memory block containing the memory unit exceeds a first threshold; adding an entry corresponding to the first memory block to an unreliable memory block list thereby preventing execution of subsequent memory access operations in the first memory block, wherein the first threshold differs from a second threshold used to determine whether to add an entry corresponding to a second memory block of the non-volatile memory array to the unreliable memory block list. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. In a data storage system comprising a controller and a non-volatile memory array, a method of storing data, the method comprising:
-
receiving a program operation, the program operation associated with a first memory unit of the non-volatile memory array and data to be programmed, wherein the first memory unit has fewer memory locations than a smallest number of memory locations that is erasable as a unit; selecting, for programming, a first block of memory containing the first memory unit when a total number of unreliable memory units in the first block of memory does not exceed a first threshold different from a second threshold; determining whether an unreliable memory unit list comprises an entry indicating that the first memory unit is unreliable; and in response to determining that the unreliable memory unit list comprises the entry; selecting, from the first block of memory, a second memory unit that has no associated entry in the unreliable memory unit list; and storing the data in the second memory unit, wherein the total number of unreliable memory units in the first block of memory not exceeding the first threshold permits execution of memory access operations in the first block of memory, wherein the second threshold is used to determine whether to add an entry corresponding to a second block of memory of the non-volatile memory array to an unreliable memory block list, and wherein the method is performed under the control of the controller. - View Dependent Claims (18)
-
-
19. A data storage system comprising:
-
a non-volatile memory array; and a controller configured to; receive a program operation, the program operation associated with a first memory unit of the non-volatile memory array and data to be programmed, wherein the first memory unit has fewer memory locations than a smallest number of memory locations that is erasable as a unit; select, for programming, a first block of memory containing the first memory unit when a total number of unreliable memory units in the first block of memory does not exceed a first threshold different from a second threshold; determine whether an unreliable memory unit list comprises an entry indicating that the first memory unit is unreliable; and in response to determining that the unreliable memory unit list comprises the entry; select, from the first block of memory, a second memory unit that has no associated entry in the unreliable memory unit list; and store the data in the second memory unit wherein the total number of unreliable memory units in the first block of memory not exceeding the first threshold permits execution of memory access operations by the controller in the first block of memory, wherein the second threshold is used by the controller to determine whether to add an entry corresponding to a second block of memory of the non-volatile memory array to an unreliable memory block list. - View Dependent Claims (20)
-
Specification