IP Library Granted Patent US 10,613,925
Granted Patent B2
US 10,613,925 · App. 15/983,647 · Granted Apr 7, 2020

Data duplication in a non-volatile memory

Inventors: Samuel E. Bradshaw (Sacramento, CA); Justin Eno (El Dorado Hills, CA); Sean Stephen Eilert (Penryn, CA); Sai krishna Mylavarapu (Folsom, CA)
Assignee: MICRON TECHNOLOGY, INC.
G06F11/1004G06F3/0619G06F3/0659G06F3/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 10,613,925
App. No.
15/983,647
Filed
May 18, 2018
Granted
Apr 7, 2020
Kind
B2
Art Unit
2111
USPC
714/807
Abstract

Exemplary methods, apparatuses, and systems include a memory controller receiving a user payload to be written to a memory. The memory controller determines a plurality of locations within the memory within which the user payload will be written. After detecting the destination of the user payload, the memory controller detects, within a data structure, the presence of an identifier of a first location within a user data portion of the plurality of locations. The memory controller writes the user payload to the user data portion of the plurality of locations and, in response to detecting the presence of the identifier in the data structure, writes a copy of one or more bits in the user payload written to the first location to a spare data portion of the plurality of locations.

Claims (70)

1. A computer-implemented method, comprising:

receiving a user payload to be written to a memory;

determining a plurality of locations within the memory within which the user payload is to be written;

detecting, within a data structure, the presence of an identifier of a first location within a user data portion of the plurality of locations;

writing the user payload to the user data portion of the plurality of locations; and

in response to detecting the presence of the identifier in the data structure, writing a copy of one or more bits in the user payload written to the first location to a spare data portion of the plurality of locations.

2. The computer-implemented method of claim 1 , further comprising encoding the user payload to form an encoded user payload without encoding the copy of one or more bits, and wherein the writing the user payload to the user data portion of the plurality of locations comprises writing the encoded user payload.

3. The computer-implemented method of claim 1 , wherein writing the user payload to at least the user data portion of the plurality of locations and writing the copy of one or more bits in the user payload to the spare data portion of the plurality of locations are part of a single write operation.

4. The computer-implemented method of claim 1 , wherein the memory is comprised of a plurality of tiles, each tile including a plurality of memory cells, and wherein a plurality of tiles forms a slice and a location identifies a tile within a slice.

5. The computer-implemented method of claim 1 , further comprising:

collecting raw bit error rate (RBER) data associated with each location in the plurality of locations;

storing an identifier of a first worst RBER location in the data structure, wherein the first worst RBER location is the first location.

6. The computer-implemented method of claim 5 , further comprising:

collecting additional RBER data associated with each location in the plurality of locations;

storing an identifier of a new worst RBER location based at least in part on the additional RBER data, wherein the new worst RBER location is different than the first worst RBER location.

7. The computer-implemented method of claim 1 , further comprising:

generating error detection data based at least in part on the user payload;

detecting, within the data structure, the presence of a second identifier of a second location within an error detection portion of the plurality of locations;

writing the error detection data to the error detection portion of the plurality of locations; and

in response to detecting the presence of the second identifier in the data structure, writing a copy of one or more bits in the error detection data written to the second location to the spare data portion of the plurality of locations.

8. The computer-implemented method of claim 1 , further comprising:

receiving a request to read the user payload from the memory;

determining the plurality of locations within the memory within which the user payload is written;

detecting, within a data structure, the presence of the identifier of the first location within the user data portion of the plurality of locations;

reading the user data portion and the spare data portion within the plurality of locations;

in response to detecting the presence of the identifier in the data structure, replacing one or more bits read from the first location of the user data portion with the copy of the one or more bits read from the spare data portion.

9. A non-transitory computer-readable medium storing instructions, which when executed by a processing device, cause the processing device to perform a method comprising:

receiving a user payload to be written to a memory;

determining a plurality of locations within the memory within which the user payload is to be written;

detecting, within a data structure, the presence of an identifier of a first location within a user data portion of the plurality of locations;

writing the user payload to the user data portion of the plurality of locations; and

in response to detecting the presence of the identifier in the data structure, writing a copy of one or more bits in the user payload written to the first location to a spare data portion of the plurality of locations.

10. The non-transitory computer-readable medium of claim 9 , the method further comprising encoding the user payload to form an encoded user payload without encoding the copy of one or more bits, and wherein the writing the user payload to the user data portion of the plurality of locations comprises writing the encoded user payload.

11. The non-transitory computer-readable medium of claim 9 , wherein writing the user payload to at least the user data portion of the plurality of locations and writing the copy of one or more bits in the user payload to the spare data portion of the plurality of locations are part of a single write operation.

12. The non-transitory computer-readable medium of claim 9 , wherein the memory is comprised of a plurality of tiles, each tile including a plurality of memory cells, and wherein a plurality of tiles forms a slice and a location identifies a tile within a slice.

13. The non-transitory computer-readable medium of claim 9 , the method further comprising:

collecting raw bit error rate (RBER) data associated with each location in the plurality of locations;

storing an identifier of a first worst RBER location in the data structure, wherein the first worst RBER location is the first location.

14. The non-transitory computer-readable medium of claim 13 , the method further comprising:

collecting additional RBER data associated with each location in the plurality of locations;

storing an identifier of a new worst RBER location based at least in part on the additional RBER data, wherein the new worst RBER location is different than the first worst RBER location.

15. The non-transitory computer-readable medium of claim 9 , the method further comprising:

generating error detection data based at least in part on the user payload;

detecting, within the data structure, the presence of a second identifier of a second location within an error detection portion of the plurality of locations;

writing the error detection data to the error detection portion of the plurality of locations; and

in response to detecting the presence of the second identifier in the data structure, writing a copy of one or more bits in the error detection data written to the second location to the spare data portion of the plurality of locations.

16. The non-transitory computer-readable medium of claim 9 , the method further comprising:

receiving a request to read the user payload from the memory;

determining the plurality of locations within the memory within which the user payload is written;

detecting, within a data structure, the presence of the identifier of the first location within the user data portion of the plurality of locations;

reading the user data portion and the spare data portion within the plurality of locations;

in response to detecting the presence of the identifier in the data structure, replacing one or more bits read from the first location of the user data portion with the copy of the one or more bits read from the spare data portion.

17. An apparatus comprising:

a processing device; and

a local memory coupled to the processing device, the local memory storing instructions which, when executed by the processing device, cause the processing device to:

receive a user payload to be written to a memory;

determine a plurality of locations within the memory within which the user payload is to be written;

detect, within a data structure, the presence of an identifier of a first location within a user data portion of the plurality of locations;

write the user payload to the user data portion of the plurality of locations; and

in response to detecting the presence of the identifier in the data structure, write a copy of one or more bits in the user payload written to the first location to a spare data portion of the plurality of locations.

18. The apparatus of claim 17 , wherein writing the user payload to at least the user data portion of the plurality of locations and writing the copy of one or more bits in the user payload to the spare data portion of the plurality of locations are part of a single write operation.

19. The apparatus of claim 17 , wherein the instructions further cause the processing device to:

collect raw bit error rate (RBER) data associated with each location in the plurality of locations;

store an identifier of a first worst RBER location in the data structure, wherein the first worst RBER location is the first location.

20. The apparatus of claim 17 , wherein the instructions further cause the processing device to:

receive a request to read the user payload from the memory;

determine the plurality of locations within the memory within which the user payload is written;

detect, within a data structure, the presence of the identifier of the first location within the user data portion of the plurality of locations;

read the user data portion and the spare data portion within the plurality of locations;

in response to detecting the presence of the identifier in the data structure, replace one or more bits read from the first location of the user data portion with the copy of the one or more bits read from the spare data portion.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 11, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050713/0001 →
SUPPLEMENT NO. 9 TO PATENT SECURITY AGREEMENT Recorded Aug 9, 2018
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 047282/0463 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2018
From: BRADSHAW, SAMUEL E.; ENO, JUSTIN; EILERT, SEAN STEPHEN; MYLAVARAPU, SAI KRISHNA
To: MICRON TECHNOLOGY, INC.
Reel/Frame 045846/0167 →
Continuity (1)
Related Publication 20190354429A1 · Nov 21, 2019