IP Library Granted Patent US 8,688,954
Granted Patent B2
US 8,688,954 · App. 13/218,480 · Granted Apr 1, 2014

Remapping inoperable memory blocks using pointers

Inventor: John D. Davis (San Francisco, CA)
Assignee: Microsoft Corporation
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 8,688,954
App. No.
13/218,480
Granted
Apr 1, 2014
Kind
B2
Abstract

Inoperable bits are determined in a memory block. Rather than abandon the block as inoperable, a data structure is generated that includes at least one memory page pointer that identifies the location of the inoperable bits in the memory block. The data structure is stored in one of a group of memory blocks that are reserved for the data structures. A pointer to the data structure is stored in metadata associated with the memory block with the inoperable bits. When a later memory operation is received for the memory block, the pointer is retrieved from the metadata and the memory page pointers are used to avoid the inoperable bits.

Claims (41)

1. A method comprising:

receiving an indication of one or more inoperable bits in a memory block by a memory controller, wherein the memory block includes a plurality of bytes and each byte includes one or more bits;

determining an address of a byte that includes the one or more inoperable bits by the memory controller;

determining a direction bit that defines a region of unusable bytes in the memory block by the memory controller, wherein the region either precedes or follows the address of the byte that includes the one or more inoperable bits;

generating a data structure that includes the address of the byte that includes the one or more inoperable bits and the determined direction bit by the memory controller; and

associating the data structure with the memory block by the memory controller, wherein associating the data structure with the memory block by the memory controller comprises storing a pointer to the data structure in metadata associated with the memory block.

2. The method of claim 1 , wherein the memory block is a phase change memory block.

3. The method of claim 1 , wherein generating the data structure that includes the address of the byte that includes the one or more inoperable bits comprises:

generating a first address of a byte from the memory block that precedes the byte that includes the one or more inoperable bits; and

generating a second address of a byte from the memory block that follows the byte that includes the one or more inoperable bits.

4. The method of claim 1 , wherein generating the data structure that includes the address of the byte that includes the one or more inoperable bits comprises determining a number of usable bytes in the memory block, and generating an indicator of the determined number of usable bytes.

5. The method of claim 1 , wherein associating the data structure with the memory block by the memory controller comprises storing the data structure in an entry associated with the memory block in a table.

6. The method of claim 1 , further comprising:

determining a spare memory block; and

storing the data structure on the spare memory block.

7. The method of claim 6 , wherein determining the spare memory block comprises determining the spare memory block from a pool of spare memory blocks.

8. A method comprising:

receiving a memory operation for a memory block by a memory controller, wherein the memory block is a mapped memory block and includes a plurality of bytes and at least one byte includes an inoperable bit;

retrieving a data structure associated with the memory block by the memory controller, wherein the data structure identifies a byte from the memory block and includes a direction bit, wherein retrieving the data structure associated with the memory block comprises retrieving a pointer to the data structure from metadata associated with the memory block, and retrieving the data structure from a memory location identified by the pointer;

determining one or more bytes of the plurality of bytes that do not include an inoperable bit by the memory controller using the data structure by determining one or more bytes from the memory block that follow the identified byte in a direction indicated by the direction bit; and

fulfilling the memory operation using the determined one or more bytes by the memory controller.

9. The method of claim 8 , wherein the memory location is in another memory block, and fulfilling the memory operation further comprises fulfilling the memory operation using one or more bytes from the another memory block.

10. The method of claim 9 , wherein the another memory block is a mapped memory block.

11. The method of claim 8 , wherein the data structure identifies a first byte from the memory block and a second byte from the memory block, and determining one or more bytes of the plurality of bytes that do not include an inoperable bit comprises determining one or more bytes from the memory block that are not between the first byte and the second byte.

12. The method of claim 8 , wherein the memory block is a phase change memory block.

13. A system comprising at least one computing device;

a plurality of memory blocks;

a plurality of spare memory blocks, wherein each memory block includes a plurality of bytes and each byte includes one or more bits; and

a memory controller adapted to:

receive an indication one or more inoperable bits in a memory block of the plurality of memory blocks;

determine an address of a byte that includes the one or more inoperable bits;

determine a direction bit that defines a region of unusable bytes in the memory block, wherein the region either precedes or follows the address of the byte that includes the one or more inoperable bits;

generate a data structure that includes the address of the determined byte that includes the one or more inoperable bits and the determined direction bit;

select a spare memory block from the plurality of spare memory blocks;

store the generated data structure in the selected spare memory block; and

store a pointer to the selected spare memory block in metadata associated with the memory block with the indicated one or more inoperable bits.

14. The system of claim 13 , wherein each of the plurality of memory blocks is a phase change memory block.

15. The system of claim 13 , wherein the memory controller adapted to generate the data structure that includes the address of the byte that includes the one or more inoperable bits comprises the memory controller adapted to:

generate a first memory page pointer to an address of a byte from a memory block that precedes the byte that includes the one or more inoperable bits; and

generate a second memory page pointer to an address of a byte from the memory block that follows the byte that includes the one or more inoperable bits.

16. The system of claim 13 , wherein the memory controller adapted to select a spare memory block from the plurality of spare memory blocks, comprises the memory controller adapted to select a spare memory block from a queue comprising identifiers of each of the plurality of spare memory blocks.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2016
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: ZHIGU HOLDINGS LIMITED
Reel/Frame 040354/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2011
From: DAVIS, JOHN D.
To: MICROSOFT CORPORATION
Reel/Frame 026891/0050 →
Continuity (1)
Related Publication 20130054936A1 · Feb 28, 2013