BSC: Block-based Stochastic Computing to Enable Accurate and Efficient
  TinyML
  Along with the progress of AI democratization, machine learning (ML) has been
successfully applied to edge applications, such as smart phones and automated
driving. Nowadays, more applications require ML on tiny devices with extremely
limited resources, like implantable cardioverter defibrillator (ICD), which is
known as TinyML. Unlike ML on the edge, TinyML with a limited energy supply has
higher demands on low-power execution. Stochastic computing (SC) using
bitstreams for data representation is promising for TinyML since it can perform
the fundamental ML operations using simple logical gates, instead of the
complicated binary adder and multiplier. However, SC commonly suffers from low
accuracy for ML tasks due to low data precision and inaccuracy of arithmetic
units. Increasing the length of the bitstream in the existing works can
mitigate the precision issue but incur higher latency. In this work, we propose
a novel SC architecture, namely Block-based Stochastic Computing (BSC). BSC
divides inputs into blocks, such that the latency can be reduced by exploiting
high data parallelism. Moreover, optimized arithmetic units and output revision
(OUR) scheme are proposed to improve accuracy. On top of it, a global
optimization approach is devised to determine the number of blocks, which can
make a better latency-power trade-off. Experimental results show that BSC can
outperform the existing designs in achieving over 10% higher accuracy on ML
tasks and over 6 times power reduction.
