A multiplier capable of performing signed and unsigned scalar and vector
multiplication is disclosed. The multiplier is configured to receive
signed or unsigned multiplier and multiplicand operands in scalar or
packed vector form. An effective sign for the multiplier and multiplicand
operands may be calculated based upon each operand's most significant bit
and a control signal. The effective signs may then be used to create and
select a number of partial products according to Booth's algorithm. Once
the partial products have been created and selected, they may be summed
and the results may be output. The results may be signed or unsigned, and
may represent vector or scalar quantities. When a vector multiplication is
performed, the multiplier may be configured to generate and select partial
products so as to effectively isolate the multiplication process for each
pair of vector components. The multiplier may also be configured to sum
the products of the vector components to form the vector dot product. The
final product may be output in segments so as to require fewer bus lines.
The segments may be rounded by adding a rounding constant. Rounding and
normalization may be performed in two paths, one assuming an overflow will
occur, the other assuming no overflow will occur.
Ein Vervielfacher, der zu unterzeichneter und nicht unterzeichneter Scalar- und vektorvermehrung Durchführens fähig ist, wird freigegeben. Der Vervielfacher wird zusammengebaut, um zu empfangen unterzeichnet, oder nicht unterzeichnete Vervielfacher- und Multiplikandenrechengrößen im Skalar- oder verpackten Vektor bilden sich. Ein wirkungsvolles Zeichen für die Vervielfacher- und Multiplikandenrechengrößen kann errechnet werden gründete nach bedeutendster Spitze jeder Rechengröße und einem Steuersignal. Die wirkungsvollen Zeichen können dann benutzt werden, um eine Anzahl von teilweisen Produkten entsprechend Algorithmus des Standes zu verursachen und vorzuwählen. Sobald die teilweisen Produkte hergestellt worden und vorgewählt worden sind, können sie summiert werden und die Resultate können ausgegeben werden. Die Resultate können unterzeichnet oder nicht unterzeichnet sein und können Vektor oder skalare Größen darstellen. Wenn eine vektorvermehrung durchgeführt wird, kann der Vervielfacher zusammengebaut werden, um teilweise Produkte zu erzeugen und vorzuwählen, um den Vermehrungprozeß für jedes Paar vektorbestandteile effektiv zu lokalisieren. Der Vervielfacher kann auch zusammengebaut werden, um die Produkte der vektorbestandteile zu summieren, um das vektorpunktprodukt zu bilden. Das abschließende Produkt kann in den Segmenten ausgegeben werden, um wenige Buslinien zu erfordern. Die Segmente können gerundet werden, indem man eine rundende Konstante addiert. Das Runden und die Normalisierung können in zwei Wegen, einer durchgeführt werden, der einen Überlauf annimmt, auftreten, der andere, der keinen Überlauf annimmt, auftreten.