Wallace-Tree-Multiplizierer

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Ein Wallace-Tree-Multiplizierer ist ein Multiplizierer, der in der Digitaltechnik eingesetzt wird. Das Verfahren ist benannt nach Chris Wallace, welcher diesen Multiplizierer 1964 vorstellte.[1]

Funktionsweise[Bearbeiten]

Ein n-Bit Wallace-Tree-Multiplizierer basiert wie der Dadda-Tree-Multiplizierer auf der Formel

\left(\sum_{k=0}^n a_k 2^k\right) \cdot \left(\sum_{k=0}^n b_k 2^k\right) = \sum_{k=0}^{2n} \sum_{i+j=k} a_i b_j 2^k.

Hierbei sind \sum_{k=0}^n a_k 2^k und \sum_{k=0}^n b_k 2^k, a_k, b_k \in \{0, 1\} die Binärdarstellungen der zwei zu multiplizierenden Zahlen.

Der Wallace-Tree-Multiplizierer geht in drei Schritten vor:

  1. Berechne für jedes Paar (i, j) mit 1 \le i \le n und  1 \le j \le n das Partialprodukt a_i \cdot b_j \cdot 2^{i+j}.
  2. Addiere die Resultate dieser Berechnung innerhalb der für den Wallace-Tree-Multiplizierer spezifischen Baumstruktur stufenweise mithilfe von Voll- und Halbaddierern, bis nur noch zwei Zahlen übrig sind, die addiert werden müssen.
  3. Addiere diese beiden Zahlen mit einem normalen Addierwerk.

Baumstruktur des Wallace-Tree-Multiplizierers[Bearbeiten]

In Schritt 2 der obigen Schritte werden die Partialprodukte in einer Baumstruktur addiert.

Dabei werden zunächst die Partialprodukte in Spalten angeordnet, sodass in einer Spalte jeweils alle Partialprodukte a_i \cdot b_j mit i+j=k stehen. Dann fasst man die Spalten der so entstandenen Tabelle in Dreiergruppen zusammen. Jede Spalte dieser Dreiergruppen wird als Eingang für einen Volladdierer verwendet, sofern in der Spalte drei Eingänge sind, für einen Halbaddierer, sofern zwei Einträge vorhanden sind, und gar nicht modifiziert, sofern nur ein Eintrag vorhanden ist. Der höher gewichtete Ausgang der Addierer wird dann jeweils der nächsten Spalte zugeordnet. Dieser Vorgang wird solange wiederholt, bis nur noch eine Dreiergruppe vorhanden ist, bei der in jeder Spalte nur zwei Einträge stehen. Diese beiden letzten Zeilen werden dann mittels eines normalen Addierwerks addiert.

Beispiel 8-Bit[Bearbeiten]

Hier sieht man die obige Vorgehensweise für einen 8-Bit-Wallace-Tree-Multiplizierer. Die Punkte stehen dabei für die Partialprodukte bzw. für die Ausgänge der vormalig verwendeten Voll- und Halbaddierer, welche durch die dünnen Linien gekennzeichnet sind.

Laufzeit[Bearbeiten]

Oben wurde die Funktionsweise des Wallace-Tree-Multiplizierers unter Rückgriff auf Tabellen beschrieben. Jede dieser Tabellen steht dabei für einen Schritt, den ein elektronisches Signal durchlaufen muss. Um die Laufzeit des Wallace-Tree-Multiplizierers zu ermitteln, finden wir daher heraus, wie viele Tabellen es gibt.

Da ein Volladdierer drei Signale in zwei verwandelt, und ggf. in einer Dreiergruppe (siehe oben) weniger Elemente als für einen Volladdierer benötigt werden vorhanden sind, gilt, wenn wir mit w_j die Höhe der j-ten Tabelle und mit n die Anzahl der Eingangsbits bezeichnen:

w_0 = n\text{ , }w_{j+1} \le 2 \cdot \left\lfloor \frac{w_j}{3} \right\rfloor + (w_j \mod 3)

Hieraus kann man folgende Abschätzung herleiten:

w_j \le 2 \cdot \left\lfloor \frac{w_j}{3} \right\rfloor + (w_j \mod 3) \le 2 \cdot \left\lfloor \frac{w_j}{3} + 1 \right\rfloor \le 2 \cdot \left\lfloor \frac{2 \cdot \left\lfloor \frac{w_{j-1}}{3} + 1 \right\rfloor}{3} + 1 \right\rfloor \le \ldots \le \left( \frac{2}{3} \right)^{j+1} w_0 + 2 \sum_{k=0}^j \frac{2^k}{3^k} < \left( \frac{2}{3} \right)^{j+1} w_0 + 2 \sum_{k=0}^\infty \frac{2^k}{3^k} = \left( \frac{2}{3} \right)^{j+1} w_0 + 6

Somit folgt

w_j \le \left( \frac{2}{3} \right)^{j+1} w_0 + 6.

Wählt man nun j + 1 = \lceil \log_{3/2}(n) \rceil \Leftrightarrow \left(\frac{3}{2}\right)^{j+1} = n = w_0, so gilt

w_j \le \left( \frac{2}{3} \right)^{j+1} \cdot \left( \frac{3}{2} \right)^{j+1} + 6 = 7

Eine Tabelle mit sieben Zeilen kann man jedoch nach obiger Vorgehensweise in konstant vielen Schritten reduzieren. Somit gilt für die Laufzeit L = j + k für eine konstante Schrittanzahl k \in \N:

L \le \lceil \log_{3/2}(n) \rceil + k \in \mathcal{O}(\log(n))

Da die Laufzeit eines Addierwerks (der letzte Schritt beim Wallace-Tree-Multiplizierer) auch in \mathcal{O}(\log(n)) liegt, hat der Wallace-Tree-Multiplizierer dieselbe asymptotische Laufzeit wie ein Addierwerk und ist damit schneller als ein vorzeichenloser paralleler Multiplizierer, der eine asymptotische Laufzeit von \mathcal{O}(\log^2(n)) aufweist.

Der Wallace-Tree-Multiplizierer ist ferner absolut gesehen langsamer als der Dadda-Tree-Multiplizierer, obwohl beide Multiplizierer dieselbe asymptotische Laufzeit von \mathcal{O}(\log(n)) besitzen.

Literatur[Bearbeiten]

  •  Peter Pirsch: Architekturen der digitalen Signalverarbeitung. Teubner, 1996, ISBN 3-519-06157-0.

Einzelnachweise[Bearbeiten]

  1.  C. S. Wallace: A suggestion for a fast multiplier. In: IEEE Transactions on Electronic Computers. EC-13, Nr. 1, Februar 1964, S. 14–17, doi:10.1109/PGEC.1964.263830 (PDF).

Weblinks[Bearbeiten]