  Summing a set of numbers, namely, "Accumulation," is a subtask within many
computational tasks. If the numbers to sum arrive non-stop in back-to-back
clock cycles at high clock frequencies, summing them without allowing them to
pile up can be quite a challenge, that is, when the latency of addition (i.e.,
summing two numbers) is longer than one clock cycle, which is always the case
for floating-point numbers. This could also be the case for integer summations
with high clock frequencies. In the case of floating-point numbers, this is
handled by pipelining the adder, but that does not solve all problems. The
challenges include optimization of speed, area, and latency. As well as the
adaptability of the design to different application requirements, such as the
ability to handle variable-size subsequent data sets with no time gap in
between and with results produced in the input-order. All these factors make
designing an efficient floating-point accumulator a non-trivial problem.
Integer accumulation is a relatively simpler problem, where high frequencies
can be achieved by using carry-save tree adders. This can then be further
improved by efficient resource-sharing. In this paper, we present two fast and
area-efficient accumulation circuits, JugglePAC and INTAC. JugglePAC is
tailored for floating-point reduction operations (such as accumulation) and
offers significant advantages with respect to the literature in terms of speed,
area, and adaptability to various application requirements. INTAC is designed
for fast integer accumulation. Using carry-save adders and resource-sharing, it
can achieve very high clock frequencies while maintaining a low area
complexity.
