Bus encoding: Difference between revisions

Content deleted Content added
Rkedia20 (talk | contribs)
No edit summary
BG19bot (talk | contribs)
m WP:CHECKWIKI error fix for #64. Do general fixes if a problem exists. - using AWB (10901)
Line 1:
'''Bus Encoding''' refers to converting/encoding a piece of data to another form before launching on the bus. While Bus encoding can be used to serve various purposes like reducing the number of pins, compressing the data to be transmitted, reducing cross-talk between bit lines, etc., it is one of the popular techniques used in system design to reduce dynamic power consumed by the [[system bus]].<ref>[http://sportlab.usc.edu/~massoud/Papers/low-power-RTL-review-journal.pdf M. Pedram and A Abdollahi, “Low Power RT-Level Synthesis Techniques: A Tutorial”]</ref><ref name=devdasmalik>Devadas & Malik, “A Survey of Optimization Techniques targeting Low Power VLSI Circuits”, DAC 32, 1995, pp. 242-247</ref> Bus encoding aims to reduce the [[hamming distance]] between 2 consecutive values on the bus. Since the activity is directly proportional to the hamming distance, bus encoding proves to be effective in reducing the overall activity factor thereby reducing the dynamic power consumption in the system.
 
In the context of this article, a system can refer to anything where data is transferred from one element to another over bus (viz. [[System_on_a_chipSystem on a chip|System on a Chip]] (SoC), a computer system, an [[embedded system]] on board, etc.).
 
== Motivation ==
Power consumption in electronic systems is a matter of concern today for the below reasons:
#'''Battery-operated devices''': Due to ubiquity of battery operated devices and the need to maximize the duration between two subsequent charging of the battery, it is necessary that the system consumes as less power (and energy) as possible.
#'''Environmental constraints''': In an attempt to protect the environment, we need to conserve the usable energy. Since the energy consumed by electronic systems is increasing drastically, minimizing the energy consumption of electronic systems is critical to save the environment.
#'''Power Dissipation''': As per the [[Moore's_law|Moore's law]], semiconductor devices have been packing more and more transistors in smaller amount of area. This leads to higher power dissipation per unit area and makes packaging and thermal cooling system design complex and costly. Hence, low power electronic systems are needed to tackle this issue.
 
The dynamic power dissipated by an electronic circuit is directly proportional to the activity factor and the load capacitance as seen by the output of the logic gate. In case of a bus, the load capacitance is usually high since bus needs to be connected to multiple modules and routed longer and the activity factor is also high. Due to higher value of load capacitance and activity factor, in a typical system, bus power consumption can contribute upto 50% of the total power consumption. Bus encoding aims to reduce this power by reducing the amount of activity (number of toggles) in the bus lines. While the kind of bus encoding to be used for a particular system can be best determined when the target application and environmental constraints about the system are known apriori, described below are some bus encoding techniques which can help reduce bus power for most systems. Hence bus encoding is important for any electronic system design.
Line 12 ⟶ 13:
== Examples of bus encoding to achieve low power==
Following are some of the implementations to use Bus Encoding for reducing dynamic power consumption in different scenarios:
# '''[[Gray_CodeGray Code|Gray Encoding]]''':<ref name=massoud>[http://sportlab.usc.edu/~massoud/Papers/isqed-tut.pdf Wei-Chung Cheng and Massoud Pedram "Memory Bus Encoding for Low Power: A Tutorial"]</ref> The address lines of a bus in most of the computing systems increase in consecutive numerical values due to [[Locality_of_referenceLocality of reference|spatial locality]]. If we use regular binary coding for the bus, we are not assured of minimal hamming distance between 2 consecutive addresses. Using gray codes for encoding the address lines will lead to a hamming distance of 1 between any 2 consecutive address bus values (as long as spatial locality holds). There are variations to this scheme named Shifted gray encoding to reduce the delay overhead.<ref>http://www.sciencedirect.com/science/article/pii/S1383762110000159</ref>
# '''Sequential addressing or T0 codes''':<ref>L. Benini, G. De Micheli, E. Macii, D. Sciuto, C. Silvano, “Asymptotic Zero-Transition Activity Encoding for Address Buses in Low-Power Microprocessor-Based Systems,” Proc. Seventh Great Lakes Symposium on VLSI, pp. 77-82, Mar.1997.</ref> In case of address bus, due to spatial locality that exists in programs, most of the transitions involve changing the address to the next consecutive value. A possible encoding scheme is to use an additional line, INC, in the bus indicating whether the current transition is the next increment address or not. If it is not a consecutive address, then the receiver can use the value on the bus. But if it is a consecutive address, the transmitter need not change the value in the bus, but just assert the INC line to 1. In such case, for a continuous addressing scheme, there is no transition at all on the bus, leading to a bus activity factor of 0.
# '''Number representation''': Let us consider an example of a system which gets one of its data from a sensor. Most of the times, the sensor may be measuring some noise and for this example, let us consider that the values being measured are (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 2’s complement representation. We see that the hamming distance in this case is 32 (since all 32-bits are changing their state). Instead, if we encode the bus to use signed integer representation (MSB is sign bit), we can represent 0 as 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) and -1 as 0x80000001 (1000 0000 0000 0000 0000 0000 0000 0001) . In this case, we see that the hamming distance between the numbers is just 2. Hence by using a 2’s complement to signed arithmetic encoding, we are able to reduce the activity from a factor of 32 to 2.
Line 35 ⟶ 36:
 
== See also ==
* [[CPU_power_dissipationCPU power dissipation|Power Dissipation]]
* [[Low-power_electronics|power electronics|Low Power Electronics]]
* [[Green_computingGreen computing| Green Computing]]
 
==References==