Forum: Mikrocontroller und Digitale Elektronik 8x8 Hardware Multiplier


von Peter (Gast)


Lesenswert?

hi!
tut mir leid dass ich diese bescheuerte frage stelle.

ist mit "8x8 Hardware Multiplier" gemeint dass ich 2 8bit Zahlen 
miteinander multiplizieren kann?

von Andreas K. (a-k)


Lesenswert?

Ja, d.h. das es nicht nur geht, sondern auch schnell geht.

von Peter D. (peda)


Lesenswert?

Peter wrote:
> hi!
> tut mir leid dass ich diese bescheuerte frage stelle.
>
> ist mit "8x8 Hardware Multiplier" gemeint dass ich 2 8bit Zahlen
> miteinander multiplizieren kann?

Das kannst Du auch ohne "8x8 Hardware Multiplier".

Du kannst auch 2 80Bit Zahlen multiplizieren, ist nur ne Softwareroutine 
(mehrmals schieben/addieren).

"8x8 Hardware Multiplier" heißt, daß Dein MC dafür extra nen Befehl hat, 
spart also Code und Zeit.


Peter

von Andreas K. (a-k)


Lesenswert?

Peter Dannegger wrote:

> "8x8 Hardware Multiplier" heißt, daß Dein MC dafür extra nen Befehl hat,
> spart also Code und Zeit.

Ein 8x8-Bit Multiplikations-Befehl setzt nicht zwangsläufig einen 8x8 
Hardware Multiplier voraus, wird dadurch aber schneller. Er kann auch 
sequentiell oder mit einem viel kleineren 8x4 Hardware Multiplier 
implementiert sein.

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Wenn eine CPU einen 8x8 Hardware Multiplier enthält, heißt das i.d.R., 
dass sie eine 8x8-Multiplikation in einem Taktzyklus ausführen kann. Du 
kannst einen 8x8 Hardware Multiplier z.B. selbst bauen, indem Du zwei 
64-kByte-EPROMs (z.B. 27512) so programmierst, dass die beiden 
Ausgangsbytes das 16-Bit-Produkt darstellen, wenn Du die beiden 
8-Bit-Faktoren auf die Adressleitungen legst (Wertetabelle).
Hardware Multiplier findet man haupsächlich in Signalprozessoren, Da 
Signalverarbeitung sehr "Multiplikationsintensiv" ist.
Da ein Hardware Multiplier mit Wertetabelle sehr viel Chipfläche 
beansprucht, insbesondere, wenn die Bitbreite größer wird, macht man das 
mit einem recht komplexen Logik-Netzwerk. Da auch das recht groß ist, 
werden die meisten CPUs nicht mit einem Hardware Multiplier 
ausgestattet, sondern nur mit einem Makrobefehl, der eine 
Multiplikationssequenz in Gang setzt. Der gute alte 68000 braucht z.B. 
für eine 16x16-Bit-Multiplikation min. 70 Taktzyklen, obwohl es sich nur 
um einen einzigen Machinenbefehl handelt.

Jörg

von Benedikt K. (benedikt)


Lesenswert?

Jörg R. wrote:
> Wenn eine CPU einen 8x8 Hardware Multiplier enthält, heißt das i.d.R.,
> dass sie eine 8x8-Multiplikation in einem Taktzyklus ausführen kann.

Das ist nicht richtig. Die wenigsten CPUs machen das in einem Takt, ich 
kenne eigentlich nur DSPs die das wirklich in einem Takt machen. Die 
meisten benötigen >=4 Takte dazu.

von Andreas K. (a-k)


Lesenswert?

Beispiel für 16x16 in einem CPU-Zyklus: PIC30 (auch diejenigen ohne 
DSP). Führt dazu, dass der Compiler Umwandlungen 16=>32 Bit gelegentlich 
über Multiplikation implementiert.

von Benedikt K. (benedikt)


Lesenswert?

Andreas Kaiser wrote:
> Beispiel für 16x16 in einem CPU-Zyklus: PIC30 (auch diejenigen ohne
> DSP).

Gibts die überhaupt ohne DSP ?

> Führt dazu, dass der Compiler Umwandlungen 16=>32 Bit gelegentlich
> über Multiplikation implementiert.

Nicht nur dass, auch das Löschen einer 32bit Variable wird durch eine 
0x0 Multiplikation gemacht...

von Andreas K. (a-k)


Lesenswert?

Benedikt K. wrote:

> Gibts die überhaupt ohne DSP ?

PIC24F: langsamer, viel RAM, Schwergewicht auf Funktionalität, kein DSP.
PIC24H: wie dsPIC33, aber ohne DSP (defekt?).
dsPIC33: Nachfolger von dsPIC30.

PIC30 ist wohl auch seitens Microchip sowas wie die Familienbezeichnung.

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Benedikt K. wrote:
> Jörg R. wrote:
>> Wenn eine CPU einen 8x8 Hardware Multiplier enthält, heißt das i.d.R.,
>> dass sie eine 8x8-Multiplikation in einem Taktzyklus ausführen kann.
>
> Das ist nicht richtig. Die wenigsten CPUs machen das in einem Takt, ich
> kenne eigentlich nur DSPs die das wirklich in einem Takt machen. Die
> meisten benötigen >=4 Takte dazu.

Naja, wenn eine CPU tatsächlich 4 oder mehr CPU-Taktzyklen benötigt 
(ohne Adressierung), ist es auch kein echter Hardware Multiplier. Oder 
meinst Du etwa die externe Taktfrequenz ? Die kann natürlich die 4-fache 
CPU-Zyklusfrequenz haben, wie z.B. bei der PIC-Serie. Das ändert aber 
nichts daran, dass die Multiplikation in einem Zyklus passiert.

Jörg

von Benedikt K. (benedikt)


Lesenswert?

@ Andreas Kaiser
OK, der 24H ist jetzt eine Außnahme, denn es ist quasi eine Abgespeckte 
Version der 33er dsPICs.

Jörg R. wrote:
> Naja, wenn eine CPU tatsächlich 4 oder mehr CPU-Taktzyklen benötigt, ist
> es auch kein echter Hardware Multiplier.

Jain.
Ein Hardware Multiplzierer ist es schon. Man könnte auch einen 
sequenzellen Hardware Multiplizierer bauen, der dann eben einige 10 
Takte braucht.
Ich denke es kommt auf die Definition an, ob man jetzt sagt 8x8 muss 
komplett parallel 8x8 machen, oder ob man sagt es kann auch ein 
sequentieller 8x2 oder sowas sein.

> Das ändert aber nichts daran, dass die Multiplikation in einem Zyklus passiert.

Der PIC ist halt eine Ausnahme wegen dem internen 4x Takt.
Abgesehen davon, haben nahezu alle anderen µC einen langsameren 
Multiplier:
8051: 4 Takte
AVR: 4 Takte
ARM7: 1-4 Takte
M16C: 4-6 Takte
8086: 70-77 (118-113 für 16x16)
80286: 13 (21 für 16x16)
80286: 9-14 (9-22 für 16x16, 9-38 für 32x32)
80486: 13-18 (13-26 für 16x16, 13-42 für 32x32)

von Andreas K. (a-k)


Lesenswert?

Jörg R. wrote:

> Naja, wenn eine CPU tatsächlich 4 oder mehr CPU-Taktzyklen benötigt, ist
> es auch kein echter Hardware Multiplier.

Zeig mir den 64x64 Bit Hardware Multiplier, der bei 3GHz in einem Takt 
fertig wird. Dennoch haben aktuelle Highend-CPUs Hardware-Multiplier, 
entweder voller Breite oder als 64x32, aber keine davon ist in einem 
Takt fertig, egal ob Integer oder FPU.

Am Beispiel der AMD K7/K8 FPU: 1 Takt Booth Encoding, 1 Takte CSA Tree 
mit den üblichen 2 Teilergebnissen, 1 Takt für den Addierer. Der 4. Takt 
für die Ergebnisanpassung ist nur bei Fliesskommadaten nötig.

von Andreas K. (a-k)


Lesenswert?

Benedikt K. wrote:

> Der PIC ist halt eine Ausnahme wegen dem internen 4x Takt.

Das spielt hier m.E. keine Rolle. Das Pipelining der PIC30 ist nicht 
stark ausgeprägt, d.h. für die gesamte Befehlsausführung steht genau ein 
solcher CPU-Zyklus aus 4 Takten zur Verfügung und in diesem Zyklus wird 
auch noch ein Quelloperand aus dem RAM gelesen. Egal ob Addition oder 
Multiplikation. Man darf wohl davon ausgehen, dass es bei dem 
angegebenen 17x17 Multiplier um einem echten kombinatorischen Multiplier 
in voller Breite handelt.

von Andreas K. (a-k)


Lesenswert?

PS: Der oben skizzierte AMD K7 Multiplier rechnet 76x76 Bits.

von Benedikt K. (benedikt)


Lesenswert?

Andreas Kaiser wrote:

>> Der PIC ist halt eine Ausnahme wegen dem internen 4x Takt.
>
> Das spielt hier m.E. keine Rolle.

Auch bei den normalen PICs ?

von Willi (Gast)


Lesenswert?

Kleine Korrektur zu Benedikts MUL-Takt-Tabelle:

Die AVRs brauchen nicht 4 sondern nur 2 Takte für eine 8x8 
Multiplikation

MfG Willi

von Andreas K. (a-k)


Lesenswert?

Benedikt K. wrote:

> Auch bei den normalen PICs ?

Ich denke schon. Der interne Ablauf von PIC30 und PIC18 ist recht 
ähnlich. Beide besitzen Befehle, die aus dem RAM lesen, damit rechnen, 
und ins RAM zurückschreiben (jedoch nicht bei der Multiplikation) und 
benötigen für einen 1-Wort Befehl insgesamt 2 CPU-Zyklen 
(Fetch,Execute), wobei sich der zweite Zyklus eines Befehls mit dem 
ersten Zyklus des Folgebefehls überlappt.

Wenn man es aus grosser Höhe betrachtet, hat Microchip selbst wohl noch 
keine einzige wirklich eigene Architektur geschaffen. PIC30 erbt einen 
Teil von PIC18, die wiederum von den 12-14-Bit-Word PICs und die 
12-Bit-Word PICs sind von General Instrument. PIC32 wiederum ist von 
MIPS.

von Benedikt K. (benedikt)


Lesenswert?

OK, sagen wir der PIC ist ein Ausnahme.

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.