Forum: Mikrocontroller und Digitale Elektronik Vergleich Typischer Laufzeiten von Instruktionen


von Hans Riegel (Gast)


Lesenswert?

G'n Abend,

ich bin auf der Suche nach einer Gegenüberstellung von Laufzeiten 
einiger Instruktionen durchgeführt mit integer und float Variablen.

z.B:
Division zweier Integer-Variablen  1ns
Division zweier Float-Variablen   18ns

Wenn dann noch long, double etc. dabei wären, wäre das natürlich spitze. 
Weiß jemand wo ich sowas herbekomme? Ich suche mit seit eienr halben 
Stunden die DSL-Leitung heiß ;o)

Auf welchen µC sich die Messugnen beziehen ist mir prinzipiell egal.

Schönen Gruß

Hans

von Peter (Gast)


Lesenswert?

>Auf welchen µC sich die Messugnen beziehen ist mir prinzipiell egal
Da das ganze von sehr viele Parameter abhängt, wirst du auch nichts 
finden.

Der Compieler hat einfluss darauf, der Prozessortyp, die Taktfrequenz, 
die Optimierung und bestimmt noch einige dinge mehr.

Kanst dir also auch werte ausdenken, der Praktische nutzen wird der 
gleiche sein.

von Sven P. (Gast)


Lesenswert?

Ausprobieren...

Maschine: MIPS R10000, 250MHz. Angaben in Nanosekunden.
1
            int   float   double
2
a++           8       8        8
3
a = b + c    12      12       12
4
a = b - c    12      12       12
5
a = b * c    12      11       11
6
a = b / c   114      28       58
7
a = b % c   114
8
9
10
float f, f1, f2;
11
int i;
12
13
i = f         8
14
f = i         8
15
16
i = rand()     135
17
f1 = log(f2)   418
18
f1 = exp(f2)   462
19
f1 = sin(f2)   514
20
f1 = sqrt(f2)  112

Quelle: The Practice of Programming, Kernighan, Pike.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Ich würde an deiner Stelle einige Instruktionen in C schreiben, mit 
WINAVR compilieren und im Assembercode die Instruktionen anschauen und 
mit den im Datenblatt angegebenen Taktzyklen ausrechnen, wie lange das 
dauert.

Das bezieht sich dann auf die ATMega Serie von Atmel und das Ergebnis 
sind Takte pro Funktionsaufruf.

Wenn du wissen willst, wie lange das im realen System dauert, musst du 
zusätzlich die Taktfrequenz des Controllers wissen.

Grüße,

Peter

von Roland Praml (Gast)


Lesenswert?

ich hab hier mal ein paar AN's von Atmel gefunden:
http://www.atmel.com/dyn/resources/prod_documents/DOC1973.PDF
http://www.atmel.com/dyn/resources/prod_documents/doc0936.pdf

im Allgememeinen dauern Divisionen SEHR lange. Und mit der Komplexität 
des Datentyps steigt die Komplexität.

Man sollte deshalb auf Divisionen (und Multiplikationen) soweit wie 
möglich verzichten, bzw. hierzu eine 2er-Potenz verwenden, da dann nur 
geshiftet werden muss.

Gruß
Roland

von Arc N. (arc)


Lesenswert?

Hans Riegel wrote:
> G'n Abend,
>
> ich bin auf der Suche nach einer Gegenüberstellung von Laufzeiten
> einiger Instruktionen durchgeführt mit integer und float Variablen.
>
> z.B:
> Division zweier Integer-Variablen  1ns
> Division zweier Float-Variablen   18ns
>
> Wenn dann noch long, double etc. dabei wären, wäre das natürlich spitze.
> Weiß jemand wo ich sowas herbekomme? Ich suche mit seit eienr halben
> Stunden die DSL-Leitung heiß ;o)

Klassische 680x0
http://www.freescale.com/files/32bit/doc/ref_manual/MC68040UM.pdf (insb. 
die FPU-Timings)
http://www.freescale.com/files/32bit/doc/ref_manual/MC68060UM.pdf

Aktueller SH-4 von Renesas
http://documentation.renesas.com/eng/products/mpumcu/rej09b0318_sh_4sm.pdf

> Auf welchen µC sich die Messugnen beziehen ist mir prinzipiell egal.
>
> Schönen Gruß
>
> Hans

von Peter D. (peda)


Lesenswert?

Hans Riegel wrote:
> Auf welchen µC sich die Messugnen beziehen ist mir prinzipiell egal.

Dann dürften Deine Zahlen ebenso aussagekräftig sein, wie ein Vergleich 
zwischen Rollator und Concorde.


Peter

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.