Scheme for improved data bus inversion encoding

The DBI encoding scheme optimizes power consumption by considering the hamming distance between current and next binary strings, addressing the inefficiencies of existing techniques and achieving better power savings.

WO2026085750A1PCT designated stage Publication Date: 2026-04-30QUALCOMM INC +4
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/126643
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-10-23
Publication Date
2026-04-30

AI Technical Summary

Technical Problem

Existing data bus inversion (DBI) encoding techniques do not consider the data transition between the current and next binary string values when deciding whether to toggle the next value, leading to additional power consumption.

Method used

The proposed DBI encoding scheme considers the hamming distance between the current and next binary strings to determine whether to toggle the next value, minimizing power consumption by optimizing transitions.

Benefits of technology

The scheme provides additional power savings compared to existing DBI encoding schemes by effectively reducing power consumption during data transfers on data buses.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024126643_30042026_PF_FP_ABST
    Figure CN2024126643_30042026_PF_FP_ABST
Patent Text Reader

Abstract

The present disclosure is directed to a method for data bus inversion. The method includes determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string. The method includes determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string. The method includes transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.
Need to check novelty before this filing date? Find Prior Art

Description

SCHEME FOR IMPROVED DATA BUS INVERSION ENCODING

[0001] Aspects of the present disclosure generally relate to data buses and, more particularly, to a scheme for improved data bus inversion (DBI) encoding.BACKGROUND

[0002] Data buses may be used to transfer data between two different devices. For example, a data bus may be used to transfer data between on-chip memory (e.g., static random access memory included on a system-on-chip (SoC) ) and off-chip memory (e.g., dynamic random access memory) . Moving data between the on-chip memory and the off-chip memory may consume different amounts of power. For example, reading data from the off-chip memory may consume a greater amount of power than reading data from the on-chip memory. DBI encoding techniques may be used to reduce the amount of power associated with moving data between the SoC and the off-chip memory or another SoC.

[0003] BRIEF SUMMARY

[0004] In one aspect, a method for data bus inversion generally includes: determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string; determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string; and transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.

[0005] In another aspect an apparatus is provided. The apparatus includes a data bus and a bus controller. The bus controller is configured to: determine a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance  between the first binary string and the second binary string; determine a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string; and provide one or more control signals associated with transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.

[0006] In yet another aspect, an apparatus is provided. The apparatus includes: means for determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string; means for determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string; and means for transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.

[0007] The following description and the related drawings set forth in detail certain illustrative features of one or more aspects.BRIEF DESCRIPTION OF THE DRAWINGS

[0008] The appended figures depict certain features of one or more aspects of the present disclosure and are therefore not to be considered limiting of the scope of this disclosure.

[0009] FIG. 1 depicts a data bus for transferring data between a first device and a second device according to some aspects of the present disclosure.

[0010] FIG. 2A depicts an off-chip interconnect associated with a data bus according to some aspects of the present disclosure.

[0011] FIG. 2B depicts an on-chip interconnect associated with a data bus according to some aspects of the present disclosure.

[0012] FIG. 3 depicts a block diagram illustrating logic components for performing a data bus inversion encoding scheme according to some aspects of the present disclosure.

[0013] FIG. 4A depicts a comparison of performance of the data bus inversion encoding scheme of FIG. 3 versus performance of an existing data bus inversion encoding scheme for binary data following a first pattern according to some aspects of the present disclosure.

[0014] FIG. 4B depicts a comparison of performance of the data bus inversion encoding scheme of FIG. 3 and an existing data bus inversion encoding scheme for binary data following a second pattern according to some aspects of the present disclosure.

[0015] FIG. 4C depicts a comparison of performance of the data bus inversion encoding scheme of FIG. 3 versus performance of an existing data bus inversion encoding scheme for binary data following a third pattern according to some aspects of the present disclosure.

[0016] FIG. 5 depicts a method for data bus inversion encoding according to various aspects of the present disclosure.

[0017] To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the drawings. It is contemplated that elements and features of one aspect may be beneficially incorporated in other aspects without further recitation.DETAILED DESCRIPTION

[0018] Aspects of the present disclosure related to data buses. Example aspects are directed to techniques for implementing DBI encoding schemes for data buses.

[0019] As noted above, DBI encoding techniques may be used to reduce the amount of power associated with moving data between a SoC and off-chip memory (or another SoC) . However, existing DBI encoding techniques have shortcomings. For example, existing techniques for DBI encoding do not consider the data transition between a current value for a binary string and a next value (e.g., occurring in the next clock cycle) for the  binary string when deciding whether to toggle (e.g., take the 1s complement) the next value, which may result in additional power consumption.

[0020] As will be discussed below in more detail in FIG. 3 and FIGS. 4A-4C, DBI encoding schemes according to the present disclosure do consider the data transition between the current value and the next value when determining whether to toggle the next value for the binary string. In this manner, DBI encoding schemes according to the present disclosure may provide additional power savings with transferring data (e.g., binary strings) on a data bus compared to existing DBI encoding schemes.

[0021] Example System for Data Transfer

[0022] FIG. 1 depicts a system 100 for data transfer according to some aspects of the present disclosure. The system 100 may include a system-on-chip (SoC) 102 having on-chip memory 104 (e.g., static random access memory) . The system 100 may also include off-chip memory 106 (e.g., dynamic random access memory) and a chip-to-chip interconnect 108 (e.g., a plurality of bit lines) communicatively coupled to the Soc 102 and the off-chip memory 106 (or another SoC) . In this manner, data (e.g., binary strings) may be transferred between the SoC 102 and the off-chip memory 106 or another SoC via the chip-to-chip interconnect 108. For instance, the chip-to-chip interconnect 108 may include a bus 109 (e.g., data and / or memory) to transfer data (e.g., between the SoC 102 and the off-chip memory 106 (or another SoC) .

[0023] As illustrated, the SoC 102 and the off-chip memory 106 may include interconnect interface 110 and interconnect interface 112, respectively, and the chip-to-chip interconnect 108 may be communicatively coupled to the SoC 102 and the off-chip memory 106 via the interconnect interface 110 and 112, respectively. In some aspects, interconnect interface 110, 112 may be a serial interface. In other aspects, interconnect interface 110, 112 may be a parallel interface.

[0024] In some aspects, the SoC 102 may include a bus controller 114. The bus controller 114 may be communicatively coupled to the chip-to-chip interconnect 108. In some aspects, the bus controller 114 may be configured to implement a data bus inversion (DBI) encoding scheme 116 on the bus 109 of the chip-to-chip interconnect 108 to minimize (or at least reduce) power consumption associated with moving data between the SoC 102and the off-chip memory 106 or another SoC.

[0025] In some aspects, the DBI encoding scheme 116 may configure the bus controller 114 to reduce power associated with transferring bits having a logic value of 1. For example, the DBI encoding scheme 116 may configure the bus controller 114 to toggle (e.g., take the ones complement of) a binary string carried on the data bus 108 during a current clock cycle if the total number of bits in the binary string with a logic value of 1 is greater than half the width of the binary string. For example, the binary string may include 8 bits and may be toggled if greater than half (e.g., more than 4) of the 8 bits have a logic value of 1. In this manner, power associated with transferring bits of the binary string that have a logic value of 1 may be minimized (or at least reduced) .

[0026] In some aspects, the DBI encoding scheme 116 may set a data bus inversion signal (e.g, on bit line 118 of the bus 109 of the chip-to-chip interconnect 108) to a logic value of 1 in response to toggling the binary string to, as discussed above, minimize the number of bits in the binary string having a logic value of 1. Additionally, the data bus inversion bit may be provided to the recipient device (e.g., SoC 102 or off-chip memory 106) along with the toggled binary string. In this manner, the data bus inversion bit may indicate to the recipient device that the binary string was toggled to minimize power associated with the data bus 108 carrying bits of the binary string having a logic value of 1.Thus, the recipient device may toggle the received binary string to obtain the correct logic value of each of the bits included in the binary string.

[0027] Example Chip-to-Chip Interconnect

[0028] FIG. 2A and FIG. 2B depict example chip-to-chip interconnects according to some aspects of the present disclosure. For instance, FIG. 2A depicts a chip-to-chip interconnect 200 according to some aspects of the present disclosure. FIG. 2B depicts another chip-to-chip interconnect 202 according to some aspects of the present disclosure. The chip-to-chip interconnect 200 of FIG. 2A and the chip-to-chip interconnect 202 of FIG. 2B may be used in the system 100 discussed above with reference to FIG. 1. For instance, the chip-to-chip interconnect 108 in FIG. 1 may be implemented as the chip-to-chip interconnect 200 in FIG. 2A when the chip-to-chip interconnect 108 in FIG. 1 is operating at a first frequeuncy. Alternatively, the chip-to-chip interconnect 108 in FIG. 1 may be implemented as the chip-to-chip interconnect 202 of FIG. 2B when the chip-to-chip interconnect 108 in FIG. 1 is operating at a second frequeuncy that is different (e.g., higher or lower) than the first frequency.

[0029] The chip-to-chip interconnect 200 of FIG. 2A may consume energy only when transferring bits having a logic value of 1, and the chip-to-chip interconnect 202 of FIG. 2B may consume energy whenever there is a transition (e.g., from 1 to 0 or 0 to 1) in the bits included in, for example, a binary string. The total power associated with transferring the binary string via a chip-to-chip interconnect (e.g., the bus 109 of the chip-to-chip interconnect 108 in FIG. 1) may be represented by the following formula: Total Power=Logic 1 Power+Transition Power

[0030] In the above formula, the logic 1 power variable may be referred to as a hamming weight that indicates the number of non-zero elements (i.e., 1s) included in the binary string. Furthermore, the transition power variable may be referred to as a hamming distance. The hamming distance between two binary strings may be defined as the number of elements in which the two binary strings differ.

[0031] Existing data bus inversion encoding schemes, such as the DBI encoding scheme 116 discussed above with reference to FIG. 1, minimize (or at least reduce) the logic 1 power component of the above-formula by toggling the current binary string when the number of non-zero elements included in the current binary string is greater than half the width of the binary string. However, existing data bus inversion encoding schemes do not minimize (or at least reduce) the transition power component of the above formula, because existing data bus inversion encoding schemes do not take into account the hamming distance between the current binary string carried on the data bus and the next binary string for the data bus. As a result, existing data bus inversion encoding scheme do not minimize (or at least reduce) the transition power component of the above formula.

[0032] Example aspects of the present disclosure are directed to DBI encoding schemes that improve upon existing DBI encoding schemes, such as the DBI encoding scheme 116 discussed above with reference to FIG. 1. As will be discussed in more detail in FIG. 3 and FIGS. 4A-4C, DBI encoding scheme according to aspects of the present disclosure further minimize power consumption associated with transferring binary strings compared to existing DBI encoding schemes by considering the hamming distance between the current binary string and the next binary string when making toggling decisions for the next binary string.

[0033] Example Data Bus Inversion (DBI) Encoding Scheme

[0034] FIG. 3 depicts logic 300 for a DBI encoding scheme according to some aspects of the present disclosure. The logic 300 may include a latch 302 that is generally representative of a data bus. For example, the data bus may be the data bus 108 discussed above with reference to FIG. 1.

[0035] As illustrated, a next binary string, D (n + 1) , or a complement (e.g., 1s complement) of the next binary string may be provided as an input to the latch 302 that is storing (e.g., carrying) a current binary string, D (n) . In some aspects, the current binary string, D (n) , and the next binary string, D (n + 1) may be a codeword (e.g., a binary string having 8 bits) . In other aspects, the current binary string, D (n) , and the next binary string, D(n + 1) may include more or fewer bits than the codeword.

[0036] The logic 300 may include a toggle block 304. As illustrated, the next binary string, D (n + 1) , for the latch 302 may be provided as an input to the toggle block 304. The toggle block 304 may be configured to toggle every bit included in next binary string, D (n + 1) , to generate a 1s complement of the next binary string.

[0037] The logic 300 may include a first computation block 306 that receives the current binary string, D (n) , and the complement (e.g., 1s complement) of the next binary string, D (n +1) , as inputs. In some aspects, the first computation block 306 may be configured to compute a first metric based on the inputs (that is, the current binary string and the complement of the next binary string) . For instance, in some aspects, the first metric computed by the first computation block 306 may be defined by the following formula: Mt=f1*Wd (n) +f1*Wd (n+1) +f2*Wt (n)

[0038] In the above formula, Mt corresponds to the first metric; Wd (n) corresponds to the hamming weight of the current binary string; Wd (n + 1) corresponds to the hamming weight of the 1s complement of the next binary string; Wt (n) corresponds to the hamming distance between the current binary string and the complement of the next binary string; f1 corresponds to a programmable weight for the hamming weight components; and f2 corresponds to a programmable weight for the hamming distance component. In some aspects, the programmable weights (e.g., f1 and f2) may have the same value (e.g., 1) . In other aspects, the programmable weights may have different values.

[0039] The logic 300 may include a second computation block 308 that receives the current binary string, D (n) , and the next binary string, D (n + 1) , as inputs. In some aspects, the second computation block 308 may be configured to compute a second metric based on the inputs. For instance, in some aspects, the second metric computed by the second computation block 308 may be defined by the following formula: Mo=f1*Wd (n) +f1*Wd (n+1) +f2*Wt (n)

[0040] In the above formula, Mo corresponds to the second metric; Wd (n) corresponds to the hamming weight of the current binary string; Wd (n + 1) corresponds to the hamming weight of the next binary string; Wt (n) corresponds to the hamming distance between the current binary string and the next binary string; f1 corresponds to a programmable weight for the hamming weight components; and f2 corresponds to a programmable weight for the hamming distance component. In some aspects, the programmable weights (e.g., f1 and f2) may have the same value (e.g., 1) . In other aspects, the programmable weights may have different values.

[0041] In some aspects, the first metric and the second metric computed by the first computation block 306 and the second computation block 308, respectively, may be power values. For example, the first metric computed by the first computation block 306 may be a first value for total power (e.g., logic 1 power plus transition power) associated with transitioning the latch 302 (e.g., data bus) from carrying the current binary string, D(n) , to carrying the 1s complement of the second binary string, D (n + 1) . Furthermore, the second metric computed by the second computation block 308 may be a second value for total power (e.g., logic 1 power plus transition power) associated with transitioning the latch 302 (e.g., data bus) from carrying the current binary string, D (n) , to carrying the next binary string, D (n + 1) .

[0042] The logic 300 may include a comparison block 312 that receives the first metric, Mt, generated by the first computation block 306 and the second metric, Mo, generated by the second computation block 308 as inputs. The comparison block 312 may be configured to control operation of a multiplexer 314 based on the comparison of the first metric and the second metric. For example, as illustrated in FIG. 3, the multiplexer 314 may receive the next binary string, D (n +1) , and the 1s complement of the next binary string, D (n +1) as separate inputs, and the comparison block 312 may provide an input  selection signal 316 to the multiplexer 314 based on the comparison of the first metric and the second metric. For instance, the input selection signal 316 may configure the multiplexer to output either the next binary string, D (n +1) or the 1s complement of the next binary string, D (n + 1) .

[0043] In some aspects, the first metric and the second metric may each be numerical values. In such aspects, the comparison block 312 may compare the numerical value for the first metric to the numerical value for the second metric. For example, if the numerical value for the first metric is less than the numerical value for the second metric, the comparison block 312 may generate the input selection signal 316 to cause the multiplexer 314 to provide the 1s complement of the next binary string, D (n + 1) , as an input to the latch 302 (e.g., data bus) . In this manner, the latch 302 may transition from carrying the current binary string, D (n) , to carrying the 1s complement of the next binary string, D (n + 1) .

[0044] Alternatively, if the numerical value for the first metric is higher than the numerical value for the second metric, the comparison block 312 may generate the input selection signal 316 to cause the multiplexer 314 to provide the next binary string, D (n +1) , as an input to the latch 302 (e.g., data bus) . In this manner, the latch 302 may transition from carrying the current binary string, D (n) , to carrying the next binary string, D (n + 1) .

[0045] DBI encoding schemes implementing the logic 300 in FIG. 3 are improved compared to existing DBI encoding schemes. For instance, DBI encoding schemes implementing the logic 300 consider the hamming distance between the current binary string, D (n) , and the next binary string, D (n + 1) , when determining whether to toggle (e.g, take the 1s complement) the next binary string. Furthermore, as will be discussed below with reference to FIGS. 4A-4C, DBI encoding schemes implementing the logic 300 in FIG. 3 is, for binary strings having a given pattern (e.g., checkered, incremental, random) , as good as existing DBI encoding schemes at minimizing power associated with transferring data and is, in most instances, better than existing DBI encoding schemes at minimizing power.

[0046] Comparison of Performance of Example DBI Encoding Scheme to Performance of Existing DBI Encoding Scheme for Binary Strings Having Different Patterns

[0047] FIGS. 4A-4C illustrate a comparison of the DBI encoding scheme of FIG. 3 to an existing DBI encoding scheme for binary strings having different patterns according to some aspects of the present disclosure. FIG. 4A depicts a comparison of the DBI encoding scheme of FIG. 3 to the existing DBI encoding scheme (e.g., DBI encoding scheme 116 in FIG. 1) for a binary string following a first pattern (e.g., a checker pattern) . FIG. 4B depicts a comparison of the DBI encoding scheme of FIG. 3 to the existing DBI encoding scheme for a binary string following a second pattern (e.g., incremental) . FIG. 4C depicts a comparison of the DBI encoding scheme of FIG. 3 to the existing DBI encoding scheme for a binary string following a third pattern (e.g., random) .

[0048] FIG. 4A depicts a first scenario in which a binary string follows a checker pattern according to some embodiments of the present disclosure. For example, as illustrated in a first table 400 in FIG. 4A, the current value, n, of the binary string is 01010101 and the next value, n + 1, for the binary string is 10101010. The hamming weight (that is, the number of non-zero bits) for the current value, n, and the next value, n +1, is not greater than the half the width of the binary string. Thus, neither the current value, n, nor the next value, n + 1, need to be toggled based on the hamming weight.

[0049] The hamming distance between the current value, n, and the next value, n + 1, is 8, because none of the bits included in the current value, n, have the same value as the corresponding bit in the next value, n + 1, for the binary string. As a result, using the existing DBI scheme as illustrated in a second table 402 in FIG. 4A, the total power associated with transitioning a data bus from carrying the current value, n, to carrying the next value, n +1, is 16 (that is, the sum of the hamming weight, 4, of the current value, the hamming weight, 4, of the next value, and the hamming distance, 8, between the current value and the next value) when both f1 and f2 are programmed to have a value of 1.

[0050] As illustrated in a third table 404 in FIG. 4A, the hamming distance between the current value, n, of the binary string and the next value, n + 1, of the binary string is considered when using the DBI encoding scheme of FIG. 3 to make a toggling decision for the next value, n + 1, of the binary string. By considering the hamming distance  between the current value, n, of the binary string and the 1s complement of the next value, n + 1, the DBI encoding scheme of FIG. 3 determines the hamming distance between the current value, n, of the binary string and the 1s complement of the next value, n + 1, is non-existent (that is, has a value of zero) . And, as a result, the total power associated with transitioning the data bus from carrying the current value, n, of the binary string to carrying the 1s complement of the next value, n + 1, of the binary string is less than the total power associated with transitioning the data bus from carrying the current value, n, of the binary string to carrying the next value, n + 1, of the binary string as discussed above with reference to the existing DBI scheme. Thus, for binary strings following a checker pattern like shown in FIG. 4A, the DBI encoding scheme of FIG. 3 offers additional power savings compared to the existing DBI encoding scheme.

[0051] FIG. 4B depicts a second scenario in which a binary string follows an incremental pattern according to some embodiments of the present disclosure. For example, as illustrated in a first table 410 in FIG. 4B, the current value, n, of the binary string is 01111111 and the next value, n + 1, for the binary string is 10000000. The hamming weight (that is, the number of non-zero bits) for the current value, n, is 7, and the hamming weight for the next value, n + 1, is 1. Therefore, the current value, n, of the binary string is toggled to obtain the 1s complement of the current value, n, of the binary string to reduce the number of non-zero elements from 7 to 2 (e.g., one non-zero element in the 1s complement and the DBI bit to indicate the binary string has been toggled) .

[0052] The hamming distance between the 1s complement of the current value, n, and the next value, n + 1, is 0. As a result, using the existing DBI scheme as illustrated in a second table 412 in FIG. 4B, the total power associated with transferring a data bus from carrying the 1s complement of the current value, n, to carrying the next value, n + 1, is 4 (that is, the sum of the hamming weight, 2, of the 1s complement of the current value, the hamming weight, 1, of the next value, and the hamming distance, 0, between the current value and the next value) .

[0053] As illustrated in a third table 414 in FIG. 4B, the hamming distance between the 1s complement of the current value, n, of the binary string and the next value, n + 1, of the binary string is 0, so the hamming distance cannot be further improved by taking the 1s complement of the next value, n + 1, of the binary string. As a result, the second table 412 and the third table 414 illustrate that the total power using the DBI encoding  scheme of FIG. 3 is the same as for the existing DBI encoding scheme. Thus, for binary strings following an incremental pattern like shown in FIG. 4B, the DBI encoding scheme of FIG. 3 performs just as good as the existing DBI encoding scheme.

[0054] FIG. 4C depicts a third scenario in which a binary string follows a random pattern according to some embodiments of the present disclosure. For example, as illustrated in a first table 420 in FIG. 4C, the current value, n, of the binary string is 10111001 and the next value, n + 1, for the binary string is 0110101. The hamming weight (that is, the number of non-zero bits) for the current value, n, is 5 and the hamming weight for the next value, n + 1, is 4. Therefore, the current value, n, of the binary string is toggled to obtain the 1s complement of the current value, n, of the binary string to reduce the number of non-zero elements from 5 to 4 (e.g., one non-zero element in the 1s complement plus the DBI bit that is set to 1 to indicate the binary string has been toggled) .

[0055] The hamming distance between the 1s complement of the current value, n, and the next value, n + 1, is 5. As a result, using the existing DBI scheme as illustrated in a second table 422 in FIG. 4C, the total power associated with transferring a data bus from carrying the 1s complement of the current value, n, to carrying the next value, n + 1, is 14 (that is, the sum of the hamming weight, 4, of the 1s complement of the current value, the hamming weight, 4, of the next value, and the hamming distance, 5, between the current value and the next value) .

[0056] As illustrated in a third table 424 in FIG. 4C, the hamming distance between the current value, n, of the binary string and the next value, n + 1, of the binary string is considered when using the DBI encoding scheme of FIG. 3 to make a toggling decision for the next value, n + 1, of the binary string. By considering the hamming distance between the current value, n, of the binary string and the 1s complement of the next value, n + 1, the DBI encoding scheme of FIG. 3 determines the hamming distance between the current value, n, of the binary string and the next value, n + 1, of the binary string can be reduced (e.g., from 5 to 3) by toggling the next value, n + 1, to obtain the 1s complement of the next value. And, as a result, the total power associated with transitioning the data bus from carrying the current value, n, of the binary string to carrying the 1s complement of the next value, n + 1, of the binary string is less than the total power associated with transitioning the data bus from carrying the current value, n, of the binary string to carrying the next value, n + 1, of the binary string as discussed above with reference to  the existing DBI scheme. Thus, for binary strings following a random like shown in FIG. 4C, the DBI encoding scheme of FIG. 3 offers greater power savings compared to the existing DBI encoding scheme.

[0057] Example Method for Data Bus Inversion Encoding

[0058] FIG. 5 is a diagram depicting an example method 500 for data bus inversion encoding according to various aspects of the present disclosure. For example, the method 500 may be performed by the logic discussed above with reference to FIG. 3. Furthermore, although FIG. 5 depicts steps performed in a particular order for purposes of illustration and discussion, the method 500 discussed herein is not intended to be limited to any particular order or arrangement. One skilled in the art, using the disclosure provided herein, will appreciate that various steps of the method 500 can be omitted, rearranged, combined and / or adapted in various ways without deviating from the scope of the present disclosure. In some aspects, the method 500 may be performed by a bus controller (e.g., the bus controller 114 of FIG. 1) for a bus (e.g., of a chip-to-chip interconnect) . For example, the bus controller may be configured to implement the logic 300 discussed above with reference to FIG. 3.

[0059] At (505) , the method 500 includes determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string.

[0060] At (510) , the method 500 includes determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string.

[0061] At (515) , the method 500 includes transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.

[0062] Example Clauses

[0063] In addition to the various aspects described above, specific combinations of aspects are within the scope of the disclosure, some of which are detailed below:

[0064] Aspect 1: A method for data bus inversion, comprising: determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string; determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string; and transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.

[0065] Aspect 2: The method of Aspect 1, wherein: the first metric comprises a first value for a parameter; and the second metric comprises a second value for the parameter.

[0066] Aspect 3: The method of Aspect 2, wherein the parameter comprises power.

[0067] Aspect 4: The method of Aspect 2, wherein transitioning the data bus to carrying the complement of the second binary string comprises: determining the second value for the parameter is lower than the first value for the parameter; and responsive to determining the second value for the parameter is lower than the first value for the parameter, transitioning the data bus from carrying the first binary string to carrying the complement of the second binary string.

[0068] Aspect 5: The method of any of Aspects 1 to 4, wherein determining the first metric comprises summing the hamming weight of the first binary string, the hamming weight of the second binary string, and the hamming distance between the first binary string and the second binary string.

[0069] Aspect 6: The method of Aspect 5, wherein determining the first metric further comprises: multiplying the hamming weight of the first binary string by a first weight to  generate a weighted hamming weight of the first binary string; multiplying the hamming weight of the second binary string by the first weight to generate a weighted hamming weight of the second binary string; multiplying the hamming distance by a second weight to generate a weighted hamming distance between the first binary string and the second binary string; and summing comprises summing the weighted hamming weight of the first binary string, the weighted hamming weight of the second binary string, and the weighted hamming distance between the first binary string and the second binary string.

[0070] Aspect 7: The method of any of Aspects 1 to 6, wherein determining the second metric comprises summing the hamming weight of the first binary string, the hamming weight of the complement of the second binary string, and the hamming distance between the first binary string and the complement of the second binary string.

[0071] Aspect 8: The method of Aspect 7, wherein determining the second metric further comprises: multiplying the hamming weight of the first binary string by a first weight to generate a weighted hamming weight of the first binary string; multiplying the hamming weight of the complement of the second binary string by the first weight to generate a weighted hamming weight of the complement of the second binary string; multiplying the hamming distance by a second weight to generate a weighted hamming distance between the first binary string and the complement of the second binary string; and summing comprises summing the weighted hamming weight of the first binary string, the weighted hamming weight of the complement of the second binary string, and the weighted hamming distance between the first binary string and the complement of the second binary string.

[0072] Aspect 9: The method of Aspect 8, wherein the first weight and the second weight are programmable.

[0073] Aspect 10: The method of any of Aspects 1 to 9, wherein: the first binary string has a first checker pattern in which bits of the first binary string alternate between a first value and a second value; and the second binary string has a second checker pattern in which bits of the second binary string alternate between the first value and the second value, the second checker pattern being different from the first checker pattern.

[0074] Aspect 11: The method of any of Aspects 1 to 9, wherein: the first binary string has a first random pattern in which bits of the first binary string are randomly assigned a  first value or a second value; and the second binary string has a second random pattern that is different from the first random pattern and in which bits of the second binary string are randomly assigned the first value or the second value.

[0075] Aspect 12: The method of any of Aspects 1 to 9, wherein the first binary string and the second binary string follow an incremental pattern in which the second binary string comprises the first binary string incremented by a value.

[0076] Aspect 13: The method of any of Aspects 1 to 11, wherein: the first metric is determined during a first interval of time; and the second metric is determined during a second interval of time immediately following the first interval of time.

[0077] Aspect 14: An apparatus comprising: a data bus; and a bus controller configured to: determine a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string; determine a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string; and provide one or more control signals associated with transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.

[0078] Aspect 15: The apparatus of Aspect 14, wherein: the first metric comprises a first value for a parameter; the second metric comprises a second value for the parameter; and to transition the data bus to carrying the complement of the second binary string, the bus controller is configured to: determine the second value for the parameter is lower than the first value for the parameter; and responsive to determining the second value for the parameter is lower than the first value for the parameter, provide the one or more control signals associated with transitioning the data bus from carrying the first binary string to carrying the complement of the second binary string.

[0079] Aspect 16: The apparatus of Aspect 14, wherein to determine the first metric, the bus controller is configured to sum the hamming weight of the first binary string, the hamming weight of the second binary string, and the hamming distance between the first binary string and the second binary string.

[0080] Aspect 17: The apparatus of Aspect 16, wherein to determine the first metric, the bus controller is configured to: multiply the hamming weight of the first binary string by a first weight to generate a weighted hamming weight of the first binary string; multiply the hamming weight of the second binary string by the first weight to generate a weighted hamming weight of the second binary string; multiply the hamming distance by a second weight to generate a weighted hamming distance between the first binary string and the second binary string; and sum comprises summing the weighted hamming weight of the first binary string, the weighted hamming weight of the second binary string, and the weighted hamming distance between the first binary string and the second binary string.

[0081] Aspect 18: The apparatus of Aspect 14, wherein to determine the second metric, the bus controller is configured to sum the hamming weight of the first binary string, the hamming weight of the complement of the second binary string, and the hamming distance between the first binary string and the complement of the second binary string.

[0082] Aspect 19: The apparatus of Aspect 14, wherein: the first metric comprises a first value for a parameter; and the second metric comprises a second value for the parameter.

[0083] Aspect 20: An apparatus comprising: means for determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string; means for determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary  string and the complement of the second binary string; and means for transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.

[0084] Additional Considerations

[0085] The various operations of methods described above may be performed by any suitable means capable of performing the corresponding functions. The means may include various hardware and / or software components (s) module (s) , including, but not limited to a circuit or processor. Generally, where there are operations illustrated in figures, those operations may have corresponding counterpart means-plus-function components with similar numbering.

[0086] For example, means for determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string may include logic (e.g., first computation block 306 in FIG. 3) . Means for determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string may include logic (e.g., second computation block 308 in FIG. 3) . Means for transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric may include logic (e.g., comparison block 310, multiplexer 314) .

[0087] The preceding description is provided to enable any person skilled in the art to practice the various aspects described herein. The examples discussed herein are not limiting of the scope, applicability, or aspects set forth in the claims. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. For example, changes may be made in the function and arrangement of elements discussed without departing from the scope of the disclosure. Various examples may omit, substitute, or add various  procedures or components as appropriate. For instance, the methods described may be performed in an order different from that described, and various steps may be added, omitted, or combined. Also, features described with respect to some examples may be combined in some other examples. For example, an apparatus may be implemented or a method may be practiced using any number of the aspects set forth herein. In addition, the scope of the disclosure is intended to cover such an apparatus or method that is practiced using other structure, functionality, or structure and functionality in addition to, or other than, the various aspects of the disclosure set forth herein. It should be understood that any aspect of the disclosure disclosed herein may be embodied by one or more elements of a claim.

[0088] As used herein, the word “exemplary” means “serving as an example, instance, or illustration. ” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.

[0089] As used herein, a phrase referring to “at least one of” a list of items refers to any combination of those items, including single members. As an example, “at least one of: a, b, or c” is intended to cover a, b, c, a-b, a-c, b-c, and a-b-c, as well as any combination with multiples of the same element (e.g., a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, and c-c-c or any other ordering of a, b, and c) .

[0090] As used herein, the term “determining” encompasses a wide variety of actions. For example, “determining” may include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure) , ascertaining, and the like. Also, “determining” may include receiving (e.g., receiving information) , accessing (e.g., accessing data in a memory) , and the like. Also, “determining” may include resolving, selecting, choosing, establishing, and the like.

[0091] The methods disclosed herein comprise one or more steps or actions for achieving the methods. The method steps and / or actions may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps or actions is specified, the order and / or use of specific steps and / or actions may be modified without departing from the scope of the claims. Further, the various operations of methods described above may be performed by any suitable means capable of performing the corresponding functions. The means may include various hardware  and / or software component (s) and / or module (s) , including, but not limited to a circuit, an application specific integrated circuit (ASIC) , or processor. Generally, where there are operations illustrated in figures, those operations may have corresponding counterpart means-plus-function components with similar numbering.

[0092] The following claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language of the claims. Within a claim, reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more. ” Unless specifically stated otherwise, the term “some” refers to one or more. No claim element is to be construed under the provisions of 35 U.S.C. § 112 (f) unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for. ” All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims.

Claims

1.A method for data bus inversion encoding, comprising:determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string;determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string; andtransitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.2.The method of Claim 1, wherein:the first metric comprises a first value for a parameter; andthe second metric comprises a second value for the parameter.3.The method of Claim 2, wherein the parameter comprises power.4.The method of Claim 2, wherein transitioning the data bus to carrying the complement of the second binary string comprises:determining the second value for the parameter is lower than the first value for the parameter; andresponsive to determining the second value for the parameter is lower than the first value for the parameter, transitioning the data bus from carrying the first binary string to carrying the complement of the second binary string.5.The method of Claim 1, wherein determining the first metric comprises summing the hamming weight of the first binary string, the hamming weight of the second binary string, and the hamming distance between the first binary string and the second binary string.6.The method of Claim 5, wherein determining the first metric further comprises:multiplying the hamming weight of the first binary string by a first weight to generate a weighted hamming weight of the first binary string;multiplying the hamming weight of the second binary string by the first weight to generate a weighted hamming weight of the second binary string;multiplying the hamming distance by a second weight to generate a weighted hamming distance between the first binary string and the second binary string; andsumming comprises summing the weighted hamming weight of the first binary string, the weighted hamming weight of the second binary string, and the weighted hamming distance between the first binary string and the second binary string.7.The method of Claim 1, wherein determining the second metric comprises summing the hamming weight of the first binary string, the hamming weight of the complement of the second binary string, and the hamming distance between the first binary string and the complement of the second binary string.8.The method of Claim 7, wherein determining the second metric further comprises:multiplying the hamming weight of the first binary string by a first weight to generate a weighted hamming weight of the first binary string;multiplying the hamming weight of the complement of the second binary string by the first weight to generate a weighted hamming weight of the complement of the second binary string;multiplying the hamming distance by a second weight to generate a weighted hamming distance between the first binary string and the complement of the second binary string; andsumming comprises summing the weighted hamming weight of the first binary string, the weighted hamming weight of the complement of the second binary string, and the weighted hamming distance between the first binary string and the complement of the second binary string.9.The method of Claim 8, wherein the first weight and the second weight are programmable .10.The method of Claim 1, wherein:the first binary string has a first checker pattern in which bits of the first binary string alternate between a first value and a second value; andthe second binary string has a second checker pattern in which bits of the second binary string alternate between the first value and the second value, the second checker pattern being different from the first checker pattern.11.The method of Claim 1, wherein:the first binary string has a first random pattern in which bits of the first binary string are randomly assigned a first value or a second value; andthe second binary string has a second random pattern that is different from the first random pattern and in which bits of the second binary string are randomly assigned the first value or the second value.12.The method of Claim 1, wherein:the first binary string and the second binary string follow an incremental pattern in which the second binary string comprises the first binary string incremented by a value.13.The method of Claim 1, wherein:the first metric is determined during a first interval of time; andthe second metric is determined during a second interval of time immediately following the first interval of time.14.An apparatus comprising:a data bus; anda bus controller configured to:determine a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string;determine a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string; andprovide one or more control signals associated with transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.15.The apparatus of claim 14, wherein:the first metric comprises a first value for a parameter;the second metric comprises a second value for the parameter; andto transition the data bus to carrying the complement of the second binary string, the bus controller is configured to:determine the second value for the parameter is lower than the first value for the parameter; andresponsive to determining the second value for the parameter is lower than the first value for the parameter, provide the one or more control signals associated with transitioning the data bus from carrying the first binary string to carrying the complement of the second binary string.16.The apparatus of claim 14, wherein to determine the first metric, the bus controller is configured to sum the hamming weight of the first binary string, the hamming weight of the second binary string, and the hamming distance between the first binary string and the second binary string.17.The apparatus of claim 16, wherein to determine the first metric, the bus controller is configured to:multiply the hamming weight of the first binary string by a first weight to generate a weighted hamming weight of the first binary string;multiply the hamming weight of the second binary string by the first weight to generate a weighted hamming weight of the second binary string;multiply the hamming distance by a second weight to generate a weighted hamming distance between the first binary string and the second binary string; andsum comprises summing the weighted hamming weight of the first binary string, the weighted hamming weight of the second binary string, and the weighted hamming distance between the first binary string and the second binary string.18.The apparatus of claim 14, wherein to determine the second metric, the bus controller is configured to sum the hamming weight of the first binary string, the hamming weight of the complement of the second binary string, and the hamming distance between the first binary string and the complement of the second binary string.19.The apparatus of claim 14, wherein:the first metric comprises a first value for a parameter; andthe second metric comprises a second value for the parameter.20.An apparatus comprising:means for determining a first metric associated with transitioning a data bus from carrying a first binary string to carrying a second binary string, the first metric determined based on a hamming weight of the first binary string, a hamming weight of the second binary string, and a hamming distance between the first binary string and the second binary string;means for determining a second metric associated with transitioning the data bus from carrying the first binary string to carrying a complement of the second binary string, the second metric determined based on the hamming weight of the first binary string, a hamming weight of the complement of the second binary string, and a hamming distance between the first binary string and the complement of the second binary string; andmeans for transitioning the data bus from carrying the first binary string to carrying the second binary string or the complement of the second binary string based on the first metric and the second metric.

Citation Information

Patent Citations

  • Low power bus reversion encoding method

    KR1020000007798A

  • Code-based technique to mitigate power telemetry side-channel leakage from system buses

    US11860703B1

  • Efficient Encoding Methods

    US20210351786A1

  • Efficient Encoding Methods

    US20210359701A1

  • Data re-encoding for energy-efficient data transfer in a computing device

    US20230031310A1