  Convolutional Neural Networks (CNNs) have begun to permeate all corners of
electronic society (from voice recognition to scene generation) due to their
high accuracy and machine efficiency per operation. At their core, CNN
computations are made up of multi-dimensional dot products between weight and
input vectors. This paper studies how weight repetition ---when the same weight
occurs multiple times in or across weight vectors--- can be exploited to save
energy and improve performance during CNN inference. This generalizes a popular
line of work to improve efficiency from CNN weight sparsity, as reducing
computation due to repeated zero weights is a special case of reducing
computation due to repeated weights.
  To exploit weight repetition, this paper proposes a new CNN accelerator
called the Unique Weight CNN Accelerator (UCNN). UCNN uses weight repetition to
reuse CNN sub-computations (e.g., dot products) and to reduce CNN model size
when stored in off-chip DRAM ---both of which save energy. UCNN further
improves performance by exploiting sparsity in weights. We evaluate UCNN with
an accelerator-level cycle and energy model and with an RTL implementation of
the UCNN processing element. On three contemporary CNNs, UCNN improves
throughput-normalized energy consumption by 1.2x - 4x, relative to a similarly
provisioned baseline accelerator that uses Eyeriss-style sparsity
optimizations. At the same time, the UCNN processing element adds only 17-24%
area overhead relative to the same baseline.
