Dumme Frage: 32x32 Bit Multiplikation in 2 Zyklen ?

Gast #3909929
Hallo,
habe keine Erklärung dafür, wie ein Prozessor, der mit 80 MHz läuft, in 
2 Zyklen über einen Hardware Multiplikator eine 32x32 Bit Multiplikation 
durchführen kann (Datenblatte PIC 32....)

Eine Look up Tabelle für die Ergebnisse müsste ja eine Kapazität von  4 
Miliarden x 4 Miliarden x 32 Bit Einträge haben.

Wie kann er so schnell rechnen ?

LG Dirk
Gast
Ganz einfach: In dem sich beim Multiplizieren sehr beeilt.

OK. Scherz beiseite.

Die Frage kann man so umformulieren, dass sie für die Allgemeinheit 
interessanter wird: Wie sieht die Struktur eines binären parallelen 
Multiplizierers aus?

Auf solche Fragen hält das Internet sehr viele Antworten bereit. Es gibt 
da so "Suchmaschinen". Man gibt Worte ein und erhält eine Liste von 
Links die auf Seiten verweisen, in denen die eingegebenen Worte 
vorkommen.
dirkf schrieb:
> Hallo,
> habe keine Erklärung dafür, wie ein Prozessor, der mit 80 MHz läuft, in
> 2 Zyklen über einen Hardware Multiplikator eine 32x32 Bit Multiplikation
> durchführen kann (Datenblatte PIC 32....)
>
> Eine Look up Tabelle für die Ergebnisse müsste ja eine Kapazität von  4
> Miliarden x 4 Miliarden x 32 Bit Einträge haben.
>
> Wie kann er so schnell rechnen ?

Z.B. mit einer 16x16 Bit Lookuptable und 3 Additionen:

(a1, a2) * (b1, b2) = (a1*b1)<<32 + (a1*b2)<<16 + (a2*b1)<<16 + (a2*b2)
dirkf schrieb:
> Wie kann er so schnell rechnen ?

Erster Ansatz wäre das gleiche Verfahren wie bei der schriftlichen 
Multiplikation. Nur eben parallel statt sequentiell. Ergibt 32 Addierer. 
Verfeinere das über Carry-Save Adder statt normaler Addierer und der 
Aufwand schrumpft weiter. Nur so als Anregung, da geht aber noch mehr.
Gast
dirkf schrieb:

> Wie kann er so schnell rechnen ?

Das tut er eigentlich garnicht (rechnen).

Er schreibt nur Bitmuster auf die Eingänge einer nicht getakteten 
Logikschaltung, wartet deren Gatterlaufzeiten ab und holt dann das 
Ergebnis von deren Ausgängen ab.

Nix Lookuptabelle, reine bool'sche Logik. Eine größere Ansammlung von 
Volladdern. Aber längst nicht so groß wie eine Lookup-Tabelle...
Gast
A. K. schrieb:

> Nö. Ein einziger Volladdierer. Um die beiden Teilsummen der Kaskade von
> Carry Save Addern zu addieren.

Was glaubst du, was ein Carry Save Adder ist? Das ist im Wesentlichen 
auch nur ein Volladder mit einem kleinen Extra.
A. K. schrieb:
>> Eine größere Ansammlung von Volladdern.
>
> Nö. Ein einziger Volladdierer. Um die beiden Teilsummen der Kaskade von
> Carry Save Addern zu addieren.

PS: Wenn man es bitweise sieht, kommt das Gleiche raus. Weil dann ein 
3:2 CSA ein FA ist dessen Übertrag diagonal statt horizontal läuft. Nur 
in der letzte Stufe nicht mehr.

> Was glaubst du, was ein Carry Save Adder ist? Das ist im Wesentlichen
> auch nur ein Volladder mit einem kleinen Extra.

Yep. Wortweise betrachtet v. bitweise.
Helmut S. schrieb:
> Hier mal ein "Paper" von 2009. Es sind einfach 32 Stück 32bit
> Volladdierer. Die Multiplikation dauerte 51ns.

Ich finde in dem Paper 54ns, und zwar in der Version mit CSA (Fig 3) 
statt CLA (Fig 2). Also eben nicht mit 32-Bit Volladdierern (@c-hater: 
in den Bildern wird die wortweise Interpretation verwendet).
karadur schrieb:
> binäre Multiplikation ist eine Kombi aus Shift und Addition.

Wenn du es sequentiell machst brauchst du keinen Barrel Shifter, weil in 
jedem Schritt nur um 1 Bit geschoben wird.

Wenn du es - wie hier - parallel machst, dann steckt der Shift in der 
festen Verdrahtung. Wieder kein Barrel Shifter in Sicht.
Gast
A. K. schrieb:
> Was willst du denn damit in diesem Zusammenhang anstellen, wenn nicht
> grad um eine Zweierpotenz multipliziert wird?

Naja, die Adder werden ja immer um ein Bit verschoben, das könnte man 
sequenziell mit einem Barrel-Shifter machen. Gut, das geht dann nicht in 
zwei Taktzyklen (die ganze Multiplikation).
Helmut S. schrieb:
> Wir haben inzwischen 2014. Moderne FPGAs schaffen das Gleiche inzwischen
> vermutlich in 10ns.

Kombinatorische Multiplizierer findet man bereits in der CDC6600 von vor 
50 Jahren. Für die 48-Bit Mantisse der Fliesskommarechnung. Und zwar 
gleich 2 Stück. Nicht ganz so schnell, aber dafür aufgebaut aus 
Einzeltransistoren!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.