Inversion encoding: Difference between revisions

Content deleted Content added
cap
Removed unencyclopedic tone
Line 1:
'''Inversion encoding''' is an encoding technique used for [[Bus encoding|encoding bus transmissions]] for low power systems. It is based on the fact that a large amount of power is wasted because of transitions, especially in external buses, and thus reducing these transitions aids optimization of [[power dissipation]]. This is done introducing an additional signal line named INV to the bus lines. This linesignal determines whether the other lines should be inverted or not.
 
== Overview ==
 
The bus-invert encoding technique uses an extra signal (INV) to indicate the "polarity" of the data. Suppose we haveHaving a bus-invert code word INV@x where @ is the concatenation operator, and x denotes either the source word or its [[ones' complement]]., Thethe bus-invert decoder takes the code word and produces the corresponding source word. If the INV signal is 1, the result is one's complement of x, otherwise it is x.
 
=== Usage situationsscenarios===
* High capacitance lines
* High switching activitiesactivity
 
=== Bus-invert method ===
 
# Compute theThe [[Hamming distance]] (the number of bits in which they differ) between the present bus value (also counting the present invert line) and the next data value is computed.
# If the Hamming distance is larger than n/2, set ''invert'' =is set to 1, and make the next bus value is made equal to the inverted next data value.
# Otherwise let ''invert'' =is set to 0, and let the next bus value is equal to the next data value.
# At the receiver side the contents of the bus must be conditionally inverted according to the invert line, unless the data is not stored encoded as it is (e.g., in a RAM). In any case, the value of invert must be transmitted over the bus (the method increases the number of lines from n to n+1).<ref name="Stan_1995"/>
 
== Example ==
Let us considerConsidering an example of a system which gets one of its data from a sensor., Mostmost of the time, the sensor may be measuring some noise. For this example, let us consider that the values being measured areshould be assumed to be (0) and (-1) alternatively. For a 32-bit data bus, value 0 translates to 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) while (-1) translates to 0xFFFFFFFF (1111 1111 1111 1111 1111 1111 1111 1111) in a [[two's complement|2’s complement]] representation. The Hamming distance in this case is 32 (since all 32- bits are changing their state). The Hamming distance is much smaller using the [[signed number representation|sign bit representation]]. However, even using 2two's complement, inversion encoding reduces the activity necessary. In this case 0 would be represented as 0x00000000 with INV=0 and -1 would be represented as 0x00000000 with INV=1. Since INV=1, the receiver would invert the data before consuming it, thereby converting it to 0xFFFFFFFF internally. In this case, only 1 bit (INV bit) is changed in the bus, leading to an activity of factor 1, which is even better than sign bit representation.
 
[[File:Overviewbusencoding.png|thumb|Overview for Performance Analysis: inversion encoding]]