Embodiments pertain to circuitry that reduce power consumption and noise in a differential input/output (I/O) buffer.
Power consumption and power supply noise generated by differential I/O buffers varies with the data being transmitted. Data Bus Inversion (DBI) is a commonly used technique for power reduction in signal-ended interfaces where transmitted data bits are inverted based on total power considering all transitions at a clock edge.
In the figures, which are not necessarily drawn to scale, like numerals may describe similar components in different views. Like numerals having different letter suffixes may represent different instances of similar components. The figures illustrate generally, by way of example, but not by way of limitation, various embodiments discussed in the present document.
The following description and the drawings sufficiently illustrate specific embodiments to enable those skilled in the art to practice them. Other embodiments may incorporate structural, logical, electrical, process, and other changes. Portions and features of some embodiments may be included in, or substituted for, those of other embodiments. Embodiments set forth in the claims encompass all available equivalents of those claims.
For subsequent discussions Pulse Amplitude Modulation 4-level (PAM4) is used as the differential signal application. Other differential I/O applications can be addressed similarly. Table 1 provides a description of PAM4 voltage and transition power levels.
Table 1 shows signal data and voltage transitions for one differential signal pair (positive side (P) of the differential lines and negative side (N) of the differential lines) for PAM4. The voltage levels and associated data are one possible representative set, as there is no governing industrial standard. Table 1 shows normalized power consumed with each associated data transition. Note that Table 1 could be augmented to further include noise for each transition as well. The power for P and N signal lines is determined as follows: no voltage change→0 power consumed; decrease in voltage→0 power consumed; increase in voltage→positive power consumed; and an amount of power consumed with voltage increases in proportion to increase in voltage. For simple illustration the representative numbers chosen for the normalized power consumed are 0, 1, 2, 3. Actual normalized power consumption depends on specific transmit and receive circuitry and channel characteristics.
For each differential signal pair, the power consumed in transitions on P and N lines are added together to give the total power for the differential pair (sometimes called a “lane”). As expected, some data transitions consume higher power than others. There are sixteen possible transitions for each lane. These sixteen possibilities are sorted in decreasing order of power consumed in Table 1. Thus, the first two rows, where either the P or N line has a voltage increase of 500 mV, have the highest power consumption of all. The last four rows have zero power since the voltage level does not change.
A similar table can be created ordering steady power consumption at the final voltage level instead of the transition itself. This is also known as “termination power”. Another ordering can include prioritizing voltage noise generated at each data transition for one differential pair. While the specific schemes below focus on transition power reduction, other schemes for minimizing power delivery noise and power consumption with different termination powers can be derived.
At any given clock edge each lane of the I/O bus undergoes one of sixteen transitions listed in Table 1. Total power consumption for the bus can be estimated by Equation 1:
A power aware scheme can thus include:
In practice, the logic components benefit from simple implementation. A few specific schemes are included below for illustrative purposes.
Note that Equations 1 and 2 and the power aware scheme can be adjusted to account for noise as well. The power consumed can be weighted and the noise component can be weighted as well. The weights can indicate the relative importance for the noise and power in the overall power reduction and noise reduction scheme. If power is more important, then a higher weight can be used for the power than the noise and vice versa. The logic to determine the encoding scheme to implement in encoding the data can consider both the weighted noise and the weighted power.
A simpler scheme for encoding/decoding involves bit inversions, similar to DBI for single ended signal buses. For differential signals this can take four forms: no bits inverted, 1st bit inversion, 2nd bit inversion, or inversion of both bits. Herein, 1st bit is assumed to be the P bit and the 2nd bit is assumed to be the N bit. Table 2 shows how each of the sixteen possible transitions get modified with bit inversions. Table 2 also shows a corresponding change in normalized power consumption. The positive power saved values indicate power reduction while negative values indicate power increased when applying the scheme. Summing up the power change for each scheme yields zero. This indicates that for a random distribution of data transitions the average power change is zero using any one of the schemes (if applied unconditionally). Thus, the chosen scheme should be selective. The chosen scheme should be used for best power savings given the specific set of transitions at each clock edge.
A generic condition for encoding, independent of encoding scheme, is described by Equation 3:
Where ΔPk is the change in power for each transition k and Nk is the number of signal pairs undergoing transition k at the given clock edge. Weaker, suboptimal conditions can be derived for simpler implementations.
For the three schemes of Table 2, equations (4)-(6) below are sufficient to ensure a reduction in power consumption. These suboptimal conditions can be implemented with combinatorial logic alone and do not require computations for the generic condition of Equation 3.
Table 3 describes logic to determine when a signal pair is in a state that would save power with the coding scheme. The simplest logic is for the scheme that includes inversion of both bits, where the condition (per lane) that will save power is: XB=B0* & B0*|˜B0* & B0*. If the number of lanes that satisfy this condition is greater than the number of lanes that do not, inversion of both bits results in power reduction for the entire bus at that clock edge.
For 1st bit Inversion, the logic to categorize each lane for power reduction (=1 or 3) or increase (=−1 or −3) with this scheme is stated by the expressions for YP1, YP3, YN1, and YN3, respectively. Counting the number of lanes in each category one can then check the weaker conditions of Equation 4 to determine if the entire bus will benefit from this coding.
For 2nd bit inversion, the variable X2=1 indicates if the differential pair will save power with this encoding. For the entire bus, one can count the number differential pairs that save power and compare with the number of different pairs that do not, i.e., check the condition in Equation 5.
The rows of Table 3 are consistent and additional to the rows of Table 2. That is, the entries of the row k=3, for example, in Table 2 are add-ons to Table 3.
Note that the different bit inversion schemes offer benefits for different sets of data transitions. Thus, it is possible to get further savings by combining the schemes. When combining schemes (using multiple of the schemes), the code transmitted to the receiver would be more than one bit to indicate which coding scheme is implemented. For example, code “00” indicating no coding, “01” indicating 1st bit inversion, “10” indicating 2nd bit inversion, and “11” indicating inversion of both bits.
Another class of encoding/decoding schemes for power reduction includes performing a predetermined swapping of transitions. Table 4 shows how each of the sixteen possible transitions can get modified by swapping the original data transition from highest power consumption to the lowest possible power consumption. For example, swapping the k=1 data transition to the k=13 transition gives the highest power reduction. The same applies for k=2, etc. This table then can be used as a lookup table on the transmit and receive for encoding and decoding.
The system 200 as illustrated includes a transmitter 220 and a receiver 222. The transmitter 220 encodes data 224, received in the form of differential signals, and transmits the data in encoded form as encoded data 226. The receiver 222 receives the encoded data 226. The receiver 222 decodes the encoded data 226 to recover decoded data 228. The decoded data 228 equals the data 224 from the transmitter 220.
The transmitter 220 includes an encoder 230 and data buffers 232 (differential signal buffer). The transmitter 220 includes encoding scheme quantifying and selection circuitry 221. The encoding scheme quantifying and selection circuitry 221, as illustrated, includes scheme quantifying logic 234, 236, 238 and a scheme selector 252, sometimes called “scheme selection circuitry”. The respective scheme quantifying logic 234, 236, 238 provides a value indicating a benefit provided from using a respective encoding scheme on the data 224. The encoding schemes discussed thus far are (i) no encoding, (ii) 1st bit inversion, (iii) 2nd bit inversion, (iv) both bit inversion, and (v) swap table encoding. Each scheme quantifying logic 234, 236, 238 includes logic gates (e.g., AND, OR, XOR, negate, buffer, or the like) that are configured to determine whether a given bit pair of the data 224 will benefit from the encoding scheme. The quantifying logic 234, 236, 238 can further determine a number of the lanes of the data 224 that will benefit from the encoding scheme. The number can be an integer greater than, or equal to, zero.
The quantifying logic 234 as illustrated includes logic gates 240, 242, 244 that detect whether a given criterion is satisfied by the data 224. The quantifying logic 236, 238 can have logic gates that detect whether a different encoding scheme, than the one detected by the quantifying logic 234, will benefit the data 224. The criterion are the logic statements that determine whether the given encoding scheme will benefit the data 224 based on the transition on the given lane. The logic gates 240, 242, 244 can each detect the conditions that will benefit an encoding scheme. For example, the logic gates 240, 242, 244 can detect whether a given lane of the data 224 will benefit from encoding using a 1st bit inversion, the logic gates 240, 242, 244 will benefit from encoding using a 2nd bit inversion, or the logic gates 240, 242, 244 will benefit from encoding by inverting both bits. The quantifying logic 234 can thus detect whether the data 224 will benefit from a type of bit inversion, swapping, or other encoding scheme. The quantifying logic 234 can further provide a value that indicates an amount that the data 224 will benefit from the given bit inversion scheme. A higher integer value can indicate more benefit from the inversion scheme.
An adder 246 can add the number of logic gates 240, 242, 244 that indicate that the data lane will benefit from the encoding scheme (or equivalent). Compare logic 248 can determine whether more than half of the data lanes will benefit from the encoding scheme. The compare logic 248 can compare the result from the adder 246 to half the number of data lanes (N is the number of data lanes, so N/2 250 is half the number of data lanes). The compare logic 248 can provide a value to the scheme selector 252 that indicates whether the encoding scheme has a net benefit on the data 224, a value indicating an amount of benefit the encoding scheme has on the data 224, a combination thereof, or the like.
The scheme selector 252 receives output from the quantifying logic 234, 236, 238 (the value to the scheme selector 252 that indicates whether the encoding scheme has a net benefit on the data 224, a value indicating an amount of benefit the encoding scheme has on the data 224, or a combination thereof). The scheme selector 252 selects an encoding scheme that has a net power benefit on the data 224. The scheme selector 252 can select the first scheme, in a hierarchy of schemes, that has a benefit on the data 224, the scheme that has the highest benefit on the data 224, or can select the scheme based on some other heuristic. The scheme selector 252 generates an scode 254 that indicates which encoding scheme to use to encode the data 224.
The encoder 230 receives the scode 254 and encodes the data 224 based on the scheme indicated by the scode 254. An output of the encoder 230 is encoded data 226. Encoded data 226 is the data 224 altered in accord with the encoding scheme indicated by the scode 254.
The buffer 232 is an electronic circuit element used to isolate the encoded data 226 from the receive device 222. The buffer 232 receives the encoded data 226 and the scode 254. The buffer 232 provides the encoded data 226 and the scode 254 to the receive device 222. The input impedance of the buffer 232 is relatively high compared to the impedance of the receive device 222. The buffer 232 draws very little current so as to avoid disturbing the encoded data 226. The buffer 232 is sometimes called a unity gain buffer, because it does not intentionally amplify or attenuate the input signal.
The receive device 222 includes a decoder 256 that reverses the encoding performed by the encoder 230. The decoder 256 uses the scode 254 to identify the encoding scheme implemented by the encoder 230. Then the decoder 256 decodes the data based on the encoding scheme indicated by the scode 254. An output of the decoder 256 is decoded data 228 that should be identical to the encoded data 226 (in terms of digital code, but may be at a different voltage level than the encoded data 226). The decoded data 228 is then provided to a destination electronic component, such as a memory, processing unit, multiplexer, register, or the like.
One or more of the encoder 230, buffer 232, decoder 256, scheme quantifying logic 234, 236, 238, scheme selector 252, or a component thereof can be implemented using electric or electronic components. The electric or electronic components can include one or more transistors, resistors, capacitors, diodes, amplifiers, inductors, multiplexers, logic gates (e.g., AND, OR, XOR, negate, buffer, a combination thereof, or the like), power supplies, oscillators, switches, processing units (e.g., central processing units (CPUs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), graphics processing units (GPUs), or the like), analog to digital converters, digital to analog converters, transducers, transformers, buck or boost converters, a combination thereof, or the like.
Estimates of power benefits with a few schemes are provided here as examples. A purely random data set is assumed.
A total power reduction with encoding over all possible data combinations is given by Equation 7:
Where, r=min (k−1, n−k); ΔPp is the reduction in power for each of the k lanes when the bus is encoded; ΔPn is the possible increase in power for each of the remaining n−k lanes when the bus is encoded; (pp)k, is the probability of k lanes with data transition that would save ΔPp upon encoding. The formula can be extended for the case of multiple ΔPp and ΔPn. The 2nd Bit inversion discussed earlier provides an average of 8% power reduction for a bus with n=16 differential pairs for a random data set not accounting for the power consumed by the encoding logic or the extra data line added.
In the estimation provided in
The average power consumption for an n-lane interface without encoding is given by
With bit b1 inversion the average power is modified to:
Power with and without encoding and the difference are plotted in
The encoding schemes can include two or more of inverting only a first bit of each differential signal of the differential signals, inverting only a second bit of each differential signal of the differential signals, inverting both bits of each differential signal of the differential signals, or swapping the bits of each differential signal of the differential signals in accord with a table. The method 400 can further include determining (e.g., by the encoding scheme quantifying circuitry 234) an amount to which each of the encoding schemes provides the net positive power reduction. The method 400 can further include selecting (e.g., by the encoding scheme selection circuitry 252) the encoding scheme corresponding to a greatest net positive power reduction.
The method 400 can further include selecting (e.g., by the encoding scheme selection circuitry 252) an encoding scheme of encoding schemes that produces a net positive power consumption reduction and a net positive noise reduction. The method 400 can further include selecting (e.g., by the encoding scheme selection circuitry 252) the encoding scheme based on a weighted net positive power consumption and a weighted net positive noise reduction.
Memory 503 may include volatile memory 514 and non-volatile memory 508. The machine 500 may include—or have access to a computing environment that includes—a variety of computer-readable media, such as volatile memory 514 and non-volatile memory 508, removable storage 510 and non-removable storage 512. Computer storage includes random access memory (RAM), read only memory (ROM), erasable programmable read-only memory (EPROM) & electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, compact disc read-only memory (CD ROM), Digital Versatile Disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices capable of storing computer-readable instructions for execution to perform functions described herein.
The machine 500 may include or have access to a computing environment that includes input 506, output 504, and a communication connection 516. Output 504 may include a display device, such as a touchscreen, that also may serve as an input device. The input 506 may include one or more of a touchscreen, touchpad, mouse, keyboard, camera, one or more device-specific buttons, one or more sensors integrated within or coupled via wired or wireless data connections to the machine 500, and other input devices. The computer may operate in a networked environment using a communication connection to connect to one or more remote computers, such as database servers, including cloud-based servers and storage. The remote computer may include a personal computer (PC), server, router, network PC, a peer device or other common network node, or the like. The communication connection may include a Local Area Network (LAN), a Wide Area Network (WAN), cellular, Institute of Electrical and Electronics Engineers (IEEE) 802.11 (Wi-Fi), Bluetooth, or other networks.
Computer-readable instructions stored on a computer-readable storage device are executable by the processing unit 502 (sometimes called processing circuitry) of the machine 500. A hard drive, CD-ROM, and RAM are some examples of articles including a non-transitory computer-readable medium such as a storage device. For example, a computer program 518 may be used to cause processing unit 502 to perform one or more methods or algorithms described herein.
Note that the term “circuitry” or “circuit” as used herein refers to, is part of, or includes hardware components, such as transistors, resistors, capacitors, diodes, inductors, amplifiers, oscillators, switches, multiplexers, logic gates (e.g., AND, OR, XOR), power supplies, memories, or the like, such as can be configured in an electronic circuit, a logic circuit, a processor (shared, dedicated, or group) and/or memory (shared, dedicated, or group), an Application Specific Integrated Circuit (ASIC), a field-programmable device (FPD) (e.g., a field-programmable gate array (FPGA), a programmable logic device (PLD), a complex PLD (CPLD), a high-capacity PLD (HCPLD), a structured ASIC, or a programmable SoC), digital signal processors (DSPs), etc., that are configured to provide the described functionality. In some embodiments, the circuitry may execute one or more software or firmware programs to provide at least some of the described functionality. The term “circuitry” or “circuit” may also refer to a combination of one or more hardware elements (or a combination of circuits used in an electrical or electronic system) with the program code used to carry out the functionality of that program code. In these embodiments, the combination of hardware elements and program code may be referred to as a particular type of circuitry.
The term “processor circuitry”, “processing circuitry”, “processing unit”, or “processor” as used herein thus refers to, is part of, or includes circuitry capable of sequentially and automatically carrying out a sequence of arithmetic or logical operations, or recording, storing, and/or transferring digital data. These terms may refer to one or more application processors, one or more baseband processors, a physical central processing unit (CPU), a single- or multi-core processor, and/or any other device capable of executing or otherwise operating computer-executable instructions, such as program code, software modules, and/or functional processes.
Example 1 includes a device for selecting a differential signal encoding scheme. The device can include a differential signal buffer and encoding scheme quantifying and selection circuitry. The encoding scheme quantifying and selection circuitry can be configured to generate a selection code indicating a selected encoding scheme of the encoding schemes based on respective signals indicating whether each respective encoding scheme of encoding schemes has a net positive power consumption reduction in differential signals. The encoding scheme quantifying and selection circuitry can be configured to provide the selection code to an encoder.
In Example 2, Example 1 can further include the encoder. The encoder can be configured to encode the differential signals using the selected encoding scheme indicated by the selection code resulting in encoded data.
In Example 3, the encoder of Example 2 is further configured to provide the encoded data to the differential signal buffer.
In Example 4, the encoding schemes of at least one of Examples 1-3 further includes two or more of inverting only a first bit of each differential signal of the differential signals, inverting only a second bit of each differential signal of the differential signals, inverting both the first and second bits of each differential signal of the differential signals, or swapping the bits of each differential signal of the differential signals in accord with a table.
In Example 5 the encoding scheme quantifying and selection circuitry of at least one of Examples 1-4 determines an amount of net positive power reduction which each of the encoding schemes provides.
In Example 6, the encoding scheme quantifying and selection circuitry of Example 5 selects the encoding scheme corresponding to a greatest net positive power reduction.
In Example 7, the encoding scheme quantifying and selection circuitry of at least one of Examples 1-6 is further configured to select an encoding scheme of encoding schemes that produces a net positive power consumption reduction and a net positive noise reduction.
In Example 8, the encoding scheme quantifying and selection circuitry of Example 7 selects the encoding scheme based on a weighted net positive power consumption and a weighted net positive noise reduction.
Example 9 includes a system for selecting a differential signal encoding scheme. The system can include a transmit device comprising a differential signal buffer, encoding scheme quantifying and selection circuitry, and an encoder. The encoding scheme quantifying and selection circuitry can receive differential signals and produce respective signals indicating whether each respective encoding scheme of encoding schemes has a net positive power consumption reduction on the differential signals. The encoding scheme quantifying and selection circuitry can select an encoding scheme of the encoding schemes based on the respective signals. The encoding scheme quantifying and selection circuitry can generate a selection code indicating the selected encoding scheme. The encoder can be configured to receive the selection code and the differential signals. The encode can encode the differential signals using the selected encoding scheme indicated by the selection code resulting in encoded data. The encoder can provide the encoded data and the selection code to the differential signal buffer.
In Example 10, Example 9 further includes a receiver comprising a decoder configured to receive the selection code and the encoded data, and decode the encoded data based on the selection code.
In Example 11, the encoding schemes of at least one of Examples 9-10 includes two or more of inverting only a first bit of each differential signal of the differential signals, inverting only a second bit of each differential signal of the differential signals, inverting both bits of each differential signal of the differential signals, or swapping the bits of each differential signal of the differential signals in accord with a table.
In Example 12, the encoding scheme quantifying and selection circuitry of at least one of Examples 9-11 determines an amount of net positive power reduction which each of the encoding schemes provides.
In Example 13, the encoding scheme quantifying and selection circuitry of Example 12 selects the encoding scheme corresponding to a greatest net positive power reduction.
In Example 14, the encoding scheme quantifying and selection circuitry of at least one of Examples 9-13 is further configured to select an encoding scheme of encoding schemes that produces a net positive power consumption reduction and a net positive noise reduction.
In Example 15, the encoding scheme quantifying and selection circuitry of Example 14 selects the encoding scheme based on a weighted net positive power consumption and a weighted net positive noise reduction.
Example 16 includes a device for selecting a differential signal encoding scheme, the device comprising means for producing respective signals indicating whether each respective encoding scheme of encoding schemes has a net positive power consumption reduction in a differential signal buffer based on differential signals. The device can further comprise means for selecting an encoding scheme of the encoding schemes based on the respective signals. The device can further comprise means for generating a selection code indicating the selected encoding scheme. The device can further comprise means for encoding the differential signals using the selected encoding scheme indicated by the selection code resulting in encoded data. The device can further comprise means for providing the encoded data to the differential signal buffer.
In Example 17, the encoding schemes of Example 16 include two or more of inverting only a first bit of each differential signal of the differential signals, inverting only a second bit of each differential signal of the differential signals, inverting both bits of each differential signal of the differential signals, or swapping the bits of each differential signal of the differential signals in accord with a table.
In Example 18, at least one of Examples 16-17, further includes means for determining an amount to which each of the encoding schemes provides the net positive power reduction.
In Example 19, Example 18 further includes means for selecting the encoding scheme corresponding to a greatest net positive power reduction.
In Example 20, at least one of Examples 16-19 further includes means for selecting an encoding scheme of encoding schemes that produces a net positive power consumption reduction and a net positive noise reduction.
Although an embodiment has been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader scope of the present disclosure. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings that form a part hereof show, by way of illustration, and not of limitation, specific embodiments in which the subject matter may be practiced. The embodiments illustrated are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be utilized and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. This Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
The subject matter may be referred to herein, individually and/or collectively, by the term “embodiment” merely for convenience and without intending to voluntarily limit the scope of this application to any single inventive concept if more than one is in fact disclosed. Thus, although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.
In this document, the terms “a” or “an” are used, as is common in patent documents, to include one or more than one, independent of any other instances or usages of “at least one” or “one or more.” In this document, the term “or” is used to refer to a nonexclusive or, such that “A or B” includes “A but not B,” “B but not A,” and “A and B,” unless otherwise indicated. In this document, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein.” Also, in the following claims, the terms “including” and “comprising” are open-ended, that is, a system, UE, article, composition, formulation, or process that includes elements in addition to those listed after such a term in a claim are still deemed to fall within the scope of that claim. Moreover, in the following claims, the terms “first,” “second,” and “third,” etc. are used merely as labels, and are not intended to impose numerical requirements on their objects.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. § 1.72 (b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.