IP Library › Granted Patent US 12,360,845
Granted Patent B2
US 12,360,845 · App. 17/847,377 · Granted Jul 15, 2025

Systems and methods for multi-use error correcting codes

Inventors: Lakshminarasimhan Sethumadhavan (New York, NY); Evgeny Manzhosov (New York, NY)
Assignee: The Trustees of Columbia University in the City of New York
G06F11/1044G06F3/0619G06F3/0655G06F3/0679
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,360,845
App. No.
17/847,377
Granted
Jul 15, 2025
Kind
B2
Abstract

Disclosed are methods, systems, devices, circuits. and other implementations, including a method for error identification and correction that includes obtaining from a memory device coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device, and performing a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion. The method further includes determining whether the coded input data includes a corrupted portion based on a value of the remainder portion.

Claims (122)

1. A method for error identification and correction comprising:

obtaining from a memory device coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device;

performing a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion; and

determining whether the coded input data includes a corrupted portion based on a value of the remainder portion;

wherein the pre-determined multiplier is derived by:

identifying symbol representations for a code set comprising a plurality of code symbols;

computing error values for each possible representation error for each of the plurality of code symbols; and

determining the pre-determined multiplier for which each of a plurality of resultant remainder values, resulting from the modulo operation applied to the computed error values, is unique.

2. The method of claim 1 , further comprising:

correcting the decoded data element, in response to a determination that the remainder portion has a nonzero value, to determine a corrected data element.

3. The method of claim 2 , wherein correcting the decoded data element comprises one or more of:

correcting, based on the remainder portion, the decoded data that was modified at an earlier time instance as a result of a multi-bit error that occurred to an original coded data stored at the memory device; and

searching an error correction table comprising a plurality of entries for different remainder values associated with the pre-determined multiplier, wherein each of the plurality of entries includes a remainder field with a respective remainder value, an error field with a respective error value, and a sign field with a sign value indicating the sign of the error value, and in response to matching the nonzero remainder to the remainder value for one of the plurality of entries, combining the sign value for the one of plurality of entries with a corresponding error value for the one of the plurality of entries to yield a signed error value, and adding the signed error value to the decoded data element to yield a corrected data value.

4. The method of claim 1 , wherein performing the modulo operation comprises:

multiplying the coded input data by an inverse multiplier, determined from the pre-determined multiplier, to derive the resultant decoded data element.

5. The method of claim 4 , wherein multiplying the coded input data by the inverse multiplier comprises:

applying a Booth encoder to generate partial products for a multiplication operation performed on the coded input data and the inverse multiplier;

processing the generated partial products with a Wallace tree procedure to perform summation of the partial products to derive summed partial products; and

adding the summed partial products to derive the resultant decoded data element.

6. The method of claim 1 , wherein identifying symbol representations comprises:

shuffling one or more portions of a first symbol representation with another one or more portions of a second symbol representation such that a range of error values resulting from the shuffling is smaller than an initial error range for an initial symbol representation for the code set.

7. The method of claim 6 , further comprising:

assigning to at least two of the computed error values a single remainder value, wherein each of the at least two of the computed error values results from an error associated with one or more particular bit locations of at least one of the symbol representations for the code set.

8. The method of claim 1 , further comprising:

dividing at least one of the symbol representations into multiple smaller virtual groups of symbol representations; and

applying one or more symbol optimization techniques to the each of the multiple smaller virtual groups of symbol representations to determine the pre-determined multiplier.

9. The method of claim 1 , wherein the coded input data previously encoded and stored in the memory device includes one or more bits not required for decoding the coded input data, wherein the one or more bits are utilized for non-coding functionality, and wherein the non-coding functionality includes one or more of: memory tagging, or rowhammer detection.

10. A computing system comprising:

a memory device; and

a controller circuit in communication with the memory device, the controller circuit configured to:

obtain, from the memory device, coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device;

perform a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion; and

determine whether the coded input data includes a corrupted portion based on a value of the remainder portion;

wherein the computing system is further configured to derive the pre-determined multiplier, including to:

identify symbol representations for a code set comprising a plurality of code symbols;

compute error values for each possible representation error for each of the plurality of code symbols; and

determine the pre-determined multiplier for which each of a plurality of resultant remainder values, resulting from the modulo operation applied to the computed error values, is unique.

11. The system of claim 10 , wherein the controller is further configured to:

correct the decoded data element, in response to a determination that the remainder portion has a nonzero value, to determine a corrected data element.

12. The system of claim 10 , wherein the controller configured to perform the modulo operation is configured to:

multiply the coded input data by an inverse multiplier, determined from the pre-determined multiplier, to derive the resultant decoded data element.

13. Non-transitory computer readable media comprising computer instructions executable on a processor-based device to:

obtain from a memory device coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device;

perform a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion; and

determine whether the coded input data includes a corrupted portion based on a value of the remainder portion;

wherein the computer instruction comprise one or more instructions to cause the processor-based device to derive the pre-determined multiplier, including to:

identify symbol representations for a code set comprising a plurality of code symbols;

compute error values for each possible representation error for each of the plurality of code symbols; and

determine the pre-determined multiplier for which each of a plurality of resultant remainder values, resulting from the modulo operation applied to the computed error values, is unique.

14. A method for error identification and correction comprising:

obtaining from a memory device coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device;

performing a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion;

determining whether the coded input data includes a corrupted portion based on a value of the remainder portion; and

correcting the decoded data element, in response to a determination that the remainder portion has a nonzero value, to determine a corrected data element;

wherein correcting the decoded data element comprises one or more of:

correcting, based on the remainder portion, the decoded data that was modified at an earlier time instance as a result of a multi-bit error that occurred to an original coded data stored at the memory device; and

searching an error correction table comprising a plurality of entries for different remainder values associated with the pre-determined multiplier, wherein each of the plurality of entries includes a remainder field with a respective remainder value, an error field with a respective error value, and a sign field with a sign value indicating the sign of the error value, and in response to matching the nonzero remainder to the remainder value for one of the plurality of entries, combining the sign value for the one of plurality of entries with a corresponding error value for the one of the plurality of entries to yield a signed error value, and adding the signed error value to the decoded data element to yield a corrected data value.

15. The method of claim 14 , wherein performing the modulo operation comprises:

multiplying the coded input data by an inverse multiplier, determined from the pre-determined multiplier, to derive the resultant decoded data element, including:

applying a Booth encoder to generate partial products for a multiplication operation performed on the coded input data and the inverse multiplier;

processing the generated partial products with a Wallace tree procedure to perform summation of the partial products to derive summed partial products; and

adding the summed partial products to derive the resultant decoded data element.

16. The method of claim 14 , wherein the coded input data previously encoded and stored in the memory device includes one or more bits not required for decoding the coded input data, and wherein the one or more bits are utilized for non-coding functionality.

17. The method of claim 16 , wherein the non-coding functionality includes one or more of: memory tagging, or rowhammer detection.

18. A computing system comprising:

a memory device; and

a controller circuit in communication with the memory device, the controller circuit configured to:

obtain, from the memory device, coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device;

perform a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion;

determine whether the coded input data includes a corrupted portion based on a value of the remainder portion; and

correct the decoded data element, in response to a determination that the remainder portion has a nonzero value, to determine a corrected data element;

wherein the controller configured to correct the decoded data element is configured to perform one or more of:

correct, based on the remainder portion, the decoded data that was modified at an earlier time instance as a result of a multi-bit error that occurred to an original coded data stored at the memory device; and

search an error correction table comprising a plurality of entries for different remainder values associated with the pre-determined multiplier, wherein each of the plurality of entries includes a remainder field with a respective remainder value, an error field with a respective error value, and a sign field with a sign value indicating the sign of the error value, and combine, in response to matching the nonzero remainder to the remainder value for one of the plurality of entries, the sign value for the one of plurality of entries with a corresponding error value for the one of the plurality of entries to yield a signed error value, and adding the signed error value to the decoded data element to yield a corrected data value.

19. The system of claim 18 , wherein the controller configured to perform the modulo operation is configured to:

multiply the coded input data by an inverse multiplier, determined from the pre-determined multiplier, to derive the resultant decoded data element, including to:

apply a Booth encoder to generate partial products for a multiplication operation performed on the coded input data and the inverse multiplier;

process the generated partial products with a Wallace tree procedure to perform summation of the partial products to derive summed partial products; and

add the summed partial products to derive the resultant decoded data element.

20. The system of claim 18 , wherein the computing system is further configured to derive the pre-determined multiplier, including to:

identify symbol representations for a code set comprising a plurality of code symbols;

compute error values for each possible representation error for each of the plurality of code symbols; and

determine the pre-determined multiplier for which each of a plurality of resultant remainder values, resulting from the modulo operation applied to the computed error values, is unique.

21. The system of claim 18 , wherein the coded input data previously encoded and stored in the memory device includes one or more bits not required for decoding the coded input data, wherein the one or more bits are utilized for non-coding functionality, and wherein the non-coding functionality includes one or more of: memory tagging, or rowhammer detection.

22. A method for error identification and correction comprising:

obtaining from a memory device coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device;

performing a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion; and

determining whether the coded input data includes a corrupted portion based on a value of the remainder portion;

wherein the coded input data previously encoded and stored in the memory device includes one or more bits not required for decoding the coded input data, and wherein the one or more bits are utilized for non-coding functionality.

23. The method of claim 22 , wherein the non-coding functionality includes one or more of: memory tagging, or rowhammer detection.

24. The method of claim 22 , wherein performing the modulo operation comprises:

multiplying the coded input data by an inverse multiplier, determined from the pre-determined multiplier, to derive the resultant decoded data element.

25. The method of claim 24 , wherein multiplying the coded input data by the inverse multiplier comprises:

applying a Booth encoder to generate partial products for a multiplication operation performed on the coded input data and the inverse multiplier;

processing the generated partial products with a Wallace tree procedure to perform summation of the partial products to derive summed partial products; and

adding the summed partial products to derive the resultant decoded data element.

26. A computing system comprising:

a memory device; and

a controller circuit in communication with the memory device, the controller circuit configured to:

obtain, from the memory device, coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device;

perform a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion; and

determine whether the coded input data includes a corrupted portion based on a value of the remainder portion;

wherein the coded input data previously encoded and stored in the memory device includes one or more bits not required for decoding the coded input data.

27. The system of claim 26 , wherein the one or more bits are utilized for non-coding functionality, wherein the non-coding functionality includes one or more of: memory tagging, or rowhammer detection.

28. The system of claim 26 , wherein the controller configured to perform the modulo operation is configured to:

multiply the coded input data by an inverse multiplier, determined from the pre-determined multiplier, to derive the resultant decoded data element.

29. The system of claim 28 , wherein the controller configured to multiply the coded input data by the inverse multiplier is configured to:

apply a Booth encoder to generate partial products for a multiplication operation performed on the coded input data and the inverse multiplier;

process the generated partial products with a Wallace tree procedure to perform summation of the partial products to derive summed partial products; and

add the summed partial products to derive the resultant decoded data element.

30. A computing system comprising:

a memory device; and

a controller circuit in communication with the memory device, the controller circuit configured to:

obtain, from the memory device, coded input data, the coded input data previously encoded by multiplying a source data element by a pre-determined multiplier, and stored in the memory device;

perform a decoding operation on the coded input data obtained from the memory device, with the decoding operation including at least a modulo operation, to derive a resultant decoded data element and a remainder portion; and

determine whether the coded input data includes a corrupted portion based on a value of the remainder portion;

wherein the controller configured to perform the modulo operation is configured to:

multiply the coded input data by an inverse multiplier, determined from the pre-determined multiplier, to derive the resultant decoded data element.

31. The system of claim 30 , wherein the controller configured to multiply the coded input data by the inverse multiplier is configured to:

apply a Booth encoder to generate partial products for a multiplication operation performed on the coded input data and the inverse multiplier;

process the generated partial products with a Wallace tree procedure to perform summation of the partial products to derive summed partial products; and

add the summed partial products to derive the resultant decoded data element.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2023
From: SETHUMADHAVAN, LAKSHMINARASIMHAN; MANZHOSOV, EVGENY
To: THE TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK
Reel/Frame 064017/0530 →
Continuity (2)
Provisional Application 63215154 · Jun 25, 2021
Related Publication 20220413959A1 · Dec 29, 2022
References Cited (94)
US 20140122964A1 · Chen · 2014 [cited by applicant]
US 20140215289A1 · Trezise et al. · 2014 [cited by applicant]
US 20140229786A1 · Poolakkaparambil · 2014 [cited by examiner]
US 20160315635A1 · Cai et al. · 2016 [cited by applicant]
US 20180034483A1 · Graumann · 2018 [cited by examiner]
US 20190253078A1 · Goettfert · 2019 [cited by examiner]
US 20190356331A1 · Kim et al. · 2019 [cited by applicant]
US 20200081776A1 · Briat et al. · 2020 [cited by applicant]
US 20220091936A1 · La Fetra · 2022 [cited by examiner]
Alam et al., “Compression with Multi-ECC: Enhanced Error Resiliency for Magnetic Memories,” MEMSYS'19 Proceedings of the International Symposium on Memory Systems, pp. 85-100, Sep. 2019. [cited by applicant]
Avizienis et al., “Arithmetic Error Codes: Cost and Effectiveness Studies for Application in Digital System Design,” IEEE Transactions on Computers, vol. C-20, Issue 11, pp. 1322-1331, Nov. 1971. [cited by applicant]
Avizienis et al., “The STAR (Self-Testing And Repairing) Computer: An Investigation of the Theory and Practice of Fault-Tolerant Computer Design,” IEEE Transactions on Computers, vol. C-20, No. 11, pp. 1312-1321, Nov. 1… [cited by applicant]
Barrett, “Implementing the Rivest Shamir and Adleman Public Key Encryption Algorithm on a Standard Digital Signal Processor,” Conference on the Theory and Application of Cryptographic Techniques, pp. 311-323, 1986. [cited by applicant]
Barrows, “A New Method for Constructing Multiple Error Correcting Linear Residue Codes,” University of Illinois, Thesis, 1966. [cited by applicant]
Bernstein et al., “Linear Codes for Single Error Correction in Symmetric and Asymmetric Computational Processes,” IRE Transactions on Information Therapy, vol. 8, No. 1, pp. 29-34, Jan. 1962. [cited by applicant]
Binkert et al., “The gem5 simulator,” ACM SIGARCH Computer Architecture News, vol. 39, No. 2, pp. 1-7, 2011. [cited by applicant]
Bose et al., “On A Class of Error Correcting Binary Group Codes,” Information and Control, vol. 3, pp. 68-79, Mar. 1960. [cited by applicant]
Brown, “Error Detecting and Correcting Binary Codes for Arithmetic Operations,” IRE Transactions on Electronic Computers, vol. EC-9, Issue 3, pp. 333-337, Sep. 1960. [cited by applicant]
Bucek et al., “Spec CPU2017—Next-Generation Compute Benchmark ,” Companion of the 2018 ACM/SPEC International Conference on Performance Engineering, pp. 41-42, Apr. 2018. [cited by applicant]
Cassagne et al., “MIPP: a Portable C++ SIMD Wrapper and its use for Error Correction Coding in 5G Standard,” WPMVP'18 Proceedings of the 6th Workshop on Programming Models for SIMD/Vector Processing, Article No. 2, Feb.… [cited by applicant]
Chen et al., “CARE: Coordinated Augmentation for Elastic Resilience on DRAM Errors in Data Centers,” 2021 IEEE International Symposium on High-Performance Computer Architecture, pp. 553-544, 2021. [cited by applicant]
Chen et al., “Error-Correcting Codes for Semiconductor Memory Applications: A State-of-the-Art Review,” IBM Journal of Research and Development, vol. 28, No. 2, pp. 124-132, Mar. 1984. [cited by applicant]
Chen et al., “MemGuard: A low cost and energy efficient design to support and enhance memory system reliability,” 2014 ACM/IEEE 41st International Symposium on Computer Architecture, pp. 49-60, 2014. [cited by applicant]
Chien et al., “On linear residue codes for burst-error correction,” IEEE Transactions on Information Theory, vol. 10, No. 2, pp. 127-133, Apr. 1964. [cited by applicant]
Cojocar et al., “Exploiting Correcting Codes: On the Effectiveness of ECC Memory Against Rowhammer Attacks,” 2019 IEEE Symposium on Security and Privacy, pp. 55-71, 2019. [cited by applicant]
Costan et al., “Intel SGX Explained,” IACR Cryptol. ePrint Arch., vol. 2016, No. 86, pp. 1-118, 2016. [cited by applicant]
Dawe et al., “Thermoelectric Outer Planets Spacecraft (TOPS) Electronic Packaging and Cabling Development Summary Report,” National Aeronautics and Space Administration, Dec. 1974. [cited by applicant]
Erozan et al., “An EG-LDPC Based 2-Dimensional Error Correcting Code for Mitigating MBUs of SRAM Memories,” FPGAworld '15 Proceedings of the 12th FPGAworld Conference, pp. 21-26, Sep. 2015. [cited by applicant]
Fog, “4. Instruction tables, Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs” Technical University of Denmark, 2022. [cited by applicant]
Forin, “Vital Coded Microprocessor Principles and Application for Various Transit Systems,” IFAC Proceedings vols. vol. 23, Issue 2, pp. 79-84, Sep. 1990. [cited by applicant]
Frey, “Safety of Computer Control Systems,” SAFECOMP'92: Computer Systems in Safety-Critical Applications, Elsevier, 2014. [cited by applicant]
Fruehe, “AMD EPYC Brings New RAS Capability, ” Moor Insights and Strategy, Jun. 2017. [cited by applicant]
Gong et al., “CLEAN-ECC: High Reliability ECC for Adaptive Granularity Memory System,” 48th Annual IEEE/ACM International Symposium on Microarchitecture, pp. 611-622, 2015. [cited by applicant]
Gong et al., “DUO: Exposing On-chip Redundancy to Rank-Level ECC for High Reliability,” 2018 IEEE International Symposium on High Performance Computer Architecture, pp. 683-695, 2018. [cited by applicant]
Granlund et al., “Division by Invariant Integers using Multiplication,” Proceedings of the ACM SIGPLAN 1994 Conference on Programing Language Design and Implementation, pp. 61-72, 1994. [cited by applicant]
Gumpertz, “Combining Tags with Error Codes,” Proceedings of the 10th Annual International Symposium on Computer Architecture, pp. 160-165, 1983. [cited by applicant]
Hamming, “:Error detecting and error correcting codes,” The Bell System Technical Journal, vol. 29, Issue 2, pp. 147-160, Apr. 1950. [cited by applicant]
Henderson, “POWER8® Processor-Based Systems RAS Introduction to Power Systems™ Reliability, Availability, and Serviceability,” IBM, Jan. 2016. [cited by applicant]
Henderson, “Residue Class Error Checking Codes,” Proceedings of the 1961 16th ACM National Meeting, pp. 132.101-132.104, 1961. [cited by applicant]
Hsiao et al., “Application of Error-Correcting Codes in Computer Reliability Studies,” IEEE Transactions on Reliability, vol. R-18, No. 3, pp. 108-118, 1969. [cited by applicant]
Hsiao, “A Class of Optimal Minimum Odd-weight-column SEC-DED Codes,” IBM Journal of Research and Development, vol. 14, No. 4, pp. 395-401, 1970. [cited by applicant]
Huang et al., “IVEC: Off-Chip Memory Integrity Protection for Both Security and Reliability,” ACM SIGARCH Computer Architecture News, vol. 38, No. 3, pp. 395-406, 2010. [cited by applicant]
Jeong et al., “PAIR: Pin-aligned In-DRAM ECC architecture using expandability of Reed-Solomon code,” 2020 57th ACM/IEEE Design Automation Conference, pp. 1-6, 2020. [cited by applicant]
Jian et al., “Low-power, Low-storage-overhead Chipkill Correct via Multi-line Error Correction,” Proceedings of the International Conference on High Performance Computing, Networking, Storage, and Analysis, 2013. [cited by applicant]
Jiang, “Machine Learning and Algorithmic Techniques for Error Correction,” 2018 Information Theory and Applications Workshop (ITA), Feb. 2018. [cited by applicant]
Kaplan et al., “AMD Memory Encryption,” 25th USENIX Security Symposium, Aug. 2016. [cited by applicant]
Karpovsky et al., “Robust Protection against Fault-Injection Attacks on Smart Cards Implementing the Advanced Encryption Standard,” International Conference on Dependable Systems and Networks, pp. 93-101, 2004. [cited by applicant]
Kim et al., “All-Inclusive ECC: Thorough End-to-End Protection for Reliable Computer Memory,” 2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture, pp. 622-633, 2016. [cited by applicant]
Kim et al., “Bamboo ECC: Strong, safe, and flexible codes for reliable computer memory,” IEEE 21st International Symposium on High Performance Computer Architecture (HPCA), Feb. 2015. [cited by applicant]
Kim et al., “Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors,” 2014 ACM/IEEE 41st International Symposium on Computer Architecture, pp. 361-372, 2014. [cited by applicant]
Kim et al., “Frugal ECC: Efficient and Versatile Memory Error Protection through Fine-Grained Compression,” Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, A… [cited by applicant]
Kraft et al., “Improving the error behavior of DRAM by exploiting its Z-channel property,” 2018 Design, Automation Test in Europe Conference Exhibition, pp. 1492-1495, 2018/. [cited by applicant]
Lee et al., “Hardware Architecture and Software Stack for PIM Based on Commercial DRAM Technology : Industrial Product,” 2021 ACM/IEEE 48th Annual International Symposium on Computer Architecture, pp. 43-56, 2021. [cited by applicant]
Lemire et al., “Faster Remainder by Direct Computation Applications to Compilers and Software Libraries,” Software: Practice and Experience, vol. 49, No. 6, pp. 953-970, 2019. [cited by applicant]
Liljestrand et al., “PAC it up: Towards Pointer Integrity using ARM Pointer Authentication,” 28th USENIX Security Symposium, pp. 177-194, 2019. [cited by applicant]
Luby et al., “Mobile data broadcasting over MBMS tradeoffs in forward error correction,” MUM'06 Proceedings of the 5th International Conference on Mobile and Ubiquitous Multmedia, p. 10-es, Dec. 2006. [cited by applicant]
Madalin et al., “Unidirectional error detection, localization and correction for DRAMs: Application to on-line DRAM repair strategies,” 2011 IEEE 17th International On-Line Testing Symposium, pp. 264-269, 2011. [cited by applicant]
Magalhaes et al., “PHICC: an error correction code for memory devices,” SBCCI'19 Proceedings of the 32nd Symposium on Integrated Circuits and Systems Design, Article No. 1, Aug. 2019. [cited by applicant]
Mandelbaum,“Arithmetic codes with large distance,” IEEE Transactions on Information Theory, vol. 13, No. 2, pp. 237-242, Apr. 1967. [cited by applicant]
Martins et al., “Open Cell Library in 15nm FreePDK Technology,” 2015 Symposium on International Physical Design, pp. 171-178, 2015. [cited by applicant]
Mukherjee, “Architecture Design for Soft Errors,” Morgan Kaufman Publishers, 2008. [cited by applicant]
Nair et al., “XED: Exposing On-Die Error Detection Information for Strong Memory Reliability,” 2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture, pp. 341-353, 2016. [cited by applicant]
Oh et al., “A 3.2 Gbps/pin 8 Gbit 1.0 V LPDDR4 SDRAM With Integrated ECC Engine for Sub-1 V DRAM Core Operation,” IEEE Journal of Solid-State Circuits, vol. 50, No. 1, pp. 178-190, 2014. [cited by applicant]
Palframan et al., “COP: To Compress and Protect Main Memory,” ACM/IEEE 42nd Annual International Symposium on Computer Architecture, pp. 682-693, 2015. [cited by applicant]
Park et al., “Exploiting error-correcting codes for cache minimum supply voltage reduction while maintaining coverage for radiation-induced soft errors,” Proceedings of the IEEE 2014 Custom Integrated Circuits Conferenc… [cited by applicant]
Patel et al., “Bit-Exact ECC Recovery (BEER): Determining DRAM On-Die ECC Functions by Exploiting DRAM Data Retention Characteristics,” 53rd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO), pp. 282-… [cited by applicant]
Qi et al., “CDF-LDPC: A New Error Correction Method for SSD to Improve the Read Performance,” ACM Transactions on Storage, vol. 13, Issue 1, Article 7, Feb. 2017. [cited by applicant]
Qureshi et al., “Operating SECDED-based caches at ultra-low voltage with FLAIR,” 43rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN), pp. 1-11, 2013. [cited by applicant]
Reed,“Polynomial Codes Over Certain Finite Fields,” vol. 8, No. 2, pp. 300-304, Jun. 1960. [cited by applicant]
Saileshwar et al., “SYNERGY: Rethinking Secure-Memory Design for Error-Correcting Memories,” 2018 IEEE International Symposium on High Performance Computer Architecture, pp. 454-465, 2018. [cited by applicant]
Sasaki et al., “Practical Byte-Granular Memory Blacklisting using Califorms,” Proceedings of the 52nd Annual IEEE/ACM International Symposium on Microarchitecture, pp. 558-571, 2019. [cited by applicant]
Sazeides et al., “Implicit-Storing and Redundant-Encoding-of-Attribute Information in Error-Correction-Codes,” 46th Annual IEEE/ACM International Symposium on Microarchitecture, pp. 160-171, 2013. [cited by applicant]
Shafiee et al., “MemZip: Exploring Unconventional Benefits from Memory Compression,” IEEE 20th International Symposium on High Performance Computer Architecture, pp. 638-649, 2014. [cited by applicant]
Son et al., “CiDRA: A Cache-inspired DRAM Resilience Architecture,” 2015 IEEE 21st International Symposium on High Performance Computer Architecture, pp. 502-513, 2015. [cited by applicant]
Stein, “Prime-residue error correcting codes (Corresp.),” IEEE Transactions on Information Theory, vol. 10, No. 2, p. 170, Apr. 1964. [cited by applicant]
Stephan et al., “Optimizing Memory Performance of Intel Xeon E7 v2-based Servers,” Lenovo Press, 2013. [cited by applicant]
Sullivan, “Application of Residue Codes for Error Detection in Modern Computers,” Master's thesis, The University of Texas at Austin, Dec. 2010. [cited by applicant]
Taassori et al., “Compact Leakage-Free Support for Integrity and Reliability,” Proceedings of the ACM/IEEE 47th annual International Symposium on Computer Architecture, pp. 735-748, 2020. [cited by applicant]
Udipi et al., “LOT-ECC: LOcalized and Tiered Reliability Mechanisms for Commodity Memory Systems,” 2012 39th Annual International Symposium on Computer Architecture, pp. 285-296, 2012. [cited by applicant]
Unknown, “15nm Open-Cell Library and 45nm FreePDK,” I.Silicon Integration Initiative, https://si2.org/open-cell-library, 2024. [cited by applicant]
Unknown, “2Gb (x16 x 1 channel) Mobile LPDDR4/LPDDR4X with ECC,” Integrated Silicon Solution, Inc., 2020. [cited by applicant]
Unknown, “Armv8.5-A Memory Tagging Extension,” ARM, White paper, 2018. [cited by applicant]
Unknown, “BIOS and Kernel Developer's Guide (BKDC) for AMD Family 15H Models 00h-0Fh Processors,” Advanced Micro Devices, Jan. 2013. [cited by applicant]
Unknown, “JES79-5 SDRAM,” JEDEC Solid State Technology Assoc., 2020. [cited by applicant]
Unknown, “Memory RAS Configuration—User's Guide,” SuperMicro, Inc., Revision 1, 2017. [cited by applicant]
Unknown, “POWER9 Processor's User's Manual,” IBM, Oct. 2019. [cited by applicant]
Unknown, “Quad-Core Intel® Xeon® Processor 5400 Series,” Intel Inc., Aug. 2008. [cited by applicant]
Wallace, “A Suggestion for a Fast Multiplier,” IEEE Transactions on Electronic Computers, vol. EC-13, No. 1, pp. 14-17, 1964. [cited by applicant]
Wilkerson, “Trading off Cache Capacity for Reliability to Enable Low Voltage Operation,” 2008 International Symposium on Computer Architecture, pp. 203-214, Jun. 2008. [cited by applicant]
Woodruff et al., “The CHERI capability model: Revisiting RISC in an age of risk,” in Proceeding of the 41st Annual International Symposium on Computer Architecture (ISCA),pp. 457-468, 2014. [cited by applicant]
Yim, “The Rowhammer Attack Injection Methodology,” IEEE 35th Symposium on Reliable Distributed Systems, pp. 1-10, 2016. [cited by applicant]
Yoon et al., “Memory mapped ECC: low-cost error protecto8infor last level caches,” ACM SIGARCH Computer Architecture News, vol. 37, No. 3, pp. 116-127, Jun. 2009. [cited by applicant]
Yoon et al., “Virtualized and flexible ECC for main memory,” ASPLOS Xv: Proceedings of the fifteenth International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 397-408, Mar. 2… [cited by applicant]
Ziad et al., “ZeRØ: Zero-Overhead Resilient Operation Under Pointer Integrity Attacks,” 2021 ACM/IEEE 48th Annual International Symposium on Computer Architecture, pp. 999-1012, 2021. [cited by applicant]
Cited By (1)
US 12,633,370