www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8x8 Hardware Multiplier


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Andreas K. (a-k)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Rehrmann (Firma: Rehrmann Elektronik) (j_r)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Rehrmann (Firma: Rehrmann Elektronik) (j_r)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Der oben skizzierte AMD K7 Multiplier rechnet 76x76 Bits.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleine Korrektur zu Benedikts MUL-Takt-Tabelle:

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

MfG Willi

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, sagen wir der PIC ist ein Ausnahme.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.