Forum: Mikrocontroller und Digitale Elektronik Wieviele Flops?


von Olivier (Gast)


Lesenswert?

Wieviele flops schafft den ein ATmega? Wieviele ein 16-bit dsPIC? Anzahl 
benötigter Zyklen pro Flop? danke!

von Gast (Gast)


Lesenswert?

Ich bin mir sicher die Datenblätter auf http://www.atmel.com/ und 
http://www.microchip.com helfen bei der Beantwortung.

von (prx) A. K. (prx)


Lesenswert?

Ich bin mir sicher, dass man dort zu FLOPS 
(http://de.wikipedia.org/wiki/FLOPS) nichts finden wird.

Das ist Sache des Compilers, und dazu finden sich allenfalls mal 
irgendwelche Benchmarks. Bei solchen Prozessoren darf man aber wohl 
selbst Hand anlegen, denn die werden nicht oft über FLOPS beworben.

von Henry (Gast)


Lesenswert?

Schau mal in diese Datei. Da sind auch float mul/div Vergleiche drin.

http://www.mikrocontroller.net/attachment/46272/benchmark.c

Der ATmega ist bei Gleitkomma so schwach das ein Vergleich zum Lächeln 
anregt.

von Master S. (snowman)


Lesenswert?

bei den Atmels kenne ich mich nicht aus, aber bei den 16bit-PICs (bis 
40MIPS) fand ich das hier: 
http://ww1.microchip.com/downloads/en/DeviceDoc/51459b.pdf
Edit: @Herny, ist ja hoch interessant :-) vielen dank für den link!

von Timmo H. (masterfx)


Lesenswert?

FLOPS anzugeben macht nur sinn bei Architekturen die auch eine FPU 
haben. Alle anderen machen das über Libs und das ist vergleichsweise 
lächerlich langsam.
Darum gibts bei µCs auch meist den Wert MIPS, wobei der alleine 
natürlich noch nichts über die Geschwindigkeit bei Rechenoperationen 
aussagt.

von Mark .. (mork)


Lesenswert?

@Henry

Irgendwie mag ich nicht so recht glauben, dass das alles ist, was der 
ATmega kann. Allein schon der erste Test ergibt sehr fragwürdige Zeiten. 
Eigentlich sollten fürs Füllen von 256 Bytes ca 96µS verbraucht werden, 
denn das Speichern dauert 2 Takte, der Vergleich auch 2 Takte und der 
bedingte Sprung ebenfalls, macht alles zusammen 256*3*2 = 1536 Takte = 
96µS @ 16MHz + Overhead um die Register mit Werten vorzuladen. Und bei 
den restlichens Benchmarks tauchen änliche Widersprüche auf...

MfG Mark

von (prx) A. K. (prx)


Lesenswert?

Mark P. wrote:

> Eigentlich sollten fürs Füllen von 256 Bytes ca 96µS verbraucht werden,
> denn das Speichern dauert 2 Takte, der Vergleich auch 2 Takte und der
> bedingte Sprung ebenfalls

Wenn er das im Pointer-Register lässt. Nur hat der AVR im GCC 
Maschinenmodell möglicherweise kein dafür permanent verfügbares 
Pointerregister, also könnte viel redundantes Geschubse drin stecken. 
Könnte auch vom Optimierungslevel abhängen. Solche Schleifen profitieren 
teilweise von unrolling. Erzeugten Code ansehen.

Aber wie ich oben schon schrieb: Das ist Sache der Implementierung im 
Compiler und dessen Laufzeitbibliothek. Andere Compiler können grad an 
solchen Stellen drastisch bessere oder schlechtere Werte liefern.

von Henry (Gast)


Lesenswert?

@ Mark P.

Ja die ATmega Werte waren wirklich falsch aber nicht von mir.
ATmega habe ich nochmals ermittelt, im Simulator bei 20MHz.

Beitrag "Re: LPC2103 63MIPS?"

von Karl H. (kbuchegg)


Lesenswert?

Henry wrote:
> @ Mark P.
>
> Ja die ATmega Werte waren wirklich falsch aber nicht von mir.
> ATmega habe ich nochmals ermittelt, im Simulator bei 20MHz.


> Messungen ohne Codeoptimierung.

Ich schwanke noch, ob ich das als unfair bezeichnen würde oder nicht :-)

von Henry (Gast)


Lesenswert?

Worauf bezieht sich dein 'unfair'?

von Karl H. (kbuchegg)


Lesenswert?

Unfair gegenüber dem Compiler, unfair gegenüber dem µC

Hier werden absolute Zeiten gemessen. Da sollte IMHO der Compiler auch 
zeigen dürfen was er kann.

Aber lass uns jetzt bitte nicht in einen Glaubenskrieg zum Thema "Sinn 
und Unsinn von Benchmarks" oder noch schlimmer "meiner ist schneller als 
deiner" eintreten.

von Henry (Gast)


Lesenswert?

> Da sollte IMHO der Compiler auch zeigen dürfen was er kann.

Das hätte ich mir auch gewünscht aber bei diesem simplen Benchmark 
funktioniert das nicht.

Zum messen der Zeit jedes Codeabschnitts müssen Breakpoints gesetzt 
werden. Der GNUCC verwürfelt aber schon in der kleinsten 
Optimierungsstufe –O1 den Code dermaßen, dass die Zuordnung zwischen 
C-Quellcode und Assembler verloren geht. Dadurch ist Debugging und 
Breakpoint nicht mehr möglich. Das könnte man sicher irgendwie hinbiegen 
aber wer hat dazu schon Lust.

Da alle Tests ohne Codeoptimierung gemacht wurden hat man auch so einen 
Richtwert der Controller-Leistung.

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.