IP Library Granted Patent US 12,493,521
Granted Patent B2
US 12,493,521 · App. 18/582,214 · Granted Dec 9, 2025

Generating a protected and balanced codeword

Inventor: Christophe Vincent Antoine Laurent (Agrate Brianza, IT)
Assignee: Micron Technology, Inc.
G06F11/1076
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,493,521
App. No.
18/582,214
Granted
Dec 9, 2025
Kind
B2
Abstract

Methods, systems, and devices for generating a balanced codeword protected by an error correction code are described. A memory device receives data bits for storage. Based on the data bits, the memory device generates a codeword that includes the data bits, parity bits, and placeholder bits. The memory device balances the codeword by inverting one or more packets of the codeword. After balancing the codeword, the memory device stores at least a portion of the codeword in memory so that a later operation or a decoding process reveals the packets that were inverted as part of the balancing process. Accordingly, the memory device is able to re-invert the appropriate packets to recover the original data bits.

Claims (55)

1 . A method, comprising:

generating a codeword comprising a plurality of bits having associated logic values, the plurality of bits comprising data bits, placeholder bits, and parity bits;

inverting a set of bits of the plurality of bits of the codeword to modify the logic values associated with the plurality of bits of the codeword based at least in part on a target ratio of a first quantity of a first logic value and a second quantity of a second logic value;

storing the codeword, along with one or more padding bits, in one or more memories;

determining, after reading the codeword and the one or more padding bits from the one or more memories, that a placeholder bit of the codeword has a different value than a comparison bit for the placeholder bit; and

determining the set of bits that were inverted based at least in part on the placeholder bit having the different value than the comparison bit and based at least in part on the set of bits being associated with the placeholder bit that has the different value than the comparison bit.

2 . The method of claim 1 , further comprising:

determining, after reading the codeword from the one or more memories, that a second placeholder bit of the codeword has a same value as a second comparison bit for the second placeholder bit, wherein determining the set of bits that were inverted is based at least in part on the second placeholder bit having the same value as the second comparison bit.

3 . The method of claim 1 , further comprising:

re-inverting the set of bits after determining the set of bits that were inverted.

4 . The method of claim 1 , further comprising:

decoding the codeword before determining that that the placeholder bit has the different value than the comparison bit, wherein determining that the placeholder bit has the different value is based at least in part on decoding the codeword.

5 . The method of claim 4 , further comprising:

discarding the one or more padding bits before decoding the codeword.

6 . The method of claim 1 , further comprising:

determining an inversion pattern associated with a bit-position of the placeholder bit, wherein determining the set of bits that were inverted is based at least in part on the inversion pattern.

7 . The method of claim 1 , wherein inverting the set of bits comprises:

inverting a data bit, a parity bit, and the placeholder bit.

8 . The method of claim 1 , further comprising:

generating the parity bits based at least in part on the data bits and the placeholder bits, wherein the set of bits is inverted after generating the parity bits.

9 . The method of claim 1 , further comprising:

determining, after inverting the set of bits, a quantity of padding bits to store along with the codeword based at least in part on a difference between a ratio of logic values associated with the plurality of bits and the target ratio, wherein the one or more padding bits are based at least in part on the quantity.

10 . A method, comprising:

generating a codeword comprising a plurality of bits having associated logic values, the plurality of bits comprising data bits, placeholder bits, and parity bits that are mapped to a plurality of packets;

inverting a set of bits of the plurality of bits of the codeword based at least in part on a target ratio of a first quantity of a first logic value and a second quantity of a second logic value, wherein the set of bits comprises bits that are mapped to one or more packets of the plurality of packets, and wherein inverting the set of bits modifies the logic values associated with the plurality of bits;

storing the codeword in one or more memories after inverting the set of bits;

comparing, after reading the codeword, a placeholder bit of the codeword with a predetermined value; and

re-inverting the set of bits that were inverted based at least in part the placeholder bit being different than the predetermined value and based at least in part on the set of bits being associated with the placeholder bit.

11 . The method of claim 10 , further comprising:

determining a difference between a ratio of logic values associated with the plurality of bits of the codeword and the target ratio; and

storing a padding bit along with the codeword based at least in part on the difference between the ratio of logic values and the target ratio.

12 . The method of claim 10 , further comprising:

determining an inversion pattern associated with a bit-position of the placeholder bit, wherein re-inverting the set of bits that were inverted is based at least in part on the inversion pattern.

13 . The method of claim 10 , further comprising:

generating the placeholder bits each with a predetermined logic value; and

generating the parity bits based at least in part on the data bits and the placeholder bits.

14 . The method of claim 10 , wherein inverting the set of bits comprises:

inverting a first set of adjacently positioned bits and inverting a second set of adjacently positioned bits, wherein the first set of adjacently positioned bits and the second set of adjacently positioned bits are non-adjacent to each other.

15 . A memory system, comprising:

one or more memory devices; and

one or more controllers coupled with the one or more memory devices and configured to cause the memory system to:

generate a codeword comprising a plurality of bits having associated logic values, the plurality of bits comprising data bits, placeholder bits, and parity bits;

invert a set of bits of the plurality of bits of the codeword to modify the logic values associated with the plurality of bits of the codeword based at least in part on a target ratio of a first quantity of a first logic value and a second quantity of a second logic value;

store the codeword, along with one or more padding bits;

determine, after reading the codeword and the one or more padding bits, that a placeholder bit of the codeword has a different value than a comparison bit for the placeholder bit; and

determine the set of bits that were inverted based at least in part on the placeholder bit having the different value than the comparison bit and based at least in part on the set of bits being associated with the placeholder bit that has the different value than the comparison bit.

16 . The memory system of claim 15 , wherein the one or more controllers is further configured to cause the memory system to:

determine, after reading the codeword, that a second placeholder bit of the codeword has a same value as a second comparison bit for the second placeholder bit, wherein determining the set of bits that were inverted is based at least in part on the second placeholder bit having the same value as the second comparison bit.

17 . The memory system of claim 15 , wherein the one or more controllers is further configured to cause the memory system to:

re-invert the set of bits after determining the set of bits that were inverted.

18 . The memory system of claim 15 , wherein the one or more controllers is further configured to cause the memory system to:

decode the codeword before determining that that the placeholder bit has the different value than the comparison bit, wherein determining that the placeholder bit has the different value is based at least in part on decoding the codeword; and

discard the one or more padding bits before decoding the codeword.

19 . The memory system of claim 15 , wherein the one or more controllers is further configured to cause the memory system to:

determine an inversion pattern associated with a bit-position of the placeholder bit, wherein determining the set of bits that were inverted is based at least in part on the inversion pattern.

Continuity (4)
Division 17950655 · Sep 22, 2022
Division 17111235 · Dec 3, 2020
Continuation In Part 16940766 · Jul 28, 2020
Related Publication 20240272985A1 · Aug 15, 2024
References Cited (50)
US 5835541A · Namekata · 1998 [cited by examiner]
US 8726140B2 · Chang et al. · 2014 [cited by applicant]
US 9336084B2 · Baker · 2016 [cited by applicant]
US 9582354B2 · Kern · 2017 [cited by examiner]
US 10176040B2 · Kreifels · 2019 [cited by applicant]
US 11262937B2 · Laurent et al. · 2022 [cited by applicant]
US 11362673B2 · Seyedzadehdelcheh · 2022 [cited by examiner]
US 20040003337A1 · Cypher · 2004 [cited by applicant]
US 20110060965A1 · Kwon · 2011 [cited by examiner]
US 20110157992A1 · Strasser et al. · 2011 [cited by applicant]
US 20110182119A1 · Strasser et al. · 2011 [cited by applicant]
US 20140056068A1 · Strasser et al. · 2014 [cited by applicant]
US 20140208181A1 · Daniel et al. · 2014 [cited by applicant]
US 20140325310A1 · Anholt et al. · 2014 [cited by applicant]
US 20150193302A1 · Hyun et al. · 2015 [cited by applicant]
US 20150212877A1 · Kern et al. · 2015 [cited by applicant]
US 20150254129A1 · Authement et al. · 2015 [cited by applicant]
US 20150303992A1 · Kim et al. · 2015 [cited by applicant]
US 20170147433A1 · Shinbashi · 2017 [cited by examiner]
US 20170170869A1 · Chen · 2017 [cited by applicant]
US 20170170870A1 · Chen · 2017 [cited by applicant]
US 20170192721A1 · Chung et al. · 2017 [cited by applicant]
US 20170255512A1 · Zamir et al. · 2017 [cited by applicant]
US 20180357188A1 · Brief · 2018 [cited by applicant]
US 20190042359A1 · Durham · 2019 [cited by applicant]
US 20190172537A1 · Peddle et al. · 2019 [cited by applicant]
US 20190253080A1 · Parthasarathy · 2019 [cited by examiner]
US 20190377632A1 · Oh et al. · 2019 [cited by applicant]
US 20200050512A1 · Basu · 2020 [cited by applicant]
US 20200059252A1 · Fackenthal · 2020 [cited by examiner]
US 20200153460A1 · Cideciyan et al. · 2020 [cited by applicant]
CN 1526136A · 2004 [cited by applicant]
CN 102693760A · 2012 [cited by applicant]
TW 200841168A · 2008 [cited by applicant]
TW 200905692A · 2009 [cited by applicant]
TW 200926174A · 2009 [cited by applicant]
TW 201237623A · 2012 [cited by applicant]
TW 201333952A · 2013 [cited by applicant]
TW 201732553A · 2017 [cited by applicant]
WO 2011153000A2 · 2011 [cited by applicant]
International Search Report and Written Opinion received for PCT Patent Application No. PCT/US21/41562, mailed on Nov. 2, 2021, 7 pages. [cited by applicant]
International Search Report and Written Opinion received for PCT Patent Application No. PCT/US21/42173, mailed on Nov. 2, 2021, 7 pages. [cited by applicant]
ISA/KR, International Search Report and Written Opinion of the International Searching Authority, Int'l Appl. No. PCT/US2021/041532, Nov. 2, 2021, Korean Intellectual Property Office, Seo-gu, Daejeon, Republic of Korea,… [cited by applicant]
Junkai Sun and Anping Jiang, “Partitioned bus-invert coding for power consumption optimization of data bus,” 2011 3rd International Conference on Computer Research and Development, 2011, pp. 452-455, doi: 10.1109/ICCRD.… [cited by applicant]
Office Action received for U.S. Appl. No. 16/940,762, mailed on Jan. 5, 2022, 1 pages. [cited by applicant]
R. Maddah, S. Cho and R. Melhem, “Power of One Bit: Increasing Error Correction Capability with Data Inversion,” 2013 IEEE 19th Pacific Rim International Symposium on Dependable Computing, 2013, pp. 216-225, doi: 10.110… [cited by applicant]
Taiwan Patent Office, “Office Action and Search report,” issued in connection with Taiwan Patent Application No. 110127109 dated May 3, 2022 (8 pages). [cited by applicant]
Taiwanese Patent Office, “Office Action and Search Report”, issued in connection with Taiwanese Patent Application No. 110125252, dated Apr. 25, 2022 (5 pages). [cited by applicant]
Taiwanese Patent Office, “Office Action and Search Report”, issued in connection with Taiwanese Patent Application No. 110125252, dated Apr. 25, 2022 (9 pages). [cited by applicant]
Z. Wang, H. M. Kiah, Y. Cassuto and J. Bruck, “Switch Codes: Codes for Fully Parallel Reconstruction,” in IEEE Transactions on Information Theory, vol. 63, No. 4, pp. 2061-2075, Apr. 2017, doi: 10.1109/TIT.2017.2664867.… [cited by applicant]