hi! tut mir leid dass ich diese bescheuerte frage stelle. ist mit "8x8 Hardware Multiplier" gemeint dass ich 2 8bit Zahlen miteinander multiplizieren kann?
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
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.
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
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.
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.
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...
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.
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
@ 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)
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.
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.
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 ?
Kleine Korrektur zu Benedikts MUL-Takt-Tabelle: Die AVRs brauchen nicht 4 sondern nur 2 Takte für eine 8x8 Multiplikation MfG Willi
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.
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.