  We consider the problem of computing a binary linear transformation using
unreliable components when all circuit components are unreliable. Two noise
models of unreliable components are considered: probabilistic errors and
permanent errors. We introduce the "ENCODED" technique that ensures that the
error probability of the computation of the linear transformation is kept
bounded below a small constant independent of the size of the linear
transformation even when all logic gates in the computation are noisy. Further,
we show that the scheme requires fewer operations (in order sense) than its
"uncoded" counterpart. By deriving a lower bound, we show that in some cases,
the scheme is order-optimal. Using these results, we examine the gain in
energy-efficiency from use of "voltage-scaling" scheme where gate-energy is
reduced by lowering the supply voltage. We use a gate energy-reliability model
to show that tuning gate-energy appropriately at different stages of the
computation ("dynamic" voltage scaling), in conjunction with ENCODED, can lead
to order-sense energy-savings over the classical "uncoded" approach. Finally,
we also examine the problem of computing a linear transformation when noiseless
decoders can be used, providing upper and lower bounds to the problem.
