IP Library Granted Patent US 12,487,882
Granted Patent B2
US 12,487,882 · App. 18/530,955 · Granted Dec 2, 2025

System and method for protecting data using cyclic properties of error correcting code

Inventors: Majid Anaraki Nemati (San Diego, CA); Terry M. Grunzke (Boise, ID); Brett K. Dodds (Boise, ID)
Assignee: Microsoft Technology Licensing, LLC
G06F11/1004G06F5/01G06F11/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 12,487,882
App. No.
18/530,955
Granted
Dec 2, 2025
Kind
B2
Abstract

A method, computer program product, and computing system for generating first encoded data by performing a first encoding of data included within each of a plurality of memory dies of a memory module using an exclusive-or (XOR) encoding process. Second encoded data is generated by performing a second encoding of the data included within each of the plurality of memory dies of the memory module and the first encoded data using a cyclic code encoding process. Error correction is performed on the data included within each of the plurality of memory dies of the memory module using the first encoded data, the second encoded data, an XOR decoding process, and a cyclic code error correction process.

Claims (56)

1 . A computer-implemented method, executed on a computing device, comprising:

generating first encoded data by performing a first encoding of data included within each of a plurality of memory dies of a memory module using an exclusive-or (XOR) encoding process, wherein performing the first encoding comprises encoding a first bit of each memory die in a subset of the plurality of memory dies to generate a first bit of a memory die in the plurality of memory dies, wherein the memory die is not included in the subset of the plurality of memory dies;

generating second encoded data by performing a second encoding of the data included within each of the plurality of memory dies of the memory module and the first encoded data using a cyclic code encoding process; and

performing error correction on the data included within each of the plurality of memory dies of the memory module using the first encoded data, the second encoded data, an XOR decoding process, and a cyclic code error correction process.

2 . The computer implemented method of claim 1 wherein the plurality of memory dies are configured in one or more of:

a 9×2×2 (DDR6) configuration;

a 9×4 (DDR5) configuration;

a 5×4×2 (DDR6) configuration;

a 5×8 (DDR5) configuration;

a 5×4×1 (DDR6) configuration;

a 10×2×2 (DDR6) configuration; and

a 10×4 (DDR5) configuration.

3 . The computer implemented method of claim 1 further comprising:

generating third encoded data by performing a third encoding of the data included within each of the plurality of memory dies and the first encoded data using a cyclic redundancy check encoding process.

4 . The computer implemented method of claim 3 wherein performing the second encoding of the data includes performing the second encoding of the data included within each of the plurality of memory dies of the memory module, the first encoded data, and the third encoded data using the cyclic code encoding process.

5 . The computer implemented method of claim 1 wherein the XOR decoding process includes:

generating an XOR mask using the first encoded data;

applying the XOR mask to the data included within each of the plurality of memory dies; and

determining a number of bits in the XOR mask.

6 . The computer implemented method of claim 5 wherein the cyclic code error correction process includes performing Bose-Chaudhuri-Hocquenghem (BCH) error correction in response to determining less than or equal to a number of BCH correction capability bits in the XOR mask during the XOR decoding process.

7 . The computer implemented method of claim 1 wherein performing error correction on the data includes performing a cyclic redundancy check decoding process.

8 . A computer program product residing on a computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:

generating first encoded data by performing a first encoding of data included within each of a plurality of memory dies of a memory module using an exclusive-or (XOR) encoding process, wherein performing the first encoding comprises encoding a first bit of each memory die in a subset of the plurality of memory dies to generate a first bit of a memory die in the plurality of memory dies, wherein the memory die is not included in the subset of the plurality of memory dies;

generating second encoded data by performing a second encoding of the data included within each of the plurality of memory dies of the memory module and the first encoded data using a cyclic code encoding process; and

performing anti-aliasing error correction on the data included within each of the plurality of memory dies of the memory module using the first encoded data, the second encoded data, an XOR decoding process, and a cyclic code error correction process by cyclically shifting an XOR mask to generate a rotated version of an aliased codeword to determine the aliased codeword from a correct codeword.

9 . The computer program product of claim 8 wherein the plurality of memory dies are configured in one or more of:

a 9×2×2 (DDR6) configuration;

a 9×4 (DDR5) configuration;

a 5×4×2 (DDR6) configuration;

a 5×8 (DDR5) configuration;

a 5×4×1 (DDR6) configuration;

a 10×2×2 (DDR6) configuration; and

a 10×4 (DDR5) configuration.

10 . The computer program product of claim 8 further comprising:

generating third encoded data by performing a third encoding of the data included within each of the plurality of memory dies and the first encoded data using a cyclic redundancy check encoding process.

11 . The computer program product of claim 10 wherein performing the second encoding of the data includes performing the second encoding of the data included within each of the plurality of memory dies of the memory module, the first encoded data, and the third encoded data using the cyclic code encoding process.

12 . The computer program product of claim 8 wherein the XOR decoding process includes: generating the XOR mask using the first encoded data; applying the XOR mask to the data included within each of the plurality of memory dies; and determining a number of bits in the XOR mask.

13 . The computer program product of claim 12 wherein the cyclic code error correction process includes performing BCH error correction in response to determining less than or equal to a number of Bose-Chaudhuri-Hocquenghem (BCH) correction capability bits in the XOR mask during the XOR decoding process.

14 . The computer program product of claim 8 wherein performing error correction on the data includes performing a cyclic redundancy check decoding process.

15 . A computing system including a processor and memory configured to perform operations comprising:

generating first encoded data by performing a first encoding of data included within each of a plurality of memory dies of a memory module using an exclusive-or (XOR) encoding process, wherein performing the first encoding comprises encoding a first bit of each memory die in a subset of the plurality of memory dies to generate a first bit of a memory die in the plurality of memory dies, wherein the memory die is not included in the subset of the plurality of memory dies;

generating second encoded data by performing a second encoding of the data included within each of the plurality of memory dies of the memory module and the first encoded data using a BCH encoding process; and

performing anti-aliasing error correction on the data included within each of the plurality of memory dies of the memory module using the first encoded data, the second encoded data, an XOR decoding process, and a Bose-Chaudhuri-Hocquenghem (BCH) decoding process by cyclically shifting an XOR mask to generate a rotated version of an aliased codeword to determine the aliased codeword from a correct codeword.

16 . The computing system of claim 15 wherein the plurality of memory dies are configured in one or more of:

a 9×2×2 (DDR6) configuration;

a 9×4 (DDR5) configuration;

a 5×4×2 (DDR6) configuration;

a 5×8 (DDR5) configuration;

a 5×4×1 (DDR6) configuration;

a 10×2×2 (DDR6) configuration; and

a 10×4 (DDR5) configuration.

17 . The computing system of claim 15 further comprising: performing a third encoding of the data included within each of the plurality of memory dies and the first encoded data using a cyclic redundancy check encoding process, thus defining third encoded data.

18 . The computing system of claim 17 wherein performing the second encoding of the data includes performing the second encoding of the data included within each of the plurality of memory dies of the memory module, the first encoded data, and the third encoded data using a cyclic code encoding process.

19 . The computing system of claim 15 wherein the XOR decoding process includes: generating the XOR mask using the first encoded data;

applying the XOR mask to the data included within each of the plurality of memory dies; and determining a number of bits in the XOR mask.

20 . The computing system of claim 19 wherein a cyclic code error correction process includes performing Bose-Chaudhuri-Hocquenghem (BCH) error correction in response to determining less than or equal to a number of BCH correction capability bits in the XOR mask during the XOR decoding process.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2023
From: NEMATI, MAJID ANARAKI; GRUNZKE, TERRY M.; DODDS, BRETT K.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 065793/0072 →
Continuity (2)
Provisional Application 63587029 · Sep 29, 2023
Related Publication 20250110824A1 · Apr 3, 2025
References Cited (9)
US 9128858B1 · Micheloni · 2015 [cited by examiner]
US 10236915B2 · Graumann · 2019 [cited by examiner]
US 10312944B2 · Khayat · 2019 [cited by examiner]
US 20040088636A1 · Cypher · 2004 [cited by examiner]
US 20160156372A1 · Motwani · 2016 [cited by examiner]
US 20170373703A1 · Wu · 2017 [cited by examiner]
US 20180011762A1 · Klein · 2018 [cited by applicant]
US 20200004627A1 · Sharon · 2020 [cited by examiner]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/042601, Dec. 13, 2024, 13 pages. [cited by applicant]