Dumme Frage: 32x32 Bit Multiplikation in 2 Zyklen ?

Gast #3909929
Lesenswert?
• ▲
▼
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 #3909957
Lesenswert?
• ▲
▼
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.
#3909962
Lesenswert?
• ▲
▼
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)
Gast #3909992
Lesenswert?
• ▲
▼
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...
#3910026
Lesenswert?
• ▲
▼
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.
Gast #3910095
Lesenswert?
• ▲
▼
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).

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.