IP Library › Granted Patent US 11,971,782
Granted Patent B2
US 11,971,782 · App. 17/801,417 · Granted Apr 30, 2024

On-SSD erasure coding with uni-directional commands

Inventors: Sanjeev Trika (Portland, OR); Gregory Tucker (Chandler, AZ); James Harris (Chandler, AZ); Jonathan Hughes (Longmont, CO); Piotr Wysocki (Pomorskie, PL); Gang Cao (Shanghai, CN); Qihua Dai (Shanghai, CN); Benjamin Walker (Chandler, AZ); Ziye Yang (Shanghai, CN); Xiaodong Liu (Shanghai, CN); Changpeng Liu (Shanghai, CN); Jackson Ellis (Fort Collins, CO)
Assignee: SK Hynix NAND Product Solutions Corp.
G06F11/108G06F11/1068
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 11,971,782
App. No.
17/801,417
Granted
Apr 30, 2024
Kind
B2
Abstract

Systems and methods for a controller including controller memory and logic are presented herein. The logic is configured to control access to a persistent storage media and, in response to one or more commands, the logic determines an intermediate parity value based on a first parity calculation, and using the intermediate parity value determines a final parity value based on the intermediate parity value and a second parity calculation. Determining the intermediate parity value includes sending a uni-directional command to read an old data value from an address indicated in the uni-directional command, perform an exclusive-or operation on the old data value and a new data value indicated in the uni-directional command to determine the intermediate parity value and store, in the persistent storage media, the intermediate parity value at a location associated to an index indicated in the uni-directional command.

Claims (64)

1. An erasure coding (EC) controller, comprising:

one or more substrates;

EC controller memory; and

logic coupled to the one or more substrates, the logic configured to control access to a persistent storage media and, in response to one or more commands, the logic is further configured to:

determine an intermediate parity value based on a first parity calculation,

store, in the EC controller memory, the intermediate parity value, and

determine a final parity value based on the intermediate parity value and a second parity calculation,

wherein to determine the intermediate parity value comprises sending a uni-directional command to:

read an old data value from a first address indicated in the uni-directional command;

perform an exclusive-or operation on the old data value and a new data value indicated in the uni-directional command to determine the intermediate parity value; and

store in the persistent storage media the intermediate parity value at a first location associated to a first index indicated in the uni-directional command.

2. The EC controller of claim 1 , wherein, in response to the uni-directional command, the logic is further configured to:

write the new data value at the first address.

3. The EC controller of claim 1 , wherein the intermediate parity value is a first intermediate parity value and in response to a second uni-directional command, the logic is further configured to:

read a second intermediate parity value from a second location associated to a second index indicated in the second uni-directional command; and

store the second intermediate parity value at a second address indicated in the second uni-directional command.

4. The EC controller of claim 3 , wherein the persistent storage media comprises a solid state drive.

5. An electronic storage system, comprising:

persistent storage media; and

a controller communicatively coupled to the persistent storage media, the controller including controller memory and logic configured to control access to the persistent storage media and, in response to one or more commands, the logic is further configured to:

determine an intermediate parity value based on a first parity calculation,

store, in the controller memory, the intermediate parity value, and

determine a final parity value based on the intermediate parity value and a second parity calculation,

wherein to determine the intermediate parity value comprises sending a uni-directional command to:

read an old data value from a first address indicated in the uni-directional command;

perform an exclusive-or operation on the old data value and a new data value indicated in the uni-directional command to determine the intermediate parity value; and

store in the persistent storage media the intermediate parity value at a first location associated to a first index indicated in the uni-directional command.

6. The system of claim 5 , wherein, in response to a second uni-directional command, the logic is further configured to:

read an old parity data value from a second address indicated in the second uni-directional command; and

store the old parity data value at a second location associated to a second index indicated in the second uni-directional command.

7. The system of claim 6 , wherein the intermediate parity value is a first intermediate parity value and in response to the second uni-directional command, the logic is further configured to:

perform the second parity calculation based on the old parity data value, a second intermediate parity value indicated in the second uni-directional command, and a coefficient value indicated in the second uni-directional command to determine the final parity value; and

write the final parity value at the second address.

8. The system of claim 5 , wherein the persistent storage media comprises a solid state drive.

9. A method of controlling storage, comprising:

controlling, by a controller, access to a persistent storage media and, in response to one or more commands:

determining an intermediate parity value based on a first parity calculation,

storing, in a memory of the controller, the intermediate parity value; and

determining a final parity value based on the intermediate parity value and a second parity calculation,

wherein determining the intermediate parity value comprises sending a uni-directional command to cause:

reading an old data value from a first address indicated in the uni-directional command;

performing an exclusive-or operation on the old data value and a new data value indicated in the uni-directional command to determine the intermediate parity value; and

storing in the persistent storage media the intermediate parity value at a first location associated to a first index indicated in the uni-directional command.

10. The method of claim 9 , further comprising, in response to the uni-directional command:

writing the new data value at the first address.

11. The method of claim 9 , further comprising, in response to a second uni-directional command:

reading an old parity data value from a second address indicated in the second uni-directional command; and

storing the old parity data value at a second location associated to a second index indicated in the second uni-directional command.

12. The method of claim 11 , wherein the intermediate parity value is a first intermediate parity value and the method further comprising, in response to the second uni-directional command:

performing the second parity calculation based on the old parity data value, a second intermediate parity value indicated in the second uni-directional command, and a coefficient value indicated in the second uni-directional command to determine the final parity value; and

writing the final parity value at the second address.

13. At least one non-transitory machine readable medium comprising a plurality of instructions that, in response to being executed on a computing device, cause the computing device to control access to a persistent storage media and, in response to one or more commands, cause the computing device to, in response to a uni-directional command:

read an old data value from a first address indicated in the uni-directional command;

perform an exclusive-or operation on the old data value and a new data value indicated in the uni-directional command to determine an intermediate parity value;

perform a multiplication operation based on the intermediate parity value and a coefficient value indicated in the uni-directional command to determine a final parity value; and

write the final parity value at a second address indicated in the uni-directional command.

14. The at least one non-transitory machine readable medium of claim 13 , wherein the intermediate parity value is a first intermediate parity value and the at least one non-transitory machine readable medium comprising a plurality of further instructions that, in response to being executed on the computing device, and in response to a second uni-directional command, cause the computing device to:

read a second intermediate parity value from a second location associated to a second index indicated in the second uni-directional command; and

store the second intermediate parity value at a third address indicated in the second uni-directional command.

15. The at least one non-transitory machine readable medium of claim 13 , wherein the persistent storage media comprises a solid state drive.

16. The EC controller of claim 3 , wherein the second intermediate parity value is the first intermediate parity value.

17. The system of claim 7 , wherein the second intermediate parity value is the first intermediate parity value.

18. The method of claim 12 , wherein the second intermediate parity value is the first intermediate parity value.

19. The at least one non-transitory machine readable medium of claim 14 , wherein the second intermediate parity value is the first intermediate parity value.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2024
From: TRIKA, SANJEEV; TUCKER, GREGORY; HARRIS, JAMES; HUGHES, JONATHAN; WYSOCKI, PIOTR; CAO, GANG; DAI, QIHUA; WALKER, BENJAMIN; YANG, ZIYE; LIU, XIAODONG; LIU, CHENGPENG; ELLIS, JACKSON
To: INTEL CORPORATION
Reel/Frame 066404/0522 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2024
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP.
Reel/Frame 066404/0579 →
Continuity (1)
Related Publication 20230082403A1 · Mar 16, 2023
Cited By (1)
US 12,531,130