IP Library Granted Patent US 9,280,417
Granted Patent B2
US 9,280,417 · App. 13/899,553 · Granted Mar 8, 2016

Message storage in memory blocks using codewords

Inventors: John D. Davis (San Francisco, CA); Parikshit Gopalan (Sunnyvale, CA); Mark Manasse (San Francisco, CA); Karin Strauss (Seattle, WA); Sergey Yekhanin (Mountain View, CA)
Assignee: Microsoft Technology Licensing, LLC
G06F11/1048G06F11/00G11C14/0045
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 9,280,417
App. No.
13/899,553
Granted
Mar 8, 2016
Kind
B2
Abstract

A codeword is generated from a message. One or more anchor values are appended to the codeword at predetermined anchor positions. Before the codeword is stored in a memory block, the locations and values of stuck cells in the memory block are determined. Based on the values and positions of the stuck cells, the values of the codeword are remapped so that values of the codeword that are the same as the values of the stuck cells are placed at the positions of the stuck cells. The remapped codeword is stored in the memory block. When the message is later read, the original codeword can be recovered from the remapped codeword based on the locations of the anchor values in the remapped codeword.

Claims (50)

1. A method comprising:

receiving a message to store in a memory block by a computing device, wherein the memory block comprises a plurality of cells and each cell has a value of a plurality of values;

generating a first string from the message by the computing device, wherein the first string comprises a plurality of positions, and wherein each position corresponds to a cell of the plurality of cells and each position has a value of the plurality of values;

determining a value of a stuck cell of the plurality of cells of the memory block by the computing device;

determining a difference between the value of the stuck cell and the value of the position of the first string corresponding to the stuck cell by the computing device;

adding, modulo an alphabet size, the determined difference to each value of the first string to generate a second string by the computing device; and

storing the second string in the memory block by the computing device.

2. The method of claim 1 , further comprising:

retrieving the stored second string;

determining the difference based on the second string;

subtracting the determined difference from each value of the second string modulo the alphabet size to recover the first string;

generating the message based on the first string; and

providing the message.

3. The method of claim 2 , wherein determining the difference based on the second string comprises determining the value of a predetermined position of the second string, and determining the difference based on the value of the predetermined position.

4. The method of claim 3 , wherein the predetermined position is the first position.

5. The method of claim 1 , wherein each value of the plurality of values is repeated uniformly in the first string.

6. The method of claim 5 , wherein a first position of the first string has a predetermined value.

7. The method of claim 6 , wherein the predetermined value is zero.

8. The method of claim 1 , wherein the computing device comprises a memory controller.

9. The method of claim 1 , wherein each value corresponds to a resistance level.

10. A method comprising:

generating a first string from a message associated with a memory block by a computing device, wherein the memory block comprises a plurality of cells and each cell has a value of a plurality of values, the first string comprises a plurality of positions, and each position corresponds to a cell of the plurality of cells and each position has a value of the plurality of values;

determining a value of a stuck cell of the plurality of cells of the memory block by the computing device;

determining a difference between the value of the stuck cell and the value of the position of the first string corresponding to the stuck cell by the computing device;

adding, modulo an alphabet size, the determined difference to each value of the first string to generate a second string by the computing device; and

storing the second string in the memory block by the computing device.

11. The method of claim 10 , further comprising:

retrieving the stored second string;

determining the difference based on the second string;

subtracting the determined difference from each value of the second string modulo the alphabet size to recover the first string;

generating the message based on the first string; and

providing the message.

12. The method of claim 11 , wherein determining the difference based on the second string comprises determining the value of a predetermined position of the second string, and determining the difference based on the value of the predetermined position.

13. The method of claim 12 , wherein the predetermined position is the first position.

14. The method of claim 10 , wherein each value of the plurality of values is repeated uniformly in the first string.

15. The method of claim 14 , wherein a first position of the first string has a predetermined value.

16. A system comprising:

a memory controller;

a plurality of memory blocks; and

a mapping engine adapted to:

receive a message to store in a memory block of the plurality of memory blocks, wherein the memory block comprises a plurality of cells and each cell has a value of a plurality of values;

generate a first string from the message, wherein the first string comprises a plurality of positions, and wherein each position corresponds to a cell of the plurality of cells and each position has a value of the plurality of values;

determine a value of a stuck cell of the plurality of cells of the memory block;

determine a difference between the value of the stuck cell and the value of the position of the first string corresponding to the stuck cell;

add, modulo an alphabet size, the determined difference to each value of the first string to generate a second string; and

store the second string in the memory block.

17. The system of claim 16 , wherein each value of the plurality of values is repeated uniformly in the first string.

18. The system of claim 17 , wherein a first position of the first string has a predetermined value.

19. The system of claim 18 , wherein the predetermined value is zero.

20. The system of claim 16 , wherein each value corresponds to a resistance level.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2013
From: DAVIS, JOHN D.; GOPALAN, PARIKSHIT; MANASSE, MARK; STRAUSS, KARIN; YEKHANIN, SERGEY
To: MICROSOFT CORPORATION
Reel/Frame 030462/0032 →
Continuity (1)
Related Publication 20140351501A1 · Nov 27, 2014