IP Library Granted Patent US 10,133,629
Granted Patent B2
US 10,133,629 · App. 15/484,039 · Granted Nov 20, 2018

Methods and systems for implementing redundancy in memory controllers

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,133,629
App. No.
15/484,039
Granted
Nov 20, 2018
Kind
B2
Abstract

The present disclosure relates to methods and systems for implementing redundancy in memory controllers. The disclosed systems and methods utilize a row of memory blocks, such that each memory block in the row is associated with an independent media unit. Failures of the media units are not correlated, and therefore, a failure in one unit does not affect the data stored in the other units. Parity information associated with the data stored in the memory blocks is stored in a separate memory block. If the data in a single memory block has been corrupted, the data stored in the remaining memory blocks and the parity information is used to retrieve the corrupted data.

Claims (32)

1. A method for introducing redundancy in a memory controller, the method comprising:

initializing, by the memory controller, a plurality of data memory elements to a logical zero value, each data memory element being associated with a corresponding non-volatile storage element, the plurality of data memory elements including a parity data memory element;

receiving, from a host computer, a first data block associated with a first data memory element;

storing, by the memory controller, to the first data memory element a first result of a logical operation between a value in the first data block and a value in the first data memory element;

storing, by the memory controller, to the parity data memory element a second result of a logical operation between the value in the first data block and the value in the parity data memory element;

receiving, from the host computer, a second data block associated with a second data memory element;

storing, by the memory controller, to the second data memory element a third result of a logical operation between a value in the second data block and a value in the second data memory element;

storing, by the memory controller, to the parity data memory element a fourth result of a logical operation between the value in the second data block and the value in the parity data memory element.

2. The method of claim 1 , further comprising:

transferring, by the memory controller, the stored data from the data memory elements to their corresponding non-volatile storage elements; and

initializing, by the memory controller, the data memory elements to a logical zero, after transferring the stored data from the data memory elements to the first non-volatile storage elements.

3. The method of claim 1 , wherein the logical operations are exclusive OR logical operations.

4. The method of claim 3 , wherein a value in the parity data memory element is stored incrementally.

5. The method of claim 3 , wherein a value stored in a first data memory element can be restored from the values of the data memory elements in a valid state and a value of the parity data memory element.

6. The method of claim 1 , wherein each corresponding non-volatile storage element is located in an independent media unit.

7. A memory controller comprising:

a plurality of data memory elements, each data memory element being associated with a corresponding non-volatile storage element, the plurality of data memory elements including a parity data memory element; and

a controller module configured to:

initialize the plurality of data memory elements to a logical zero value;

receive, from a host computer, a first data block associated with a first data memory element;

store to the first data memory element a first result of a logical operation between a value in the first data block and a value in the first data memory element;

store to the parity data memory element a second result of a logical operation between the value in the first data block and the value in the parity data memory element;

receive, from the host computer, a second data block associated with a second data memory element;

store, by the memory controller, to the second data memory element a third result of a logical operation between a value in the second data block and a value in the second data memory element;

store, by the memory controller, to the parity data memory element a fourth result of a logical operation between the value in the second data block and the value in the parity data memory element.

8. The memory controller of claim 7 , wherein the controller module is further configured to:

transfer the stored data from the data memory elements to their corresponding non-volatile storage elements; and

initialize the data memory elements to a logical zero, after transferring the stored data from the data memory elements to the first non-volatile storage elements.

9. The memory controller of claim 7 , wherein the logical operations are exclusive OR logical operations.

10. The memory controller of claim 9 , wherein a value in the parity data memory element is stored incrementally.

11. The memory controller of claim 9 , wherein a value stored in a first data memory element can be restored from the values of the data memory elements in a valid state and a value of the parity data memory element.

12. The memory controller of claim 7 , wherein each corresponding non-volatile storage element is located in an independent media unit.

Assignments (11)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2020
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 052408/0009 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2020
From: SINGHAI, ASHISH; NARASIMHA, ASHWIN; OKIN, KENNETH ALAN
To: HGST NETHERLANDS B.V.
Reel/Frame 052395/0796 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →