IP Library Granted Patent US 12,463,659
Granted Patent B2
US 12,463,659 · App. 17/218,030 · Granted Nov 4, 2025

Efficient encoding methods

Inventors: Peter Malcolm Lacey (Hertfordshire, GB); Simon Fenney (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
H03M7/02G06F13/1668
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,463,659
App. No.
17/218,030
Granted
Nov 4, 2025
Kind
B2
Abstract

A method of encoding data values comprises mapping each of a plurality of input values to one of a pre-defined set of codes based on a probability distribution of the input values. In various examples an input value may be mapped to a code having the same bit-length as the input value and in other examples, the code may be longer than the input value. In various examples, the input values may be grouped into data words and may additionally comprise one or more padding bits.

Claims (51)

1 . A method of reducing power consumption of read/write operations of a processor by encoding data values, the method comprising:

receiving at a computing entity a plurality of input data values, the input data values representing data that is to be processed by said processor;

mapping, by said computing entity, each input data value to one of a pre-defined set of codes based on a probability distribution of the input data values and a characteristic of the code of the pre-defined set of codes, wherein the characteristic of the code of the pre-defined set of codes comprises a number of bit flips within the code of the pre-defined set of codes;

outputting the codes corresponding to the received input data values; and

transmitting the outputted codes, optionally over a data bus, to a memory to be stored therein for processing by said processor.

2 . The method according to claim 1 , wherein, compared to an input value having a relatively low probability according to the probability distribution, an input value having a relatively high probability according to the probability distribution is mapped to a code of the pre-defined set of codes which has closer to a target number of bit flips within the code of the pre-defined set of codes.

3 . The method according to claim 1 , wherein mapping each input data value to one of a pre-defined set of codes based on a probability distribution of the input data values comprises, for an input data value:

determining a probability index for the input data value based on the probability distribution of the input data values; and

mapping the probability index to one of the pre-defined set of codes.

4 . The method according to claim 3 , wherein determining a probability index for the input data value based on the probability distribution of the input data values comprises one of:

determining a probability index for the input data value using a look-up table;

sign remapping the input data value;

determining a probability index for the input data value based on a length of the input data value or of a tail portion of the input data value;

determining a probability index for the input data value using a probability distribution builder, wherein the probability distribution builder accumulates frequencies for each possible value over a pre-defined number of input data values;

determining a probability index for the input data value using a probability distribution builder, wherein the probability distribution builder dynamically accumulates frequencies for each possible value and is updated for each input data value or group of input data values.

5 . The method of claim 1 , wherein each input data value is mapped to a code that comprises either: (i) the same number of bits as the input data value, or (ii) more bits than the input data value.

6 . The method according to claim 3 , wherein mapping the probability index to one of the pre-defined set of codes comprises:

mapping the probability index to one of the pre-defined set of codes using a look-up table.

7 . The method according to claim 3 , wherein mapping the probability index to one of the pre-defined set of codes comprises:

identifying a subset of the codes based on the probability index; and

identifying one of the subsets of the codes.

8 . The method according to claim 7 , identifying the subset of the codes based on the probability index comprises:

using an iterative method to identify the subset, each iteration comprising comparing the probability index to a binomial coefficient; and/or

identifying the subset using a look-up table.

9 . The method according to claim 7 , wherein identifying one of the subsets of the codes comprises identifying one of the subsets of the codes using a look-up table.

10 . The method according to claim 2 , further comprising, prior to determining a probability index for the input data value based on the probability distribution of the input data values:

decorrelating the input data values;

and wherein the probability indices are determined for decorrelated input data values based on the probability distribution of the decorrelated input data values.

11 . The method according to claim 1 , further comprising, prior to outputting the codes, for each code of the pre-defined set of codes:

modifying the code of the pre-defined set of codes by combining by, for each bit in the code of the pre-defined set of codes in turn, selecting a bit located B-bits to the left of the bit and combining the bit with the selected bit in an XOR function to generate a modified bit, wherein B is an integer.

12 . The method according to claim 11 , wherein:

B=1; or

B is a bit width of an external bus over which the codes are to be transmitted; or

B is a highest common factor of the bit widths of each of a plurality of external buses over which the codes are to be transmitted.

13 . The method according to claim 1 , wherein receiving the plurality of input data values comprises receiving a plurality of input words, each input word comprising one or more input data values and one or more padding bits and wherein outputting the codes corresponding to the received input data values comprises outputting a plurality of output words, each output word corresponding to an input word and comprising the codes corresponding to the one or more input data values in the input word.

14 . The method according to claim 13 , wherein at least one input data value in each input word is mapped to a code comprising more bits than the input data value.

15 . The method according to claim 1 , wherein:

the probability distribution of the input data values is non-uniform; or

the probability distribution of the input data values is uniform and wherein each input data value is mapped to a code comprising more bits than the input data value.

16 . A computing entity comprising an encoding hardware block reducing power consumption of read/write operations of a processor, the encoding hardware block comprising:

an input configured to receive a plurality of input data values, the input data values representing data that is to be processed by at least one processor;

mapping hardware logic arranged to map each input data value to one of a pre-defined set of codes based on a probability distribution of the input data values and a characteristic of the code of the pre-defined set of codes, wherein the characteristic of the code of the pre-defined set of codes comprises a number of bit flips within the code of the pre-defined set of codes; and

an output for outputting the codes corresponding to the received input data values and transmitting the outputted codes, optionally over a data bus, to a memory to be stored therein for processing by said processor.

17 . A method of reducing power consumption of read/write operations of a processor, comprising:

receiving at a computing entity a plurality of input codes, the input codes representing data that is to be processed by said processor;

mapping, by said computing entity, each input code to one of a pre-defined set of previously decoded values based on a probability distribution of the decoded values and a characteristic of the code of the pre-defined set of codes, wherein the characteristic of the code of the pre-defined set of codes comprises a number of bit flips within the code of the pre-defined set of codes;

outputting the decoded values corresponding to the received input codes; and

transmitting the decoded values, optionally over a data bus, to a memory to be stored therein for processing by said processor.

18 . The method according to claim 17 , wherein mapping each input code to one of a pre-defined set of previously decoded values based on a probability distribution of the decoded values comprises, for an input code:

mapping the input code to a probability index; and

mapping the probability index to one of the pre-defined set of previously decoded values based on the probability distribution of the decoded values.

Assignments (2)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2021
From: LACEY, PETER MALCOLM; FENNEY, SIMON
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 056100/0004 →
Priority Claims (1)
GB 2004591 · Mar 30, 2020 · national
Continuity (1)
Related Publication 20210359701A1 · Nov 18, 2021
References Cited (36)
US 4115768A · Eggenberger et al. · 1978 [cited by applicant]
US 5142167A · Temple et al. · 1992 [cited by applicant]
US 5481555A · Wade et al. · 1996 [cited by applicant]
US 5929793A · Choi · 1999 [cited by applicant]
US 5930272A · Thesling · 1999 [cited by examiner]
US 6218968B1 · Smeets · 2001 [cited by examiner]
US 7149955B1 · Sutardja et al. · 2006 [cited by applicant]
US 7501963B1 · Hollis · 2009 [cited by applicant]
US 8952834B1 · Cronie · 2015 [cited by applicant]
US 20070229320A1 · Bae et al. · 2007 [cited by applicant]
US 20070280031A1 · Maejima et al. · 2007 [cited by applicant]
US 20080030383A1 · Cameron · 2008 [cited by applicant]
US 20090179782A1 · Hollis · 2009 [cited by applicant]
US 20090193319A1 · Shen et al. · 2009 [cited by applicant]
US 20110019765A1 · Varteva · 2011 [cited by applicant]
US 20110025533A1 · Abbasfar · 2011 [cited by applicant]
US 20140210652A1 · Bartnik · 2014 [cited by examiner]
US 20160179859A1 · Bauchot · 2016 [cited by examiner]
US 20180357188A1 · Brief · 2018 [cited by applicant]
US 20190294497A1 · Lien · 2019 [cited by examiner]
US 20210351786A1 · Lacey et al. · 2021 [cited by applicant]
CN 102939719A · 2013 [cited by applicant]
CN 103748886A · 2014 [cited by examiner]
CN 104081772B · 2018 [cited by examiner]
CN 112085252A · 2020 [cited by examiner]
DE 3442477A1 · 1986 [cited by applicant]
EP 3889792A1 · 2021 [cited by applicant]
WO 2009134568A2 · 2009 [cited by applicant]
WO 2011090523A1 · 2011 [cited by applicant]
WO 2014205175A2 · 2014 [cited by applicant]
Seyedzadeh, Seyed Mohammad and et al. “Improving bit flip reduction for biased and random data.” IEEE Transactions on Computers 65, No. 11 (2016): 3345-3356 (Year: 2016). [cited by examiner]
Seol, Hoseok, and et al. “Energy efficient data encoding in DRAM channels exploiting data value similarity.” ACM SIGARCH Computer Architecture News 44, No. 3 (2016): 719-730 (Year: 2016). [cited by examiner]
Jacobvitz, Adam Nand et al. “Coset coding to extend the lifetime of memory.” In 2013 IEEE 19th International Symposium on High Performance Computer Architecture (HPCA), pp. 222-233. IEEE, 2013 (Year: 2013). [cited by examiner]
Han, Miseon and et al. “Content-aware bit shuffling for maximizing PCM endurance.” ACM Transactions on Design Automation of Electronic Systems (TODAES) 22, No. 3 (2017): 1-26 (Year: 2017). [cited by examiner]
Benini, Luca, and et al. “Memory energy minimization by data compression: algorithms, architectures and implementation.” IEEE Transactions on Very Large Scale Integration (VLSI) Systems 12, No. 3 (2004): 255-268 (Year: … [cited by examiner]
Ghose et al; “What Your DRAM Power Models Are Not Telling You: Lessons from a Detailed Experimental Study”; in Proceedings of the ACM on Measurement and Analysis of Computing Systems (POMACS); vol. 2; No. 3; Dec. 2018; … [cited by applicant]