DSP Architektur

  • Thread starter Hans-Peter Diettrich
  • Start date
H

Hans-Peter Diettrich

Guest
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 11:28:23 UTC+2 schrieb wernertrp:
Am Dienstag, 10. September 2019 10:48:28 UTC+2 schrieb Hans-Peter Diettrich:
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

Der 64 Bit Multiplizierer ist 2 hoch 32 mal so groß wie ein 2 Bit Multiplizierer.

Das stimmt nicht.

.... aber wie viel mal stimmt nun ?
 
Am Dienstag, 10. September 2019 10:48:28 UTC+2 schrieb Hans-Peter Diettrich:
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

Der 64 Bit Multiplizierer ist 2 hoch 32 mal so groß wie ein 2 Bit Multiplizierer.

Das stimmt nicht.
 
Am 10.09.2019 um 10:48 schrieb Hans-Peter Diettrich:
Kann mir jemand zeigen, wie die Rechenwerke eines DSP aufgebaut sind,
die z.B. in einem Takt zwei 64 Bit Zahlen multiplizieren kĂśnnen?

mal im Internet gesucht: https://github.com/openrisc/mor1kx
https://upcommons.upc.edu/bitstream/handle/2099.1/22632/Degree_thesis_Sergi_Caelles.pdf

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:

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).

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

https://userpages.uni-koblenz.de/~unikorn/lehre/gdra/ss16/02%20Bin%84re%20Arithmetik%20(VL08).pdf

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 13:39 schrieb Andreas Fecht:
Am 12.09.2019 um 11:14 schrieb Stefan Engler:

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).

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

https://userpages.uni-koblenz.de/~unikorn/lehre/gdra/ss16/02%20Bin%84re%20Arithmetik%20(VL08).pdf


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

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.

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.

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.

Eventuell geht's etwas einfacher, wenn man das Design teilweise
zusätzlich noch mit kleinen LUTs mischt.

Das kĂśnnte durchaus was bringen.

DoDi
 
Am 12.09.2019 um 11:14 schrieb Stefan Engler:
Am 10.09.2019 um 10:48 schrieb Hans-Peter Diettrich:
Kann mir jemand zeigen, wie die Rechenwerke eines DSP aufgebaut sind,
die z.B. in einem Takt zwei 64 Bit Zahlen multiplizieren kĂśnnen?

mal im Internet gesucht: https://github.com/openrisc/mor1kx
https://upcommons.upc.edu/bitstream/handle/2099.1/22632/Degree_thesis_Sergi_Caelles.pdf

Darin kann ich nichts Ăźber die digitale Architektur finden?

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.

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.

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).

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

DoDi
 

Welcome to EDABoard.com

Sponsor

Back
Top