www.mikrocontroller.net

Forum: PC-Programmierung Zeitdauer einer Muliplikation


Autor: Clemens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wie kann ich ablesen, wie viel Zeit der MC für die Multiplikation, 
Addition und ziehen einer Wurzel benötigt? Benötige diese info´s da ich 
zeitkritisches Problem habe. danke im vorraus...

Autor: Lord Ziu (lordziu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Glaskugel sagt, es dauert 47,11 Quadratkiesel.

Im Ernst:
Was hat das mit PC-Programmierung zu tun? Welcher µC? Welche Bitbreite 
der Operanden?

Autor: test (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Disassembly anschauen, Befehlssatz ansehen und rechnen.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispielsweise in dem du die Zeit misst.

Zum Messen der Zeit kannst du ein Oszilloskop benutzen. Zum Triggern des 
Oszilloskops schaltest du vor der Berechnung einen Ausgangspin und nach 
der Berechnung wieder. Den Signalverlauf in der Zeitdomäne kannst du auf 
dem Oszilloskop ausmessen. Wenn du kein Speicheroszilloskop sondern nur 
ein normales Oszi hast, dann musst du diesen Vorgang zyklisch 
wiederholen.

Eine weitere Möglichkeit z.B. bei AVRs ist das "Messen" im AVR 
Simulator. Breakpoint vor und nach die Berechnung. Beim Vor-BP die 
Stopwatch resetten und beim Nach-BP ablesen.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie schon gesagt, messen - aber du musst dir drüber klar sein, dass man 
die Frage so nicht stellen kann, weil die Rechenzeit allgemein stark von 
den tatsächlichen Zahlenwerten abhängig ist. 2 x 2 geht eben schneller 
als 2 6 stellige Zahlen multiplizieren. Die Frage kann also nur heissen, 
was ist der worst case bei den aktuell vorkommenden Zahlenwerten.

Da die Antwort also bei jedem Einsatz eine andere ist, ist es 
folgerichtig, dass darüber keine allgemeinen Werte verfügbar sind. Ein 
worst case Wert für den gesamten möglichen Zahlenbereich wäre viel zu 
pessimistisch und daher in der Praxis wertlos.

Selber messen macht kluch.

Gruss Reinhard

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard Kern schrieb:
> weil die Rechenzeit allgemein stark von
> den tatsächlichen Zahlenwerten abhängig ist. 2 x 2 geht eben schneller
> als 2 6 stellige Zahlen multiplizieren.

Auf den meisten Architekturen mit Hardwaremultiplikation ist heute die 
Dauer der Multiplikation nicht vom Wert der Operanden abhängig, 
solange die Operanden noch in die Wortbreite der CPU passen. Ausnahme: 
Multiplikation mit Konstanten, wenn der Compiler/Optimizer diese dann 
durch andere Operationen (z.B. Shift bei Zweierpotenzen) ersetzt.

Selbst bis zur doppelten Wortbreite dürfte es häufig noch schneller (und 
vor allem einfacher) sein, pauschal immer die volle Multiplikation 
durchzuführen (damit Dauer auch wieder unabhängig von den konkreten 
Werten), als vorher durch Vergleiche festzustellen, ob man vielleicht 
bei den gegebenen Operanden gerade nur die untere Hälfte berechnen muss.

Andreas

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die extremste Form dieser Strategie findet man bei Microchip-Compiler 
für PIC30 und Nachfahren und deren single cycle multiplier. Der setzt 
ein "long" im Registerpaar auf 0, indem er es mit 0 multipliziert. Ist 
der schnellste Weg.

Stromsparstrategen besonders der nachfolgenden Chipgenerationen 
(PIC24/33) dürften ihre Kollegen von der Compiler-Fraktion dafür 
allerdings verfluchen.

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Die extremste Form dieser Strategie findet man bei Microchip-Compiler
> für PIC30 und Nachfahren und deren single cycle multiplier. Der setzt
> ein "long" im Registerpaar auf 0, indem er es mit 0 multipliziert. Ist
> der schnellste Weg.

Mh, ich dachte ein xor mit sich selbst wäre schneller

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht wenn du zwei Register gleichzeitig löschen willst. Die 
Multiplikation tut das in einem Befehl (16x16=>32), XOR oder MOV braucht 
dazu zwei.

Autor: Walter Tarpan (nicolas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D. I. schrieb:

> Mh, ich dachte ein xor mit sich selbst wäre schneller

Müßte ich dafür nicht auch den Wert erst in ein zweites Register 
kopieren? (kenne mich mit PICs nicht aus)

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Nicht wenn du zwei Register gleichzeitig löschen willst. Die
> Multiplikation tut das in einem Befehl (16x16=>32), XOR oder MOV braucht
> dazu zwei.

ok

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Ferber schrieb:
> Auf den meisten Architekturen mit Hardwaremultiplikation ist heute die
> Dauer der Multiplikation nicht vom Wert der Operanden abhängig,
> solange die Operanden noch in die Wortbreite der CPU passen.

Hallo Andreas,

sicher, er hat aber auch nach Wurzelziehen gefragt. Ich meinte das ganz 
allgemein für Gleitkommaberechnungen.

Gruss Reinhard

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reinhard Kern schrieb:
> Ich meinte das ganz allgemein für Gleitkommaberechnungen.
die haben auf µCs nix zu suchen :-P

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.