DSP Architektur

Sep 10, 2019 6 Replies
Jump to replies (6)

Kann mir jemand zeigen, wie die Rechenwerke eines DSP aufgebaut sind, die z.B. in einem Takt zwei 64 Bit Zahlen multiplizieren können?



DoDi


Am Dienstag, 10. September 2019 10:48:28 UTC+2 schrieb Hans-Peter Diettrich :

iplizierer.

Das stimmt nicht.

Am Dienstag, 10. September 2019 11:28:23 UTC+2 schrieb wernertrp:

ch:

ltiplizierer.

... aber wie viel mal stimmt nun ?

Am 10.09.2019 um 10:48 schrieb Hans-Peter Diettrich:

mal im Internet gesucht:

formatting link
Ich vermute, dass der Takt, wie bei RISC üblich in 4 oder mehr "Untertakte" aufbereitet wird (clock generation) und daher tatsächlich mehr Syncronisations-Signale als der eine Takt zu Verfügung stehen und genutzt werden.

Ich glaube nicht, dass sich Multiplikationen von 64Bit-Zahlen mit einer LUT abbilden lassen. Ansonsten wird häufig so gerechnet, wie in der Grundschule (Aufspalten in kleinere Multiplikationen und dann addieren, es muss auch nicht alles Taktsyncron laufen).

Am 12.09.2019 um 11:14 schrieb Stefan Engler:

Hier ist eine sehr gute Erklärung, wie das prinzipiell funktioniert:

formatting link
Besonders auf Seite 86 sieht man, was das für ein Aufwand ist. Hier am Beispiel eines 32Bit-Multiplizierers.

Bei 64-Bit wird's nochmal heftiger. Mit dieser Methode packt man die

64Bit Multiplikation dann in log2(64)=6 Takten. Wenn man das dann in einem Takt schaffen will, muss man das Ganze dann noch 6x bauen und in einer Pipeline organisieren. Eventuell geht's etwas einfacher, wenn man das Design teilweise zusätzlich noch mit kleinen LUTs mischt.

Gruß Andreas

Am 12.09.2019 um 11:14 schrieb Stefan Engler:

Darin kann ich nichts über die digitale Architektur finden?

Das ist durchaus denkbar, aber bei 64 Bit sehe ich da schon erhebliche Grenzen in der Taktvervielfachung. Es wäre ja auch gemogelt, wenn man die (externe) Taktfrequenz so weit reduziert, bis alle aufwendigen Operationen (Division!) in 1 Takt ablaufen können, und der DSP dann eben nur noch mit 32kHz Uhrenquarz läuft.

Asynchron würde das doch ein Alptraum, wenn man nicht vorhersehen oder feststellen kann, wann eine Operation abgeschlossen ist?

DoDi

Am 12.09.2019 um 13:39 schrieb Andreas Fecht:

Das ist aber noch nicht alles. Meine Erfahrung mit 74181 Rechenwerken war, daß die ohne Carry Lookahead (74182) elend langsam waren.

Beim parallelen Multiplizieren ist das Hauptproblem nicht die Multiplikation selbst, da reicht ein UND Gatter für 1x1 Bit, aber dann kommen bei 64x64 Bit bis zu 64 Additionen mit bis zu 64 Carry Ripples dazu, und die kosten alle Zeit.

Ich sehe nicht, wie das mit nur 6x Hardware schneller werden soll? Wenn Die Verweildauer in der Pipeline egal ist, könnte man das ja auch in 64 einfachen Stufen erledigen, mit vielfach höherer Pipeline-Taktfrequenz.

Das könnte durchaus was bringen.

DoDi

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required