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
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.
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
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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.