While the RTL implementation of integer multiplication is more complex than that of integer addition, the extended problem of floation-point multiplication does not present any significant difficulties that have not already been addressed in earlier chapters. The focus of this chapter, therefore, is the multiplication of integers.
Let
and
be natural numbers, which we shall call the multiplicand and the multiplier, respectively. A natural
approach to the computation of
begins with the bit-wise
decomposition of the multiplier,
where
Thus, the computation is reduced to the summation of at most
Naturally, any reduction in the number of partial products generated
in a multiplication would tend to reduce the latency of the operation.
Booth encoding [BOO51] is based on the observation that if we
allow
, along with 0 and 1, as a value of the coefficient
in the above expression for
, then the representation is
no longer unique. Thus, we may seek to minimize the number of nonzero
coefficients and consequently the number of partial products in the
expression for
, at the expense of introducing a negation along
with the shift of
in the case
.
In the following section, we shall present a refinement of Booth's original algorithm known as the radix-4 modified Booth algorithm [KOR93], which limits the number of partial products to half the multiplier width. Each of the three subsequent sections contains a variant of this algorithm.