Forum: FPGA, VHDL & Co. Multiplikator in Hardware


von Heinz (Gast)


Lesenswert?

Guten Abend,

ich habe mich in den letzten Tagen mit der Herstellung von Asics
beschäftigt, da ich viel mit FPGA´s arbeite und mich dieses Thema
genauso interessiert....

Meine Frage ist nun, wie viele Gates man ungefähr in einem Asic für
einen Hardwaremultiplikator wie er z.B. in einem Spartan3 vorhanden ist
bräuchte? Diese müssten ja sehr komplex sein, da sie ja eine
Multiplikation pro Takt schaffen. Wäre es sparsamer, einen
Multiplikator so aufzubauen, dass er als Pipeline verwendet werden
kann, die auch eine Multiplikation pro Takt fertigstellt, aber
insgesamt mehrere Takte für eine Berechnung braucht?

Danke schon einmal im Vorhinaus!
Gruß Heinz

von FPGAküchle (Gast)


Lesenswert?

Hm also du meinst einen pipilened Multiplikator? der schafft in jedem
takt eine Multiplikation, allerdings braucht es bei n Pipilines n+1
Takte bis das Ergebnis der ersten Multiplikation gültig ist (Latenz).
grob übern daumen gepeilt ist ein solcher Multiplizierer größerer (mehr
Gatter) als ein Eintakt-multiplizierer, da zusätzlich zu der
Kombinatorik, FF für Zwischenergebnisse kommen.  Dafür ist der Pfad zw.
zwei FF kürzer und es mit höheren Frequenzen getaktet werden.

von Alex H. (alex123)


Lesenswert?

Hallo Heinz,

meist gibt es einen Trade Off zwischen Clock-Speed
und Durchsatz.

Z.B. ein 32-Bit Multiplizierer in einem Taktzyklus wirkt sich
i.d.R. sehr negativ auf die erreichbare Taktfrequenz aus.
Beim Pipelining wird diese Zeit im Grunde auf 3 oder 4
(oder n) Stufen = Taktzyklen verteilt.

Bei einem pipelined Multiplier von 4 Stufen benötigst Du
dann für 20 Multiplikationen 20+3 (oder 4) Taktzyklen.
D.h. wenn viele Multiplikationen nacheinander ausgeführt
werden müssen, ist die Performanceeinbuße (Durchsatz) in
Anzahl Taktzyklen ggf. nur marginal.

Bspweise wird die sehr häufig von DSPs verwendet, z.B.
ne 24-Bit MAC Unit ist oft mit 3-4 Stufen implementiert.
Flächenmäßig glaub ich nicht, dass sich hier viel sparen
läßt. Das Kriterium hier ist der Durchsatz (z.B. 104
Clocks zu 100 MHz für 100 Multiplikationen bei 4 Stufen
ist eben deutlich häher als 100 Clocks bei einem nicht
gepipelined Multiplier bei 50 MHz).

Bei einem Prozessor oder DSP zählt oft die erreichbare
Taktfrequenz, je höher desto besser. Die langsamste
Operation ist daber logischerweise der limitierende
Faktor. Also versucht man, diese schneller zu machen.

Willst Du Gatter sparen, dann kann man einen Multiplier
auch in mehreren Taktzyklen (nicht pipelined) implementieren.
Beispielsweise könnte man ne 32-Bit Multiplikation durch
4 16-Bit Multiplikationen und 3 Additionen implementieren.
Dafür würde 1 16-Bit Multiplizierer und ein Addierer
reichen, was i.d.R. kleiner sein sollte als ein 32-Bit
Multiplizierer (aber auch mehr Taktzyklen braucht).

Gruss,

Alex

von Axel (Gast)


Lesenswert?

Die Frage ist natürlich, was für ein ASIC Du nehmen willst. Abhängig von
der angepeilten Frequenz und der ASIC Technologie werden die Werte
drastisch variieren bis hin zu unmöglich.

Bei einer 0,35µ Gate Array Technologie wird es jedenfalls nicht mit 100
MHz (nicht gepipelined) klappen, egal wie viele Gates Du nimmst. Bei
0,25µ schafft man 100 MHz mit 16x16.

In einer 90 nm Standartzelle kannst Du den Gatterverbrauch fast
vernachlässigen (was auch der Grund ist, warum Xilinx die Dinger so
viel einbaut, die kosten fast nix).  Ein 16x16 braucht z. B. unter 3000
Gatter.

Gruss
Axel

von Heinz (Gast)


Lesenswert?

Danke erstmal für eure Antworten!

Wenn ein 16bit Multiplikator nur 3000 Gatter benötigt, kann ein 32bit
Multiplikator ja auch nur 12k Gatter benötigen, was ja wirklich nicht
viel ist. Ich hätte jetzt mit deutlich mehr gerechnet...

Zur Geschwindigkeit:
Wenn in einem 90nm Design, wie in einem VIrtex4, "nur" bis zu 500Mhz
möglich sind, wie schaffen es dann Firmen wie Intel ihre Alu´s mit
mehreren Ghz zu takten? Sind die alle massiv "gepipelined"? WÜrde ja
kaum Sinn machen, da man ja nicht wie bei einem DSP sehr viele
aufeinander Folgende Multiplikationen usw. hat....

Gruß Heinz

von Matthias (Gast)


Lesenswert?

Ja, die sind SEHR gepipelined, ein P4 hat ja ne Pipeline mit über 30
Schritten oder so ähnlich. Sinn macht das trotzdem. Entweder wenn
wirklich mehrere Multiplikationen nacheinander kommen, oder weil der
Prozessor während er noch multipliziert auch noch etwas anderes machen
kann (superskalare Architektur, Out-of-Order Execution). Wenn er
natürlich wirklich nichts anderes machen, weil er das Ergebnis der
Multiplikation für alle folgenden Schritte benötigt, dann dauerts
natürlich einige Takte bis er weitermachen kann.

von Heinz (Gast)


Lesenswert?

Und wie schafft es dann die neuen CoreDuo und co. Prozessoren die
"nur" noch eine Pipeline mit glaube ich 16 Schritten besitzen?
Oder arbeiten die mit Superpipelining? Dann käme man ja wieder auf 32
Schritte, aber dann wäre das ganze ja auch keine Änderung mehr....
Oder funktionieren dort die hohen Taktraten nur durch die
Strukturverkleinerung auf 65nm?

Gruß Heinz

von Axel (Gast)


Lesenswert?

Wenn ich das richtig sehe, sind die Taktraten bei Core Duo gar nicht so
hoch. Wobei ich den Effekt durch die 65nm nicht so besonders hoch
einschätzen würde.

Gruss
Axel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.