Forum: Mikrocontroller und Digitale Elektronik Arduino "Benchmark"


von Gästchen (Gast)


Lesenswert?

Hallo Leute,

hab heute aus Interesse und Langeweile ein kleines, aber 
rechenintensives Programm für meinen Arduino Mega 2560 geschrieben und 
war erstaunt - Das Teil ist wirklich verteufelt schnell, ca. 30000 mal 
in der Sekunde konnte er die Quadratwurzel aus dem Produkt zweier 32 Bit 
langen Zahlen ziehen.
Hab mich dann im Datenblatt ein wenig umgesehen und bemerkt, dass ja 
fast alle Standartoperationen in einem Rechenzyklus erledigt werden.
Warum kaufen sich Menschen dann noch eine I2C FPU für den Arduino?
 Selbst Gleitkommaarithmetik läuft verdammt schnell ab, warum muss der 
Mikroprozessor denn noch mehr schaffen? Ich verstehe diese ganze Sache 
nicht, wie ich z.B schon oft in Foren lesen musste dass FloatingPoint 
Operationen um 'jeden Preis vermieden werden müssten' und 'wertvolle 
Rechenzeit draufgeht'.
 Kann mir jemand sagen wo Rechenzeit und Ressourcenausnutzung denn bei 
einem Arduino so kritisch ist?

Gast

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Fließkomma-Operationen brauchen natürlich neben Zeit auch Speicher im 
FlashROM.
256 kByte Nutzbarer Flashspeicher ist nicht die übliche Dimension eines 
Microcontrollers.

von AG (Gast)


Lesenswert?

Nur so am Rande:
Arduino ist nur ne Platine, ein Bootloader und eine Software IDE.

Der verwendete Mikrocontroller ist ein Atmel ATMEGA AVR aus Norwegen, 
das hat mit der Arduino Motadella aus Italien nicht viel zu tun ;-)
Der Compiler ist der avr-gcc.


Warum die Leute eine FPU per I2C (=Langsam) anbinden, tja das liegt dann 
wohl daran das sie keine Ahnung haben was sie da eigentlich tun.

> warum muss der Mikroprozessor denn noch mehr schaffen?

Warum braucht Dein Rechner eine 2GHz CPU mit mehreren Kernen und 128 Bit 
Vektor FPUs?

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

AG schrieb:
> Warum braucht Dein Rechner eine 2GHz CPU mit mehreren Kernen und 128 Bit
> Vektor FPUs?


Darf ich Antworten ?

Weil es Windows 7 gibt.

von Gästchen (Gast)


Lesenswert?

Stimmt, das mit dem FlashSpeicher-"Verbrauch" hatte ich ganz vergessen 
;)
Was wird denn so an Programmspeicher üblich sein?
4-10kB?

Gästchen

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Gästchen schrieb:
> Stimmt, das mit dem FlashSpeicher-"Verbrauch" hatte ich ganz vergessen
> ;)
> Was wird denn so an Programmspeicher üblich sein?
> 4-10kB?
>
> Gästchen

Das ist eine Frage des Preises.

Bei Reichelt geschaut:

ATMEGA 2561-16AU   12,95 € 256 kByte

und der sehr beliebte

ATMEGA 88-20 PU     3,25 €   8 kByte

Wenn man auf Fließkomma verzichten kann durch Festkomma-Berechnungen 
oder gar reines Integer-Rechnen sollte man es machen.

von Gästchen (Gast)


Lesenswert?

Ok, ich denke für die allermeisten Anwendungen reichen Int-Berechnungen 
völlig aus ;)
Dass der ATMega SO teuer ist, schockt mich jetzt schon ein wenig, ich 
dachte der Preis vewegt sich so zwischen 5-8 Euro.

Gästchen

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Gästchen schrieb:
> Ok, ich denke für die allermeisten Anwendungen reichen Int-Berechnungen
> völlig aus ;)
> Dass der ATMega SO teuer ist, schockt mich jetzt schon ein wenig, ich
> dachte der Preis vewegt sich so zwischen 5-8 Euro.
>
> Gästchen

Das auch dann wieder ne Frage der Menge natürlich.
Mit größeren Mengen macht sich dann aber die Flashgröße am Ende im Preis 
des Produktes auch bemerkbar.
Da die Fließkomma-Emulation zeitlich beiweiten nicht mit einer FPU 
vergleichbar ist, ist auch die Frage obs dann wirklich Fließkomma sein 
muß und wenn ja, greift man dann nicht zu einer mächtigeren CPU, wenn 
die Emulation nicht schnell genug ist.

von AG (Gast)


Lesenswert?

@Gästchen:
Wenn Du größere Stückzahlen abnimmst so >1000 oder in China kaufst kann 
das hinkommen.
Einzelne Bauteile != Großserie.


Versuch mal einen einzelnen DDR3 DRAM Chip zu bestellen.
Z.B.
http://www.digikey.com/product-detail/en/MT41J128M8JP-15E:G%20TR/557-1494-1-ND/2747319

8 Stück --> 60 US$ + Steuern
und da haste noch keine Platine und kein SPD EEPROM und keine 
Kondensatoren und Widerstände dabei.

Dann schau mal was ein fertiges getestetes Modul mit 8 Chips, Platine 
und allem drum und dran mit Verpackung und Garantie beim Billighändler 
im Netz kostet. ;-)

von spess53 (Gast)


Lesenswert?

Hi

>Dass der ATMega SO teuer ist, schockt mich jetzt schon ein wenig, ich
>dachte der Preis vewegt sich so zwischen 5-8 Euro.

Bei CSD momentan 7.95€.

MfG Spess

von AG (Gast)


Lesenswert?

PS: Das sind übrigens GBit nicht Byte beim dem Chip da ;)

von Gästchen (Gast)


Lesenswert?

Ok, denke mal die Stückzahlen bei Arduinos nicht das Problem sein werden 
;)
Was denkt ihr zahlen die so im "Großhandel"? Bestimmt nicht mehr als 3-5 
Euro pro Controller.

Gästchen

von Eumel (Gast)


Lesenswert?

Frag doch einfach nen Distri.

von Hauspapa (Gast)


Lesenswert?

Ich hab auch mit einem Arduino angefangen weil alles so hübsch beisammen 
ist. Allerdings direkt in C programmiert.

1. Wenn die Festkommawurzel gut implementiert ist, ist sie sauschnell. 
Gut Implementiert heisst: quadrieren, vergleichen und ein paar shift 
Operationen.

2. Ich hatte schon das Vergnügen Logarithmen berechnen zu dürfen. Gab es 
nur als float, speicherhungrig und waren glaub etwa 2000 Takte. 
Festkomma, Tabelle mit Stützwerten und quadratische Interpolation waren 
genau genug, wesentlich platzsparender und vor allem wesentlich 
schneller. Hab ich aber erst gemacht als ich mit dem Timing sonst nicht 
mehr hinkam.

viel Erfolg
Hauspapa

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.