Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
sav08:bitwidth_analysis [2008/05/20 13:57] vkuncak |
sav08:bitwidth_analysis [2008/05/20 18:58] vkuncak |
||
---|---|---|---|
Line 2: | Line 2: | ||
Given a language with signed 64 bit integers, determine as small as possible set of bits needed to store values of variables. | Given a language with signed 64 bit integers, determine as small as possible set of bits needed to store values of variables. | ||
- | * if the bit is small we can use e.g. 'byte' to store it | + | * e.g. if analysis derives that a subset of $\{0,1,2,\ldots,7\}$ is sufficient, then we can use //byte// type to store the value |
- | * it becomes even more important if we generate hardware from C code (saving wires) | + | * the analysis becomes even more important if we generate hardware from C code: analysis would enable us to save circuits and power |
Let B = {-32,-31,...,-1,0,1,...,31} be a set of bits. | Let B = {-32,-31,...,-1,0,1,...,31} be a set of bits. | ||
Line 15: | Line 15: | ||
One simple rule: $g(x)=$ | One simple rule: $g(x)=$ | ||
+ | ++++| | ||
+ | \[\begin{array}{l} | ||
+ | let\ L = \min(g(y)) + \min(g(z))-1 \\ | ||
+ | let\ U = \max(g(y)) + \max(g(z))+1 \\ | ||
+ | if\ (L < 32) \lor (U > 31)\ then\ B \\ | ||
+ | else\ [L,U] | ||
+ | \end{array} | ||
+ | \] | ||
++++ | ++++ | ||
- | | | ||
- | let L = $\min(g(y)) + \min(g(z))-1$ | ||
- | let U = $\max(g(y)) + \max(g(z))+1$ | + | Is this the most precise rule possible? ++|No, consider adding only even numbers.++ |
- | + | ||
- | if (L < 32) or (U > 31) then B | + | |
- | + | ||
- | else [L,U] | + | |
- | ++++ | + | |
===== References ===== | ===== References ===== |