www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik avr geschwindigkeit-performance


Autor: Daniel Müller (Firma: siemens) (forwarder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
ich möchte aus kostengründen von wilke auf avr umsteigen. folgend ist es 
sehr von interesse wie schnell avr daten verarbeitet. hier sind meine 
fragen:

-programmiersprache c
-programmierumgebung winavr
-avr mit 32k oder 64k flash

wieviele takte und bytes(compiliert) werden für folgende instruktionen 
benötigt:

1. 32bit integer division
2. 32bit modulo berechnung
3. vergleich von 2 32bit integer(in einem c befehl)
4. vergleich von 6 32bit integer(in einem c befehl)
5. i/o schreibzugriff(wieviel i/o zugriffe bei z.b 10mhz)
6. i/o lesezugriff(wieviel i/o zugriffe bei z.b 10mhz)

7. wieviel speicher belegen die standart library so wie i/o, math usw.
8. wie schnell(sekunden) braucht es bis code(z.b. 20kb) in controler 
geladen ist

vielen dank für eure infos um voraus

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Daniel Müller (Firma siemens) (forwarder)

>1. 32bit integer division
>2. 32bit modulo berechnung

Ist quasi das gleiche, weil die Funktion beides gleichzeizig als Ergbnis 
liefert. Wieviell Takte die braucht weiss ich jetzt nicht. Ich tippe mal 
auf um die 50.

>3. vergleich von 2 32bit integer(in einem c befehl)

Das sollte mit 4 ASM-Befehlen umsetzbar sein, die dauern dan 4 Takte.

>4. vergleich von 6 32bit integer(in einem c befehl)

dito.

>5. i/o schreibzugriff(wieviel i/o zugriffe bei z.b 10mhz)

10 Millionen.

>6. i/o lesezugriff(wieviel i/o zugriffe bei z.b 10mhz)

10 Millionen.

>7. wieviel speicher belegen die standart library so wie i/o, math usw.

Keine Ahnung.

>8. wie schnell(sekunden) braucht es bis code(z.b. 20kb) in controler
>geladen ist

Bei einem gescheiten Programmieradapter unter 5s schätze ich mal.

MfG
Falk

Autor: 6641 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ein AVR Instruction manual. Dort kann man die einfachen dinge 
nachschauen. Die komplexeren kann man mit dem simulator nachvollziehen.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:

>>1. 32bit integer division
>>2. 32bit modulo berechnung
>
> Ist quasi das gleiche, weil die Funktion beides gleichzeizig als Ergbnis
> liefert. Wieviell Takte die braucht weiss ich jetzt nicht. Ich tippe mal
> auf um die 50.

Definitiv mehr !
Überleg mal, 50 Takte, da hätte man pro Bit nichtmal 2 Takte, und man 
muss mindestens in jedem Takt 1x 32bit schieben, dann noch vergleichen 
usw.
Eine 32x32 Multiplikation braucht ja schon einige 100 Takte...



>7. wieviel speicher belegen die standart library so wie i/o, math usw.

Alles komplett: Ein paar kByte. math.h alleine braucht für einfache 
Additionen/Multiplikationen, int <--> float rund 2kByte.

Autor: JÜrgen Grieshofer (Firma: 4CKnowLedge) (psicom) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:

>>8. wie schnell(sekunden) braucht es bis code(z.b. 20kb) in controler
>>geladen ist
>
> Bei einem gescheiten Programmieradapter unter 5s schätze ich mal.

Weit darunter ^^

1s maximal

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du die Controller im kommerziellen Umfeld einsetzen willst, dann
empfehle ich eine etwas ausführlichere Betrachtung, als die, wieviel 
Speicher od. wieviel Take was braucht!

Was soll die Anwendung später können? Wird viel 32- und 16-bit 
Arithmetik verwendet, dann würde ich einen STM32 empfehlen. Die 
Entwicklungsumgebung ist zwar relativ teuer (KEIL ~2000 Euro), aber 
dafür kann man die Taktfrequenz schön skalieren. Wenn man eine 
entsprechende Stückzahl abnimmt, sind die Teile nicht wesentlich teuerer 
als AVRs (für die 32 bit).

Wenn es mehr 8-bit Arithmetik ist, und sich nur selten eine 32-bit Zahl 
in den Cotroller verirrt, dann ist der AVR wohl die bessere Lösung.
Aber ich empfehle dann einen Compiler wie ICC-AVR oder IAR. Besonders 
wenn
man keine Controller mit viel Flash einbauen möchte. Hat man z.B. vor 
einen Tiny oder einen Controller mit <= 4k Flash einzusetzen, so rate 
ich zu IAR.

Hängt aber von der Komplexität des Programms ab. Der WIN-AVR hat leider 
den Nachteil, dass der generierte Code relativ groß ist im vergleich zu 
den beiden anderen. Ausserdem können sich da u.U. ein paar GCC Effekte 
bemerkbar machen (Neue Version von gcc -> Programm anpassen). Ist zwar 
nicht so häufig der Fall, aber bei einer gößeren Appplikation, wird eine 
Anpassung dann mühselig.

@Falk:
Die 4 Befehle bei dem 32-bit Vergleich setzen voraus, dass die Werte 
schon in Registern stehen. Da der AVR aber eine Load/Store Architektur 
hat, müssen diese erst aus dem RAM bzw. von memory mapped I/Os geladen 
erden. Dann kommen nochmal jeweils 2-3 Takte dazu (16-bit Adresse laden 
und Wert lesen).

Autor: Daniel Müller (Firma: siemens) (forwarder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok. was mir noch fehlt ist die speichergrösse die obengenannte befehle 
belegen.
danke.

Autor: 6641 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, schau dir doch mas das Instuction set an. Die meisten befehle 
benoetigen 2 Byte, wobei der Adresszaehler eh in Word laeuft. Ein Mega32 
kann demnach um die 16k Befehle. Einzelne, wie Jumps sind etwas laenger.

Autor: Daniel Müller (Firma: siemens) (forwarder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich nehme an dass du assembler meinst. und wie ist es mit c ?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel Müller wrote:
> ich nehme an dass du assembler meinst. und wie ist es mit c ?

Der AVR kann kein C. Wie groß der vom C-Compiler erzeugte ASM-Code (oder 
MC) wird, hängt stark vom verwendeten Compiler und Deinem 
Programmierstil ab. Wenn Du viel rechnen musst, dann lass es. Da sind 
vermutlich andere Controllerfamilien besser geeignet.

...

Autor: Jemand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Definitiv mehr !
>Überleg mal, 50 Takte, da hätte man pro Bit nichtmal 2 Takte, und man
>muss mindestens in jedem Takt 1x 32bit schieben, dann noch vergleichen
>usw.
>Eine 32x32 Multiplikation braucht ja schon einige 100 Takte...

Mit dem Karatsuba-Algorithmus 
(http://de.wikipedia.org/wiki/Karatsuba-Algorithmus) und dem MULT-Befehl 
sollte es schneller gehen

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Der AVR kann kein C"


Und Assembler auch nicht...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas wrote:
> "Der AVR kann kein C"
>
>
> Und Assembler auch nicht...

Aber Maschinencode (MC), und der ist 1 zu 1 in Assembler notierbar.

...

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.