Inversion encoding: Difference between revisions

Content deleted Content added
cap
Further reading: improved ref
 
(7 intermediate revisions by 6 users not shown)
Line 1:
{{Use dmy dates|date=August 2019|cs1-dates=y}}
'''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 oneones'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]]
 
== Performance analysis ==
The bus-invert method generates a code that has the property that the maximum number of transitions per time-slot is reduced from n to n/2+1 and thus the peak power dissipation for [[input/output]] (I/O) is reduced by nearly the half. From the [[coding theory]] point of view, the bus-invert code is a time-dependent Markovian code.
 
While the maximum number of transitions is reduced by half, the average number has a smaller decrease. For an 8-bit bus for example, the average number of transitions, using bus-invert coding becomes 3.27 (instead of 4), or 0.41 (instead of 0.5) transitions per bus-line per time-slot. This means that the average number of transitions is 81.8% of the number with an unencoded bus. This is because the invert line contributes some transitions and the distribution of the Hamming distances is not uniform.<ref name="Stan_1995"/>
Line 37 ⟶ 38:
== References ==
{{Reflist|refs=
<ref name="Stan_1995">{{cite journal |author-first1=Mircea R. |author-last1=Stan |author-first2=Wayne P. |author-last2=Burleson |title=Bus-Invert Coding for Low-Power I/O |journal=IEEE Transactions Onon Very Large Scale Integration (VLSI) Systems |volume=3 |number=1 |pages=49-5849–58 |date=March 1995 |id=1063-8210/95$04.00 |url=http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.89.2154&rep=rep1&type=pdf |access-date=2018-07-08 |dead-url=no |archive-url=https://web.archive.org/web/20180708204233/http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.11109/92.1.89.2154&rep=rep1&type=pdf365453 |archive-date=2018-07-08}}</ref>
}}
 
==Further reading==
* {{cite book |author-first=Vincent C. |author-last=Gaudet |chapter=Chapter 4.1. Low-Power Design Techniques for State-of-the-Art CMOS Technologies |editor-first=Bernd |editor-last=Steinbach |editor-link=:de:Bernd Steinbach |title=Recent Progress in the Boolean Domain |publisher=[[Cambridge Scholars Publishing]] |___locationpublication-place=Newcastle upon Tyne, UK |___location=Freiberg, Germany |edition=1 |date=2014-04-01 |orig-yeardate=2013-09-25 |isbn=978-1-4438-5638-6 |pages=187187–212 |url=https://books.google.com/books?id=_pwxBwAAQBAJ |access-212date=2019-08-04}} [https://web.archive.org/web/20210228020207/https://www.tau.ac.il/~ilia1/publications/rpbd_book.pdf<!-- https://m.tau.ac.il/~ilia1/publications/rpbd_book.pdf draft version 2013-09-25 -->] (xxx+428 pages)
 
[[Category:Electronics optimization]]