  Stochastic computing is a paradigm in which logical operations are performed
on randomly generated bit streams. Complex arithmetic operations can be
executed by simple logic circuits, resulting in a much smaller area footprint
compared to conventional binary counterparts. However, the random or
pseudorandom sources required for generating the bit streams are costly in
terms of area and offset the advantages. Additionally, due to the inherent
randomness, the computation lacks precision, limiting the applicability of this
paradigm. Importantly, achieving reasonable accuracy in stochastic computing
involves high latency. Recently, deterministic approaches to stochastic
computing have been proposed, demonstrating that randomness is not a
requirement. By structuring the computation deterministically, exact results
can be obtained, and the latency greatly reduced. The bit stream generated
adheres to a "unary" encoding, retaining the non-positional nature of the bits
while discarding the random bit generation of traditional stochastic computing.
This deterministic approach overcomes many drawbacks of stochastic computing,
although the latency increases quadratically with each level of logic, becoming
unmanageable beyond a few levels. In this paper, we present a method for
approximating the results of the deterministic method while maintaining low
latency at each level. This improvement comes at the cost of additional logic,
but we demonstrate that the increase in area scales with the square root of n,
where n represents the equivalent number of binary bits of precision. Our new
approach is general, efficient, composable, and applicable to all arithmetic
operations performed with stochastic logic. We show that this approach
outperforms other stochastic designs for matrix multiplication (dot-product),
which is an integral step in nearly all machine learning algorithms.
