U.S. patent application number 14/335712 was filed with the patent office on 2016-01-21 for systems and methods for transition-minimized data bus inversion.
The applicant listed for this patent is QUALCOMM Incorporated. Invention is credited to Thomas Clark Bryan, Alvin Leng Sun Loke, Tin Tin Wee.
Application Number | 20160019179 14/335712 |
Document ID | / |
Family ID | 55074699 |
Filed Date | 2016-01-21 |
United States Patent
Application |
20160019179 |
Kind Code |
A1 |
Loke; Alvin Leng Sun ; et
al. |
January 21, 2016 |
SYSTEMS AND METHODS FOR TRANSITION-MINIMIZED DATA BUS INVERSION
Abstract
Circuits and methods for Data Bus Inversion (DBI) are provided.
In one example, the immediately previous value of the DBI bit
affects the next value of the DBI bit. Specifically, in some
instances, the value of the DBI bit is held to the immediately
previous value of the DBI bit to limit the total number of
transitions on a data bus.
Inventors: |
Loke; Alvin Leng Sun; (San
Diego, CA) ; Wee; Tin Tin; (San Diego, CA) ;
Bryan; Thomas Clark; (San Diego, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
QUALCOMM Incorporated |
San Diego |
CA |
US |
|
|
Family ID: |
55074699 |
Appl. No.: |
14/335712 |
Filed: |
July 18, 2014 |
Current U.S.
Class: |
341/58 |
Current CPC
Class: |
G06F 13/4072 20130101;
G06F 13/4208 20130101 |
International
Class: |
G06F 13/40 20060101
G06F013/40; G06F 13/42 20060101 G06F013/42 |
Claims
1. A method comprising: receiving a plurality of data bits to
transmit across a data bus; comparing the plurality of data bits to
a previous plurality of data bits to determine a number of bit
transitions from the previous plurality of data bits to the
plurality of data bits; setting an inversion control bit to a value
based at least in part on the number of bit transitions and a
previous value of the inversion control bit; and transmitting the
inversion control bit and either the plurality of data bits or an
inverse of the plurality of data bits across the data bus.
2. The method of claim 1, further comprising: inverting the
plurality of data bits in response to determining that the number
of bit transitions is N/2, where N is an integer number of the
plurality of data bits, and in response to determining that the
previous value of the inversion control bit indicates an
inversion.
3. The method of claim 1, further comprising: not inverting the
plurality of data bits in response to determining that the number
of bit transitions is N/2, where N is an integer number of the data
bits, and in response to determining that the previous value of the
inversion control bit indicates no inversion.
4. The method of claim 1, further comprising: receiving the
transmitted inversion control bit and either the plurality of data
bits or the inverse of the plurality of data bits from the data
bus.
5. The method of claim 1, wherein the previous plurality of data
bits is one bit time earlier than the plurality of data bits.
6. The method of claim 1 in which comparing the plurality of data
bits to a previous plurality of data bits comprises: comparing
individual data bits of the plurality of data bits bit-wise with
individual bits of the previous plurality of data bits.
7. The method of claim 1, wherein comparing the plurality of data
bits to the previous plurality of data bits to determine the number
of bit transitions comprises: adding a number of zero-to-one bit
transitions times a first weight to a number of one-to-zero bit
transitions time a second weight to calculate the number of bit
transitions.
8. The method of claim 1, further comprising: transmitting a
forwarded clock concurrently with transmitting the inversion
control bit and either the plurality of data bits or the inverse of
the plurality of data bits across the data bus.
9. The method of claim 1, wherein comparing the plurality of data
bits to a previous plurality of data bits comprises: determining a
number of zero-to-one bit transitions between the previous
plurality of data bits and the plurality of data bits; further
wherein setting the inversion control bit comprises: setting the
inversion control bit to a value based at least in part on the
number of zero-to-one bit transitions and the previous value of the
inversion control bit.
10. The method of claim 1, wherein comparing the plurality of data
bits to a previous plurality of data bits comprises: determining a
number of one-to-zero bit transitions between the previous
plurality of data bits and the plurality of data bits; further
wherein setting the inversion control bit comprises: setting the
inversion control bit to a value based at least in part on the
number of one-to-zero bit transitions and the previous value of the
inversion control bit.
11. A computer processor including a semiconductor die, the
computer processor comprising: a multiple-bit-wide output to a data
bus; and an inversion logic circuit in communication with the
multiple-bit-wide output to the data bus, the circuit adapted to
perform the following operation: setting an inversion control bit
to a value based at least in part on a previous value of the
inversion control bit; and transmitting the inversion control bit
and either a plurality of data bits or an inversion of the
plurality of data bits across the data bus in accordance with the
value of the inversion control bit.
12. The computer processor of claim 11, further comprising: another
semiconductor die adapted to receive the inversion control bit and
the plurality of data bits or the inversion of the plurality of
data bits from the data bus.
13. The computer processor of claim 11, wherein the circuit is
further adapted to perform: comparing the plurality of data bits to
a previous plurality of data bits to determine a number of bit
transitions, wherein the previous plurality of data bits is one bit
time earlier than the plurality of data bits; and setting the
inversion control bit to the value based at least in part on the
number of bit transitions.
14. The computer processor of claim 11, wherein setting the
inversion control bit comprises: setting the inversion control bit
to its immediately previous value in response to determining that
the number of data bit transitions is N/2, where N is an integer
number of the data bits.
15. A method comprising: receiving N data bits at an inversion
logic module, where N is a positive integer corresponding to a data
bit width of a data bus; comparing the N data bits to a previous N
data bits to determine a number of bit transitions; setting a data
bus inversion (DBI) control bit to a value determined by its
immediately previous value in response to determining that the
number of bit transitions equals N/2; and transmitting the
following items across data bus: the DBI control bit; and either
the N data bits or an inversion of the N data bits.
16. The method of claim 15, further comprising: inverting the N
data bits in response to determining that the number of bit
transitions is N/2, and in response to determining that the
immediate previous value of the DBI control bit indicates an
inversion.
17. The method of claim 15, further comprising: not inverting the N
data bits in response to determining that the number of bit
transitions is N/2, and in response to determining that the
immediate previous value of the DBI control bit indicates no
inversion.
18. The method of claim 15, wherein comparing the N data bits to
the previous N data bits comprises: determining a number of
zero-to-one bit transitions; further wherein setting the DBI
control bit comprises: setting the DBI control bit to a value based
at least in part on the number of zero-to-one bit transitions and
the previous value of the DBI control bit.
19. The method of claim 15, wherein comparing the N data bits to
the previous N data bits comprises: determining a number of
one-to-zero bit transitions; further wherein setting the DBI
control bit comprises: setting the DBI control bit to a value based
at least in part on the number of one-to-zero bit transitions and
the previous value of the DBI control bit.
20. The method of claim 15, wherein the previous N data bits are
one bit time earlier than the N data bits, further in which
comparing the N data bits to the previous N data bits comprises a
bit-wise comparison.
Description
TECHNICAL FIELD
[0001] This application relates to Data Bus Inversion (DBI), and
more particularly, to systems and methods to minimize data
transitions using DBI.
BACKGROUND
[0002] In single-ended parallel Input/Outputs (IOs) such as a
Double Data Rate (DDR) transfer-mode bus, data bus inversion (DBI)
is an increasingly popular coding scheme that reduces signaling
power and simultaneous switching output (SSO) noise, thereby
improving power and signal integrity. An example is an 8-bit data
bus. In an 8-bit DBI-encoded data bus, the eight data bits are
transmitted either as-is or inverted for each bit unit interval. At
each bit unit interval, an extra coding overhead bit (also referred
to as the DBI bit) accompanies the transmitted data bits to inform
the receiver whether an intentional bus-wide inversion took place.
For example, when the coding overhead bit is set to a logical one,
it may indicate that the data bits of the bus are inverted. The
receiver receives the data bits and the overhead bit, and if the
overhead bit indicates that the data bits are inverted, the
receiver may then revert the data bits to their proper values.
[0003] One example conventional DBI scheme, referred to as DBI-DC,
is used where the receiver end is resistively terminated. In
DBI-DC, the inversion criterion is to invert the bits of the bus
when more than half of the bits of the parallel data pattern are
binary ones (in a ground-terminated interface), thereby limiting
the maximum number of transmitted ones to half of the data bus
width. This reduces the static current and power delivered by the
parallel transmitting drivers in a given bit time interval.
[0004] Another example conventional DBI scheme is referred to as
DBI-AC. In a conventional DBI-AC scheme the receiver end is
unterminated to avoid static power consumption, and the inversion
criterion is to invert the bus when more than half of the parallel
data pattern would undergo transitions (zero-to-one or one-to-zero)
in progressing from the current bit time interval to the next. For
example, if a unit interval would otherwise cause five data bit
transitions, the DBI logic inverts the bus so as to cause only
three data bit transitions.
[0005] This reduces the dynamic current and power consumed by the
transmitting driver since data transitions consume power in an
unterminated link. Moreover, a large number of bit transitions may
cause a phenomenon referred to as "ground bounce" or "supply
bounce," where the voltage supplied to a gate may temporarily dip
and cause jitter. Conventional DBI-AC attempts to reduce ground
bounce and supply bounce by reducing the number of transitions in a
bit time interval.
[0006] In conventional DBI-AC, where N is an even integer number of
data bits on a parallel bus, the maximum number of transitions
permitted by conventional DBI is N/2+1 (where the "+1" refers to a
possible transition of the DBI bit itself). In an example where the
bus width is N=8 plus one DBI bit, the maximum number of
transitions in the transmitted bus is limited by DBI to 4+1=5.
There is still a need in the art for improved DBI-AC
techniques.
SUMMARY
[0007] Circuits and methods for DBI-AC are provided. In one
example, the immediately previous value of the DBI bit affects the
next value of the DBI bit. Specifically, in some instances, the
value of the DBI bit is held to the immediately previous value of
the DBI bit to limit the total number of transitions on a data
bus.
[0008] In order to further reduce a number of transitions, a
proposed improvement to DBI includes taking the overhead DBI bit
into account when determining whether or not to invert the bus.
Various examples provided herein propose to hold a DBI value
constant in some instances to limit the total number of bit
transitions on a bus to N/2, where N is an integer number of the
parallel data bits that comprise the bus. In one example, if the
number of transitions of the data bits is equal to N/2, the DBI
value is set to the immediately previous DBI value to avoid
transitioning the DBI bit. The bits are then either inverted or not
inverted according to the value of the DBI bit.
[0009] In some embodiments, a further aspect may include optimizing
the above-presented technique to minimize 0.fwdarw.1 or 1.fwdarw.0
transitions depending on asymmetry in the ground (Vss) and supply
(Vdd) power delivery networks (PDNs). In some systems, the quality
of the Vdd PDN may be a concern, so there is a desire to minimize
0.fwdarw.1 transitions which pull current from the VDD PDN. A
technique including such improvement would count a number of one
type of transition (e.g., 0.fwdarw.1) and then hold the value of
the DBI bit to prevent another such transition, when
appropriate.
[0010] Various embodiments provide one or more advantages over
conventional solutions. For instance, some embodiments improve upon
the conventional DBI-AC scheme by additionally accounting for
possible transitioning of the DBI bit. The result is the maximum
number of transitions being no more than half of the data bus
width. In an 8-bit data bus example, which is nine bits wide with
the DBI bit, the maximum number of transitions with this
improvement would be limited to four. This reflects a 20% maximum
power reduction by virtue of limiting the maximum number of
transitioning bits from five to four. Of course, the scope of
embodiments is not limited to any particular number of bits in a
bus. Such embodiments may further provide improved power integrity
by reducing the current drawn from the supply or sent to ground
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] FIG. 1 is a flowchart of an example method according to one
embodiment.
[0012] FIG. 2 is a table of showing example bit transitions
according to one embodiment with a data bus 8-bits wide.
[0013] FIG. 3 is a flow diagram for an example method for
performing data bus inversion, according to one embodiment.
[0014] FIG. 4 is a flow diagram for an example method for
performing data bus inversion, according to one embodiment.
[0015] FIG. 5 shows example inversion logic circuits according to
one embodiment.
[0016] FIG. 6 shows a functional view of an example die-to-die
interface, according to one embodiment of the present
disclosure.
DETAILED DESCRIPTION
Example Methods of Use
[0017] The inventors have observed that a problem with some
conventional DBI-AC is that it does not account for transitions in
the DBI bit itself. So for example, in an 8-bit data bus which is
9-bit wide including the DBI bit, the maximum number of transitions
could actually be five (half of eight plus the DBI bit transition)
in some conventional DBI-AC systems. By contrast, various
embodiments limit the maximum number of transitions to N/2, which
would be four transitions maximum on an 8-bit wide data bus.
[0018] FIG. 1 is a flowchart of method 100 according to one
example. Method 100 may be performed, for example, by an inversion
logic circuit at a die-to-die parallel interface in which a data
bus transmits bits of data from one die to another die. An example
die-to-die interface is shown in FIG. 6, which is described in more
detail below.
[0019] At action 110, the inversion logic circuit counts a number
of transitions from previously-transmitted data bits to current
(untransmitted) data bits across the N-bit data bus. In this
example, a given bit transitions when the current value of the bit
is different from the value of the bit that was previously
transmitted. For instance, if a given bit was transmitted as a
binary zero in the previous bit time interval, the inversion logic
circuit counts a transition when it receives the bit as a binary
one in the current bit time interval as part of the data pattern.
So the bit transition that is counted at action 110 is a potential
bit transition.
[0020] FIG. 2 is a table showing example bit transitions according
to one embodiment with a data bus 8-bits wide. FIG. 2 includes a
set of columns denoted as "data pattern," which shows the true bits
as they are received by the inversion logic circuit. The set of
columns denoted "transmitted pattern" show the bits as they are
transmitted, either as-is or inverted. Bit transitions at action
110 are counted by comparing a bit time interval of the transmitted
pattern columns to the immediately subsequent bit time interval in
the data pattern columns on a bit-by-bit basis. The column labeled
"No. Transitions from Previous Transmitted Bits to Current
Untransmitted Bits" shows transitions counted at action 110 in this
example.
[0021] An example bit transition according to action 110 is shown
in FIG. 2 at bit time intervals 2 and 3. Specifically, data bit 2
was transmitted as a binary one at bit time interval 2 (Transmitted
column) but is received as a binary zero at bit time interval 3
(Data Pattern column). It is counted as one transition at action
110. The transitions are counted bit-wise so that data bit 0 is
compared to data bit 0, data bit 1 is compared to data bit 1, data
bit 2 is compared to data bit 2, etc. Between bit time intervals 2
and 3, bits 4, 5, and 6 also count toward the number of transitions
at action 110. Thus, from bit time interval 2 to bit time interval
3, the number of transitions counted is four.
[0022] Returning to FIG. 1, the number of transitions counted at
action 110 is a deciding factor regarding which one of actions 120,
130, 140 is performed next. If the number of transitions at action
110 is smaller than N/2, then the method 100 proceeds to action
120. At action 120, the inversion logic sets the DBI bit to zero
and does not invert the data bus.
[0023] It is noted in this example that a DBI bit set to zero
indicates no inversion, whereas a DBI bit value of one indicates an
inversion of the transmitted data on the data bus. However, in
other embodiments, the relationship may be different such that zero
indicates an inversion and one indicates no inversion.
[0024] If the number of transitions counted by the inversion logic
at action 110 is greater than N/2, then the inversion logic sets
the DBI bit value to one and inverts the data bus at action
140.
[0025] If the number of bit transitions counted by the inversion
logic at action 110 is equal to N/2, then the DBI bit is set to its
immediately previous value to avoid a transition of the DBI bit.
Looking at the example of FIG. 2, from bit time interval 2 to bit
time interval 3, the number of counted transitions is N/2 (four in
this example); thus, the inversion logic progresses to action 130
of FIG. 1. In the example of FIG. 2, the value of the DBI bit at
bit time interval 2 is one, so the inversion logic sets the DBI
value to one at bit time interval 3. The inversion logic then
inverts the data bits on the bus accordingly. Ovals in FIG. 2 show
actual bit transitions occurring on the data bus between bit time
intervals 2 and 3 according to the actions 110 and 140.
[0026] In an alternate example, had the value of the DBI bit been
zero at bit time interval 2, then the inversion logic would have
set the DBI bit to zero at bit time interval 3 after having counted
N/2 bit transitions. A DBI value of zero in this example indicates
that the data bits are put on the data bus as-is (not
inverted).
[0027] When method 100 progresses to action 130, the inversion
logic avoids transitioning the DBI bit, in contrast to conventional
DBI-AC algorithms. Thus, in the example of FIGS. 1 and 2, the value
of the DBI bit during a current bit time interval is dependent (at
least in part) on the value of the DBI bit in the immediately
previous bit time interval.
[0028] The scope of embodiments is not limited to the specific
method shown in FIG. 1. Other embodiments may add, omit, rearrange,
or modify one or more actions. In some examples, the method further
includes transmitting the bits or the inverted bits on the data bus
to a receiver. The receiver then either leaves the bits as-is or
reverts the inverted bits depending upon the value of the DBI bit.
Furthermore, in some examples, method 100 is repeated at each bit
time interval millions or billions of times during operation of a
computer processor. This is illustrated in part by FIG. 2, which
shows five bit time intervals, though it is understood that the
number of bit time intervals that can be performed by an inversion
logic circuit is not limited to any number.
[0029] FIG. 3 is a flow diagram for an example method 300 for
performing data bus inversion, according to one embodiment. Method
300 may be performed by inversion logic circuits in communication
with a data bus, as in the example of FIG. 5. In the particular
example of FIG. 3, actions 310-340 may be performed by inversion
logic at the transmitting side of the data bus, and action 350 may
be performed by inversion logic at the receiving side of the data
bus.
[0030] At action 310, the inversion logic circuit receives multiple
data bits to transmit across a data bus. In some embodiments, the
inversion logic circuit receives bits of data in parallel (e.g.,
eight bits or thirty-two bits).
[0031] At action 320, the inversion logic circuit compares the data
bits to previous data bits to determine a number of bit
transitions. For instance, in the embodiment of FIGS. 1 and 2, the
inversion logic circuit compares the current received data bits to
the bits that were transmitted in the immediately previous bit time
interval. The bits that were transmitted in the immediately
previous bit time interval may or may not have been inverted.
Action 320 is similar to action 110 of FIG. 1 in that the number of
bit transitions are potential bit transitions and may or may not be
actual transitions on the data bus, depending on whether the data
bits are eventually inverted in a subsequent action.
[0032] At action 330, the inversion logic circuit sets an inversion
control bit to a value based at least in part on the number of
transitions and a previous value of the inversion control bit. An
example of an inversion control bit is the DBI bit of FIGS. 1 and
2.
[0033] The action 330 includes setting the inversion control bit to
a value based on the number of transitions counted in action 320
and on the previous value of the inversion control bit. An example
is shown at action 130 of FIG. 1 in which the inversion control bit
value depends on both the number of counted transitions and on the
previous value of the inversion control bit.
[0034] At action 340, the inversion logic circuit transmits the
inversion control bit and either the data bits or inverted data
bits across the data bus. For instance, if the inversion control
bit is set to indicate an inversion, then the inversion logic
circuit inverts the data bits before sending them across the data
bus. On the other hand, if the inversion control bit is set to
indicate no inversion, then the inversion logic circuit sends the
data bits as-is across the data bus.
[0035] At action 350, an inversion logic circuit at the receiving
end of the data bus receives the inversion control bit and the bits
or inverted bits that were transmitted at action 340. The inversion
control bit informs the receive-side circuitry whether the data
bits are inverted. Action 350 may further include, in some
embodiments, the inversion logic circuit at the receiving end
determining that the inversion control bit indicates an inversion
and reverting the inverted data bits in response to the inversion
control bit.
[0036] On the other hand, action 350 may include the inversion
logic circuit at the receiving end determining that the inversion
control bit indicates no inversion and not inverting the data bits
in response to the inversion control bit. In any event, the
inversion logic circuit at the receive-side of the data bus
receives the bits and either does or does not revert the bits
depending upon the value of the received inversion control bit.
[0037] The scope of embodiments is not limited to the specific
method shown in FIG. 3. As with the examples above, method 300 may
be repeated at each bit time interval millions or billions of times
during operation of a computer processor. It is understood that the
number of bit time intervals that can be performed by an inversion
logic circuit is not limited to any number.
[0038] Furthermore, some embodiments of method 300 may include
performing actions in response to a polarity of particular bit
transitions counted at action 320. FIG. 4 is a flow diagram for an
example method 400 for performing data bus inversion, according to
one embodiment. Method 400 may be performed by inversion logic
circuitry, such as that illustrated in FIG. 5.
[0039] Action 410 is similar to action 110 of FIG. 1 but with the
difference that action 410 counts only 0.fwdarw.1 transitions
rather than the total number of transitions. Referring to FIG. 2,
bit five transitions from zero to one between bit time intervals 2
and 3, though that is just an example of one such 0.fwdarw.1
transition. As with the examples above, bit transitions at action
410 are counted by comparing an immediately previous bit time
interval of the transmitted pattern columns to the current bit time
interval in the data pattern columns
[0040] If the number of 0.fwdarw.1 transitions is less than N/2,
then the inversion logic circuit progresses to action 420 by
setting the DBI bit to indicate no inversion. The data are sent
as-is across the data bus.
[0041] If the number of 0.fwdarw.1 transitions is greater than N/2,
then the inversion logic circuit progresses to action 440 by
setting the DBI bit to indicate an inversion. The data are then
inverted and sent across the data bus.
[0042] However, if the number of 0.fwdarw.1 transitions is equal to
N/2, then the inversion logic circuit sets the DBI bit to its
immediately previous value at action 430. In another embodiment,
action 430 includes setting the DBI bit to zero if its previous
value was zero in order to avoid a 0.fwdarw.1 transitions of the
DBI bit. The inversion circuit either inverts or does not invert
the data (depending on the value of the DBI bit) and sends the data
or inverted data across the data bus.
[0043] The embodiment of FIG. 4 addresses 0.fwdarw.1 transitions,
though it is understood that the scope of embodiments is not so
limited. Another embodiment counts the number of 1.fwdarw.0
transitions instead and then progresses to actions 420-440
accordingly to minimize a number of 1.fwdarw.0 transitions. The
principles of FIG. 4 may be applied to transitions of either
polarity. The embodiment of FIG. 4 attempts to minimize a number of
transitions of a single polarity (either 0.fwdarw.1 or 1.fwdarw.0)
rather than the total number of bit transitions at a bit time
interval.
[0044] Such embodiments may be especially applicable to systems
that have asymmetry in Vss and Vdd power delivery networks (PDNs).
In some example systems, the Vdd PDN is more susceptible to voltage
dips, so a DBI technique that minimizes 0.fwdarw.1 transitions may
be more beneficial than a technique that minimizes a total number
of transitions regardless of polarity.
[0045] In fact, some embodiments apply respective weights to
0.fwdarw.1 and 1.fwdarw.0 transitions. Returning to FIG. 1, the
number of transitions at action 110 may be defined as W1 times the
number of 0.fwdarw.1 transitions plus W2 times the number of
1.fwdarw.0 transitions, where W1 is a first weight and W2 is a
second weight. Using this approach, when W1=1 and W2=1, the actions
are the same as those described above with respect to the
embodiment of FIG. 1 in which both transition types are counted
equally. When W1=1 and W2=0, the actions follow those of the
embodiment of FIG. 4 in which transitions from 0 to 1 are counted,
but transitions from 1 to 0 are not counted. However, the scope of
embodiments is not limited to weights being either 0 or 1 for a
polarity of transition. In another example, W1 is greater than 0
but less than or equal to 1, and for W2 is also greater than 0 but
less than or equal to 1, though W1 does not necessarily equal W2.
Thus, if a Vdd PDN is more susceptible to voltage dips, W1 may be
set higher than W2. And if a Vss PDN is more susceptible to voltage
fluctuation, then W2 may be set higher than W1.
[0046] Various embodiments may provide one or more advantages over
conventional DBI-AC techniques. For instance, embodiments limiting
a total number of transitions may provide for a total power
reduction commensurate with limiting transitions to a maximum of
N/2 at a given bit interval. Reducing transitions may also reduce
noise jitter and enable a higher data rate in some systems. Also,
as noted above, some embodiments may be optimized to minimize
transitions of a single polarity and may provide reduced jitter in
systems with asymmetric PDNs.
Example Circuit Embodiments
[0047] FIG. 5 shows example inversion logic circuits 510 and 520
according to one embodiment. Inversion logic circuits 510 and 520
are shown with eight bits, through it is understood that the scope
of embodiments may include inversion logic circuits adapted to
employ any appropriate number of bits. For instance, in the
embodiment of FIG. 6 (described below), inversion logic circuits
510 and 520 would employ thirty-two data bits as well as the DBI
bit. Inversion circuit 510 may be included in a transmit path,
whereas inversion circuit 520 may be included in a receive
path.
[0048] Inversion logic circuit 510 includes on the left-hand side
eight data bit inputs 0-7 and on the right-hand side eight data bit
outputs 0-7 and a DBI bit output. Comparing logic 511 is employed
to perform actions 110 and 410 (of FIGS. 1 and 4, respectively) to
compare currently-received bits to previously-transmitted bits and
identify a number of transitions. For instance, the bits may be
received (as at action 310 of FIG. 3) at the inputs 0-7 on the
left-hand side of circuit 510. Comparing logic 511 then determines
a number of transitions.
[0049] Inversion logic circuit 510 also includes DBI selection
circuitry 513 to set the DBI bit according to actions 120-140 and
410-440 of FIGS. 1 and 4, respectively. Thus, circuitry 513 can set
the DBI bit to indicate inversion, to indicate no inversion, or to
an immediately previous value of the DBI bit as appropriate. An
example is described above with respect to action 330 of FIG. 3.
Inversion logic circuit 510 also includes a bank of inverters 512
to invert the data bits when the DBI bit indicates inversion.
Inverters 512 may be bypassed when the DBI bit indicates no
inversion. Circuit 510 outputs either the bits or inverted bits at
the outputs 0-7 on the right-hand side.
[0050] Although not shown herein, inversion logic circuits 510 and
520 may be coupled to each other through a data bus. Inversion
logic circuit 520 receives the data bits and the DBI bit at its
inputs on the left-hand side. If the DBI bit indicates inversion,
then inverters 521 revert the inverted bits. If the DBI indicates
no inversion, then inverters 521 may be bypassed. Inversion logic
circuit 520 outputs the data bits to downstream circuitry (not
shown) at its data outputs on the right-hand side. In this example,
the data bits output at the right-hand side of circuit 520 are the
same data bits received at the left-hand side inputs of circuit
510.
[0051] One particular application of the example embodiments is at
a die-to-die interface in a multi-die package. An example of a
multi-die package includes a computer processor that has multiple
processing components implemented as separate die. The die
communicate with each other over a data bus, and one die may also
forward a clock to the other die, as explained in more detail below
with respect to FIG. 6. The scope of embodiments includes applying
the principles described above to any appropriate system using a
parallel interface and may include parallel interface applications
other than at die-to-die interfaces.
[0052] FIG. 6 shows a functional view of an example die-to-die
interface, according to one embodiment of the present disclosure.
The die-to-die interface of FIG. 6 is part of a multi-die computer
processor. FIG. 6 is provided to show how inversion logic circuits,
such as circuits 510 and 520, may be disposed in a multi-die
package having die 1 and die 2. In this example, die 1 includes
inversion logic circuit 510 and die 2 includes inversion logic
circuit 520, where both circuits 510 and 520 handle thirty-two bits
of data (i.e., N=32).
[0053] Die 1 includes data pads 610 and a clock pad 630. In this
example, data pads 610 includes thirty-two data pads (<31:0>)
and may be arranged, e.g., in a four-by-eight grid of nodes. Each
of the thirty-two data pads may be associated with a particular bit
of data on a thirty-two bit-wide data bus. The scope of embodiments
is not limited to any specific data bus width.
[0054] In this example, die 1 transmits data and clock signals to
die 2 during mission mode as follows. Clock pad 630 is used to
forward the clock from die 1 to die 2. In this example, the clock
reaches via 631, which is externally exposed at die 1 and
propagates over clock route 635 to via 641 at clock pad 640. Thus,
the data is accompanied by a forwarded clock in the embodiment of
FIG. 6.
[0055] Die 1 includes transmit clock tree 615, which is shown
conceptually in FIG. 6. Transmit clock tree 615 includes buffers to
receive the clock (from Clk in), metal routes to data pads 610, and
a metal route to clock pad 630. During mission mode, transmit clock
tree 615 communicates the clock signal to die 2 by way of via 631
and clock path 635.
[0056] Focusing on die 2 during mission mode, receive clock tree
625 includes buffers to receive the clock from clock pad 640 and
metal routes to distribute the clock to data pads 620. Data pads
620 include thirty-two nodes in this example, where each of the
nodes corresponds to one of the nodes of data pads 610. In some
examples, data nodes 610 and 620 are arranged in a spatial pattern
such that a pair of corresponding nodes (one a transmit node and
one a receive node) are similarly placed upon their respective die.
Thus, each of the thirty-two data forwarding routes 645 may be
uniform in length (and match a length of clock forwarding route
635). In fact, die 1 and die 2 are similar to each other in makeup
in this example.
[0057] Returning to die 1, during mission mode the clock is
distributed by transmit clock tree 615 to the thirty-two data pads
610. Each data pad 610 in this example includes a flip-flop 611,
which is storing data. When a given flip-flop 611 receives the
clock edge it forwards the data to its respective via 612. The data
is then transported on a respective data forwarding route 645 to
its corresponding node within data pads 620. Both the data and the
clock are sent from die 1 to die 2 in this mission mode example, so
the clock signal is also passed from transmit clock tree 615 to via
631, clock path 635, via 641 (at clock pad 640), receive clock tree
625, and to respective flip-flops 621. The data is received by a
respective via 622 and is captured by its respective flip-flop 621
at the clock edge.
[0058] Die 1 includes inversion logic circuit 510 at DATA IN before
transmit flip-flops 611. Thus, during those bit time intervals in
which the data is inverted, it is inverted before it reaches
flip-flops 611. The data bits (whether inverted or not) are sent
from die 1 to die 2 over the N-bit data bus shown as routes 145.
Although not explicitly shown herein, the DBI bit is also latched
and forwarded from die 1 to die 2 and then captured at die 2 and
passed on to circuit 520 with the data bits. In those data bit
intervals in which the data bits are inverted, inversion logic
circuit 520 reverts the data bits as appropriate before sending the
data to DATA OUT.
[0059] The examples of FIGS. 5 and 6 above are provided for
illustrative purposes, and it is understood that the scope of
embodiments is not limited to the specific embodiments shown above.
For instance, a die may have any appropriate number of bits
(whether thirty-two, fifty, or another number). Also, the
flip-flops at the nodes may operate on either a rising or falling
clock edge, as appropriate. Furthermore, while FIGS. 5 and 6 shows
flip-flops to capture data, any appropriate sequential logic
circuit may be used in various embodiments.
[0060] As those of some skill in this art will by now appreciate
and depending on the particular application at hand, many
modifications, substitutions and variations can be made in and to
the materials, apparatus, configurations and methods of use of the
devices of the present disclosure without departing from the spirit
and scope thereof. In light of this, the scope of the present
disclosure should not be limited to that of the particular
embodiments illustrated and described herein, as they are merely by
way of some examples thereof, but rather, should be fully
commensurate with that of the claims appended hereafter and their
functional equivalents.
* * * * *