IP Library Granted Patent US 12,315,534
Granted Patent B2
US 12,315,534 · App. 18/531,491 · Granted May 27, 2025

Modulation code and ECC rate optimization using symbol context mutual information

Inventors: Iouri Oboukhov (Rochester, MN); Richard Galbraith (Rochester, MN); Jonas Goode (Lake Forest, CA); Niranjay Ravindran (Rochester, MN); Jihoon Park (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
G11B19/048G11B19/041G11B19/128G11B20/1813G11B20/182G11B20/1833G11B2020/185
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,315,534
App. No.
18/531,491
Granted
May 27, 2025
Kind
B2
Abstract

Example systems, data storage devices, testers, and methods for storage device configuration using symbol context mutual information are described. A data storage device may include channel circuit configuration settings for the encoding and decoding of data written to a non-volatile storage medium. The configuration settings may be determined by determining a known pattern for a sector, determining a series of symbol contexts, determining mutual information for each symbol context, and using the symbol context mutual information to determine relationships among configuration settings, such as bit size, error correction code rate, and modulation code. Once determined, the configuration settings may be used to configure the modulation code and ECC rate for the channel circuit of the data storage device.

Claims (123)

1. A system, comprising:

at least one memory; and

at least one processor configured to:

determine a known pattern for a data frame;

determine a series of symbol contexts comprising different bit sequences for a selected multi-bit symbol length;

determine a mutual information value for each symbol context in the series of symbol contexts;

determine, based on variations in the mutual information values for the series of symbol contexts in the data frame, a set of configuration settings for a channel circuit of a data storage device; and

store the set of configuration settings to the data storage device for use in operating the channel circuit.

2. The system of claim 1 , wherein:

the data frame is a codeword for encoding and decoding data stored to the data storage device using the channel circuit; and

determining the set of configuration settings comprises averaging the mutual information values for the series of symbol contexts in the codeword to evaluate use of the codeword in the set of configuration settings.

3. The system of claim 1 , wherein the at least one processor is further configured to determine the set of configuration settings by:

determining a range of bit sizes corresponding to a combination of bits per inch and tracks per inch on a non-volatile storage medium of the data storage device; and

determining the mutual information values for the series of symbol contexts on the data frame for a plurality of bit sizes in the range of bit sizes.

4. The system of claim 3 , wherein:

the at least one processor is further configured to determine the set of configuration settings by:

determining, based on the mutual information values for the series of symbol contexts and unmodulated data, first average mutual information values by bit size for the range of bit sizes;

determining, based on the mutual information values for the series of symbol contexts and optimally modulated data, second average mutual information values by bit size for the range of bit sizes; and

determining, based on comparing the first average mutual information values and the second average mutual information values, a selected bit size from the range of bit sizes; and

a bit per inch value and a track per inch value corresponding to the selected bit size are in the set of configuration settings.

5. The system of claim 4 , wherein:

the selected bit size and a corresponding mutual information value determine a target mutual information value for determining an error correction code rate and a modulation code;

the at least one processor is further configured to determine the set of configuration settings by:

determining, based on the target mutual information value, a selected error correction code rate; and

determining, based on the target mutual information value and the selected error correction code rate, a selected modulation code; and

the selected error correction code rate and the selected modulation code are in the set of configurations settings.

6. The system of claim 1 , wherein:

the at least one processor is further configured to determine the set of configuration settings by:

determining mutual information for bits across the data frame;

determining a mutual information dependency between error correction codes and modulation codes for the data frame based on mutual information for:

a number of bits having negative mutual information;

a number of bits having at least zero mutual information;

a number of error correction code redundancy bits for a candidate error correction code; and

a number of modulation code redundancy bits for a candidate modulation code;

determining a selected error correction code rate; and

determining, based on the selected error correction code rate and the mutual information dependency between error correction codes and modulation codes, a selected modulation code; and

the selected error correction code rate and the selected modulation code are in the set of configurations settings.

7. The system of claim 1 , wherein:

the at least one processor is further configured to determine the set of configuration settings by:

determining at least one modulation code;

dividing a codeword for the at least one modulation code into multi-bit symbols;

determining the mutual information values for symbol contexts corresponding to the multi-bit symbols of the codeword;

determining an average mutual information value for the data frame based on the mutual information values for the codeword; and

determining, based on average mutual information values for the at least one modulation code and no modulation code, a selected modulation code from the at least one modulation code; and

the selected modulation code is in the set of configuration settings.

8. The system of claim 7 , wherein:

the at least one modulation code comprises a plurality of modulation codes;

determining the selected modulation code comprises comparing average mutual information values for each modulation code of the plurality of modulation codes and an average mutual information value for no modulation code;

if the mutual information value for at least one symbol context is negative, the selected modulation code eliminates the at the least one symbol context; and

if the mutual information value for each symbol context is at least zero, the selected modulation code is no modulation code.

9. The system of claim 1 , further comprising:

a tester comprising:

the at least one memory;

the at least one processor; and

a storage device interface configured to communicate with the data storage device to:

write the known pattern to the data frame on a non-volatile storage medium of the data storage device;

read the known pattern from the data frame on the non-volatile storage medium; and

store the set of configuration settings to the data storage device for use in operating the channel circuit.

10. The system of claim 1 , further comprising:

the data storage device comprising:

the at least one memory;

the at least one processor;

a non-volatile storage medium configured to store user data; and

the channel circuit configured to encode user data and decode user data from the non-volatile storage medium using the set of configuration settings.

11. A method comprising:

determining a known pattern for a data frame written to a non-volatile storage medium of a data storage device;

determining a series of symbol contexts comprising different bit sequences for a selected multi-bit symbol length;

determining a mutual information value for each symbol context in the series of symbol contexts; and

determining, based on the mutual information values for the series of symbol contexts in the data frame, a set of configuration settings for a channel circuit of a data storage device; and

storing the set of configuration settings to the data storage device for use in operating the channel circuit.

12. The method of claim 11 , wherein:

the data frame is a codeword for encoding and decoding data stored to the data storage device using the channel circuit; and

determining the set of configuration settings comprises averaging the mutual information values for the series of symbol contexts in the codeword to evaluate use of the codeword in the set of configuration settings.

13. The method of claim 11 , wherein determining the set of configuration settings further comprises:

determining a range of bit sizes corresponding to a combination of bits per inch and tracks per inch on a non-volatile storage medium of the data storage device; and

determining the mutual information values for the series of symbol contexts on the data frame for a plurality of bit sizes in the range of bit sizes.

14. The method of claim 13 , wherein:

determining the set of configuration settings further comprises:

determining, based on the mutual information values for the series of symbol contexts and unmodulated data, first average mutual information values by bit size for the range of bit sizes;

determining, based on the mutual information values for the series of symbol contexts and optimally modulated data, second average mutual information values by bit size for the range of bit sizes; and

determining, based on comparing the first average mutual information values and the second average mutual information values, a selected bit size from the range of bit sizes; and

a bit per inch value and a track per inch value corresponding to the selected bit size are in the set of configuration settings.

15. The method of claim 14 , wherein:

the selected bit size and a corresponding mutual information value determine a target mutual information value for determining an error correction code rate and a modulation code;

determining the set of configuration settings further comprises:

determining, based on the target mutual information value, a selected error correction code rate; and

determining, based on the target mutual information value and the selected error correction code rate, a selected modulation code; and

the selected error correction code rate and the selected modulation code are in the set of configurations settings.

16. The method of claim 11 , wherein:

determining the set of configuration settings further comprises:

determining mutual information for bits across the data frame;

determining a mutual information dependency between error correction codes and modulation codes for the data frame based on mutual information for:

a number of bits having negative mutual information;

a number of bits having at least zero mutual information;

a number of error correction code redundancy bits for a candidate error correction code; and

a number of modulation code redundancy bits for a candidate modulation code;

determining a selected error correction code rate; and

determining, based on the selected error correction code rate and the mutual information dependency between error correction codes and modulation codes, a selected modulation code; and

the selected error correction code rate and the selected modulation code are in the set of configurations settings.

17. The method of claim 11 , wherein:

determining the set of configuration settings further comprises:

determining at least one modulation code;

dividing a codeword for the at least one modulation code into multi-bit symbols;

determining the mutual information values for symbol contexts corresponding to the multi-bit symbols of the codeword;

determining an average mutual information value for the data frame based on the mutual information values for the codeword; and

determining, based on average mutual information values for the at least one modulation code and no modulation code, a selected modulation code from the at least one modulation code; and

the selected modulation code is in the set of configuration settings.

18. The method of claim 17 , wherein:

the at least one modulation code comprises a plurality of modulation codes;

determining the selected modulation code comprises comparing average mutual information values for each modulation code of the plurality of modulation codes and an average mutual information value for no modulation code;

if the mutual information value for at least one symbol context is negative, the selected modulation code eliminates the at the least one symbol context; and

if the mutual information value for each symbol context is at least zero, the selected modulation code is no modulation code.

19. The method of claim 11 , further comprising, prior to determining the set of configuration settings:

writing the known pattern to the data frame on the non-volatile storage medium of the data storage device; and

reading the known pattern from the data frame on the non-volatile storage medium.

20. A system comprising:

at least one processor;

at least one memory;

means for determining a known pattern for a data frame written to a non-volatile storage medium of a data storage device;

means for determining a series of symbol contexts comprising different bit sequences for a selected multi-bit symbol length;

means for determining a mutual information value for each symbol context in the series of symbol contexts; and

means for determining, based on the mutual information values for the series of symbol contexts in the data frame, a set of configuration settings for a channel circuit of a data storage device; and

means for storing the set of configuration settings to the data storage device for use in operating the channel circuit.

Assignments (3)
PATENT COLLATERAL AGREEMENT (DDTL) Recorded Feb 22, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 066648/0206 →
PATENT COLLATERAL AGREEMENT (AR) Recorded Feb 22, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 066648/0284 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2023
From: OBOUKHOV, IOURI; GALBRAITH, RICHARD; GOODE, JONAS; RAVINDRAN, NIRANJAY; PARK, JIHOON
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 065785/0884 →
Continuity (2)
Provisional Application 63483030 · Feb 3, 2023
Related Publication 20240265948A1 · Aug 8, 2024
References Cited (41)
US 5488617A · Van Driel · 1996 [cited by applicant]
US 6654924B1 · Hassner · 2003 [cited by applicant]
US 7424077B2 · Yang · 2008 [cited by applicant]
US 8291304B2 · Yoshida · 2012 [cited by applicant]
US 8296637B1 · Varnica · 2012 [cited by applicant]
US 8743493B1 · Chang · 2014 [cited by applicant]
US 8760780B1 · Brooker · 2014 [cited by applicant]
US 8786968B2 · Qin · 2014 [cited by applicant]
US 8886991B2 · Zhang · 2014 [cited by examiner]
US 11438014B2 · Belzer · 2022 [cited by applicant]
US 20030041298A1 · Bruner · 2003 [cited by examiner]
US 20080104460A1 · Kanaoka · 2008 [cited by examiner]
US 20080168315A1 · Mead · 2008 [cited by examiner]
US 20090094499A1 · Deoka · 2009 [cited by applicant]
US 20090150748A1 · Egner · 2009 [cited by applicant]
US 20090158125A1 · Harada · 2009 [cited by applicant]
US 20100185906A1 · Rauschmayer · 2010 [cited by applicant]
US 20110085628A1 · Kaynak · 2011 [cited by applicant]
US 20140112076A1 · Ish-Shalom · 2014 [cited by examiner]
US 20140115381A1 · Chang · 2014 [cited by applicant]
US 20140359394A1 · Gasanov · 2014 [cited by applicant]
US 20150100855A1 · Cai · 2015 [cited by applicant]
US 20150149873A1 · Cai · 2015 [cited by applicant]
US 20150236717A1 · El-Khamy · 2015 [cited by applicant]
US 20150372785A1 · Visoz · 2015 [cited by examiner]
US 20160293205A1 · Jury · 2016 [cited by examiner]
US 20160321138A1 · Nakamura · 2016 [cited by applicant]
US 20180358988A1 · Sharon · 2018 [cited by examiner]
US 20200142642A1 · Billa · 2020 [cited by examiner]
US 20200389188A1 · Belzer · 2020 [cited by applicant]
US 20210135783A1 · Yang · 2021 [cited by examiner]
J. Wang, T. Courtade, H. Shankar and R. D. Wesel, “Soft Information for LDPC Decoding in Flash: Mutual-Information Optimized Quantization,” 2011 IEEE Global Telecommunications Conference—GLOBECOM 2011, Houston, TX, USA,… [cited by examiner]
Ebada et al., “Scattered Exit Charts for Finite Length LDPC Code Design,” Institute of Telecommunications, 2018, pp. 1-7. [cited by applicant]
Wu et al., “Channel Modeling, Signal Processing and Coding for Perpendicular Magnetic Recording”, ProQuest Dissertations And Theses, 2009, vol. 69-12, Sec. B, pp. 7723-7860. [cited by applicant]
Shi et al., “Adaptive Minimum-Bit-Error Rate PDNP Detection for Magnetic Recording,” ICC 2020—2020 IEEE International Conference on Communications (ICC), Jun. 2020, pp. 1-6. [cited by applicant]
Ryan et al., “Optimal Code Rates for the Lorentzian Channel: Shannon Codes and LDPC Codes.” IEEE Transactions on Magnetics, Nov. 2004, vol. 40, No. 6, pp. 3559-3565. [cited by applicant]
Moon et al., “Pattern-dependent noise prediction in signal-dependent noise. Selected Areas in Communications”, IEEE Journal on Selected Areas in Communications. vol. 19, pp. 730-743, May 1, 2001. [cited by applicant]
Wang et al., “Mutual-Information Optimized Quantization for LDPC Decoding of Accurately Modeled Flash Data”, 2012. [cited by applicant]
Li et al., “A Class of High-Rate, Low-Complexity, Well-Structured LDPC Codes from Combinatorial Designs and their Applications on ISI Channels,” Electrical Engineering Dept, Texas A&M University, p. 1-8. [cited by applicant]
Khittiwitchayakul et al., “Associated Sectors of Magnetic Recording Systems Using Spatially Coupled LDPC Codes” ECTI Transactions On Electrical Engineering, Electronics, And Communications vol. 20, No. 1, 2022. [cited by applicant]
Wadayama et al. “Evaluation of Symmetric Mutual Information of the Simplified TDMR Channel Model”, IEEEE, p. 1-6, 2015. [cited by applicant]