Forum: Mikrocontroller und Digitale Elektronik Xmega vs Arm welcher Takt vergleichbar


von Max S. (maximus-minimus)


Lesenswert?

Hallo,
klar heißt s wieder vom fall abhängig..aber wenn man einfach sachen 
macht, also nicht Schwerpunktmässig die stärken der CPU (Xmega schnelles 
Portschalten, ARM Flieskomma)
Wie ist dann der Takt vergleichbar..
Liege ich richtig, das ein 32MHZ XMEGA bei den meisten Sachen extwas 
schneller als ein 70 oder 80MHz Arm ist?
Ab 120MHZ der Arm schneller ist?
Ab wieviel MHz bekommt das z.B. ein ARM hin?
https://www.youtube.com/watch?v=CXFOTpM2Jn4

oder sowas
https://www.youtube.com/watch?v=yK2MMMTw3SY

leider finde ich nirgend z.B. ein Vergleichsdemo

Man findet auch nur schwer vergleichbares..dashier ist unfair, weil der 
controller vermutlich genug damit zu tun hat den VGA Anschluss zu 
bedienen
https://www.youtube.com/watch?v=RY92VcNa1fI

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

Max Schauzer schrieb:

> Liege ich richtig, das ein 32MHZ XMEGA bei den meisten Sachen extwas
> schneller als ein 70 oder 80MHz Arm ist?
> Ab 120MHZ der Arm schneller ist?

Da Xmega eine 8 bit RISC-CPU und ARM eine 32 bit RISC-CPU ist das sehr 
unwahrscheinlich.

MfG,

von Peter II (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Da Xmega eine 8 bit RISC-CPU und ARM eine 32 bit RISC-CPU ist das sehr
> unwahrscheinlich.

wenn für die Aufgabe 8bit reichen, spielt das keine rolle.

von Max S. (maximus-minimus)


Lesenswert?

immerhin benötigt der ARm oft bis zu vier Taktzyklen mehr als der Xmega 
für einen Befehl..daher finde ich das nicht so klar

von Fpgakuechle K. (Gast)


Lesenswert?

Peter II schrieb:
> Fpga Kuechle schrieb:
>> Da Xmega eine 8 bit RISC-CPU und ARM eine 32 bit RISC-CPU ist das sehr
>> unwahrscheinlich.
>
> wenn für die Aufgabe 8bit reichen, spielt das keine rolle.

wenn du meinst das 32MHz Taktung eine mehr als doppelt so hohe Taktung 
einer Machine mit vierfacher datenbusbreite kompensiert dann ist das 
natürlich nicht von Belang ...

von Fpgakuechle K. (Gast)


Lesenswert?

Max Schauzer schrieb:
> immerhin benötigt der ARm oft bis zu vier Taktzyklen mehr als der Xmega
> für einen Befehl..daher finde ich das nicht so klar

Tatsächlich? sind nicht beide CPU's RISC-maschinen mit single cycle 
Instructions?

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337h/CHDDIGAC.html

von (prx) A. K. (prx)


Lesenswert?

Max Schauzer schrieb:
> klar heißt s wieder vom fall abhängig..aber wenn man einfach sachen
> macht, also nicht Schwerpunktmässig die stärken der CPU (Xmega schnelles
> Portschalten, ARM Flieskomma)

Anders ausgedrückt: Bei dem, was der AVR besser kann als der ARM, ist er 
besser. Bei dem, was er schlechter kann, ist er schlechter. Jetzt muss 
man nur noch wissen, aus welchen dieser beiden Alternativen das zu 
betrachtende Problem überwiegend besteht. ;-)

Aber im Ernst: Es gibt neben Fliesskommarechnung auch weniger 
offensichtliche Punkte, wo ein 8-Bitter wie AVR mit oder ohne X 
schwächelt. Schon die Verarbeitung von nicht-statischen Adressen aller 
Art macht ihm deutlich Arbeit. Ob Umgang mit Pointern (zu wenig 
Adressregister) oder Array-Indizierung (16-Bit Rechnung mit Shift oder 
Multiplikation).

Es gilt also das, was für Benchmarks generell gilt: Ein Vergleich zweier 
Systeme liefert nur eine Aussage für die dabei eingesetzte Software. 
Während bei PCs mittlerweile durch entsprechend grosse Benchmark-Suites 
immerhin ziemlich viel Software integriert ist (dutzende z.T. sehr 
grosse Programme) und sich das etwas ausmittelt, hat sich 
verständlicherweise niemand die Mühe gemacht, entsprechend umfangreiche 
Benchmark-Suites für Mikrocontroller zu entwickeln.

Bleibt also eigentlich nur der im Controller-Sektor recht verbreitete 
Prozessor-Benchmark Dhrystone. da sollte sich auch was googeln lassen. 
Dir muss nur klar sein, dass damit eben nur die Performance des 
Dhrystones gemessen wird und die Performance deiner Anwendungen eine 
Grössenordnung neben dieser Peilung liegen kann.

von (prx) A. K. (prx)


Lesenswert?

Fpga Kuechle schrieb:
> Tatsächlich? sind nicht beide CPU's RISC-maschinen mit single cycle
> Instructions?

Yep. Beide haben beispielsweise Shiftoperationen, die jeweils nur einen 
Takt brauchen. Fairer Vergleich, oder? ;-)

: Bearbeitet durch User
von Max S. (maximus-minimus)


Lesenswert?

so, hab es eben einfach mal getestet :-)
Oha...das überrascht mich jetzt doch..habe einfach mal auf einem 
XMEGA128 und einem STM32F207
1
   TFT_Set_Pen(CL_black, 2);
2
 TFT_Set_Brush(1, CL_BLUE, 1, LEFT_TO_RIGHT, CL_BLUE, CL_BLUE);
3
 For n:=1 TO 320 Do TFT_Rectangle(0, 0, n, 20);
4
 TFT_Set_Brush(1, CL_yellow, 1, LEFT_TO_RIGHT, CL_BLUE, CL_yellow);
5
 For n:=1 TO 320 Do TFT_Rectangle(0, 0, n, 20);

laufen lassen...
ich muss glatt nochmal prüfen ob nich irgenwo eine Takteinstellung 
falsch ist..aber hier kackt der ARm gerade deutlich!! ab..mit 
120MHz..das hätte ich niemals so krass erwartet.
Habe hier von microe die beiden Micromedia Boards :-)

Der Grund ist weil ich natrülich auch überelge zu Arm zu wchseln wie so 
viele..daher beschäftigt mich das gerade, was in der Hobbykiste 
landet...ob ich einen Xmea für3€ kaufe oder eine vergleichbaren M3 mit 
120 oder mehr für 7-12€ ist ein heftiger Unterschied wenn man sich ein 
kleines Lager anlegen will

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

Max Schauzer schrieb:
> so, hab es eben einfach mal getestet :-)
> Oha...das überrascht mich jetzt doch..habe einfach mal auf einem
> XMEGA128 und einem STM32F207
>
1
   TFT_Set_Pen(CL_black, 2);
2
>  TFT_Set_Brush(1, CL_BLUE, 1, LEFT_TO_RIGHT, CL_BLUE, CL_BLUE);
3
>  For n:=1 TO 320 Do TFT_Rectangle(0, 0, n, 20);
4
>  TFT_Set_Brush(1, CL_yellow, 1, LEFT_TO_RIGHT, CL_BLUE, CL_yellow);
5
>  For n:=1 TO 320 Do TFT_Rectangle(0, 0, n, 20);
>
> laufen lassen...
> ich muss glatt nochmal prüfen ob nich irgenwo eine Takteinstellung
> falsch ist..aber hier kackt der ARm gerade deutlich!! ab..mit
> 120MHz..das hätte ich niemals so krass erwartet.
> Habe hier von microe die beiden Micromedia Boards :-)

Ja, schlechte Software lässt jede CPU abkacken. Aber laut thread-titel 
willst du doch prozessoren vergleichen und nicht Software?

Und wie es scheint testest du hier das Graphic-subsystem und nicht die 
CPU.
Auch hier gilt eine miese Graka lässt jede CPU alt aussehen.

MfG,

von Max S. (maximus-minimus)


Lesenswert?

fehlalarm, bevor ihr euch gleich wieder zerfleischt..muss gerade neu 
booten..hatte die PLL noch falsch eingestellt :-)

von Max S. (maximus-minimus)


Lesenswert?

naja,, ziemlich blödsinnig..ich habe für beide den gleichen Compiler von 
Microe..als absolut fair

von Peter II (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Ja, schlechte Software lässt jede CPU abkacken. Aber laut thread-titel
> willst du doch prozessoren vergleichen und nicht Software?

wie willst du ohne Software eine CPU vergleichen? Wiegen?

von Fpgakuechle K. (Gast)


Lesenswert?

Peter II schrieb:
> Fpga Kuechle schrieb:
>> Ja, schlechte Software lässt jede CPU abkacken. Aber laut thread-titel
>> willst du doch prozessoren vergleichen und nicht Software?
>
> wie willst du ohne Software eine CPU vergleichen? Wiegen?

Technische Daten aus dem datenblatt.

von Max S. (maximus-minimus)


Lesenswert?

eben und ich will nicht für jeden Controller den code erst optimieren 
müssen..sondenr vergleiche so wie man üblich programmiert wenn man 
schnell mal ein Projekt machen will...und daher habe ich ja ebe n diese 
beiden Zeilen unverändert auf beiden Controllern laufen lassen..dauert 
noch einen moment. erkennt gerade den Controller nicht am USB..blöde 
VMWare

von Max S. (maximus-minimus)


Lesenswert?

haha, Dui minst also Theoretische werte :-)
Mich interessieren aber eher wie gesagt die praktischen ;-) machen kann 
man viel aber was ist bei allgemeiner Programmierung..
Hmpf..nun noch 131 Windowx XP updates :-(

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> wie willst du ohne Software eine CPU vergleichen? Wiegen?

Och, da gibts noch mehr Varianten die mehr Sinn ergeben als das Gewicht. 
Gehäusetyp und Pindichte, Stromverbrauch und -Versorgungsoptionen, 
In-Circuit-Programmierung und -Debugging, Entwicklungssystem, ...

von Peter II (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Technische Daten aus dem Datenblatt.

geht nicht sinnvoll, sonst würde Intel & Co nicht ihre vergleiche anhand 
von Benchmarks machen.

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> geht nicht sinnvoll, sonst würde Intel & Co nicht ihre vergleiche anhand
> von Benchmarks machen.

Fairerweise muss man sagen, dass man bei AvrX und Cortex M3 durch 
Abzählen von Takten von Befehlen eines Programms der Realität wesentlich 
näher kommt als bei Intel & Co. Bei den x86 von heute ist das ein völlig 
hoffnungsloses Unterfangen.

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

Max Schauzer schrieb:
> haha, Dui minst also Theoretische werte :-)
> Mich interessieren aber eher wie gesagt die praktischen ;-) machen kann

Ja in Praxis kann man auch die schnellste CPU so suboptimal 
programmieren
das 99% des Leistungspotentials verschwendet sind. Um zu wissen was in 
Praxis optimal möglich muß man schon ins Datenblatt schauen.

MfG,

von Frank K. (fchk)


Lesenswert?

Sind die Displays identisch?
Sind sie identisch angeschlossen?
Werden die Displayschnittstellen mit dem gleichen Takt betrieben?
Sind die Bibliotheken identisch?

Mit Deinem Test testest Du höchstens die Displays und die Bibliotheken, 
aber nicht den Prozessorkern.

Und die Codequalität des Mikroe-Zeugs ist natürlich auch ungewiss. Nimm 
mal gcc, da weiß man wenigstens, dass da Profis am Werk waren.

fchk

von (prx) A. K. (prx)


Lesenswert?

Fpga Kuechle schrieb:
> das 99% des Leistungspotentials verschwendet sind. Um zu wissen was in
> Praxis optimal möglich muß man schon ins Datenblatt schauen.

Seit wann steht die realistische Performance direkt im Datasheet? Es ist 
eine Wissenschaft für sich, aus Doku zu ISA und Implementierung die 
Performance ganz grob einpeilen zu können.

von Fpgakuechle K. (Gast)


Lesenswert?

Peter II schrieb:
> Fpga Kuechle schrieb:
>> Technische Daten aus dem Datenblatt.
>
> geht nicht sinnvoll, sonst würde Intel & Co nicht ihre vergleiche anhand
> von Benchmarks machen.

Doch man kann sehr wohl aus dem Datenblatt abschätzen wieviel 
Performance möglich ist und ob der Benchmark was taugt oder nicht.

MfG,

von Max S. (maximus-minimus)


Lesenswert?

"ind die Displays identisch?
Sind sie identisch angeschlossen?
Werden die Displayschnittstellen mit dem gleichen Takt betrieben?
Sind die Bibliotheken identisch?

Mit Deinem Test testest Du höchstens die Displays und die Bibliotheken,
aber nicht den Prozessorkern."

ja, alles gelich, selbst das Platinenlayout sieht gleich aus :-)
Wie gesagt von Microe die micromedia board mit 320x240 Display, beide 
mit dem Pascal Compiler und beide die gleichen  Zeilen code

von Max S. (maximus-minimus)


Lesenswert?

gcc ist mir die Einrichtung zu blöd, mit microe bin ich soweit 
zufrieden..na was ivh immer so lese haben die "Profis" vom gcc auch 
genug Bugs drin :-)

von (prx) A. K. (prx)


Lesenswert?

Fpga Kuechle schrieb:
> Doch man kann sehr wohl aus dem Datenblatt abschätzen wieviel
> Performance möglich ist und ob der Benchmark was taugt oder nicht.

Bei Intel&Co auch? ;-)

von Fpgakuechle K. (Gast)


Lesenswert?

A. K. schrieb:
> Fpga Kuechle schrieb:
>> das 99% des Leistungspotentials verschwendet sind. Um zu wissen was in
>> Praxis optimal möglich muß man schon ins Datenblatt schauen.
>
> Seit wann steht die realistische Performance direkt im Datasheet? Es ist
> eine Wissenschaft für sich, aus Doku zu ISA und Implementierung die
> Performance ganz grob einpeilen zu können.

Datenbus-frequenz rauslesen, cycles pro transfers rauslesen, 
Datenbusbreite rauslesen -> Performance bestimmen

Das hat man mit ein paar jahren Erfahrung schnell drauf.

MfG,

von Fpgakuechle K. (Gast)


Lesenswert?

A. K. schrieb:
> Fpga Kuechle schrieb:
>> Doch man kann sehr wohl aus dem Datenblatt abschätzen wieviel
>> Performance möglich ist und ob der Benchmark was taugt oder nicht.
>
> Bei Intel&Co auch? ;-)

Steht intel im Thread-Titel oder ARM?

MfG,

von (prx) A. K. (prx)


Lesenswert?

Max Schauzer schrieb:
> ja, alles gelich, selbst das Platinenlayout sieht gleich aus :-)

Display mit eigenem Controller? Wenn der Anhänger nur 60kmh darf, dann 
sind Porsche und Trabbi gleich schnell. ;-)

von (prx) A. K. (prx)


Lesenswert?

Fpga Kuechle schrieb:
> Steht intel im Thread-Titel oder ARM?

In deinem Beitrag als Quote, d.h. du hattest auf "Intel" geantwortet.

von (prx) A. K. (prx)


Lesenswert?

Fpga Kuechle schrieb:
> Das hat man mit ein paar jahren Erfahrung schnell drauf.

Beim Blocktransfer ja. Bisschen schwieriger wird aber die Abschätzung, 
in wieviele Maschinenbefehle sich ein C Programm ungefähr übersetzt, und 
sei es nur in Relation zueinander. Bei Maschinen gleicher Klasse, also 
32-Bitter gegeneinander klappt das schon wesentlich leichter als wenn 
völlig verschiedene 8- und 32-Bitter gegeneinander antreten.

von Lurchi (Gast)


Lesenswert?

Der Vergleich ist nicht so ganz einfach. Es dürften aber nur relativ 
wenige spezielle Aufgaben sein, wo der AVR mit weniger Taktzyklen 
auskommt als der ARM. Auch wenn keine Fließkommazahlen gebraucht werden, 
wird der ARM eher mit weniger Zyklen auskommen - wie viel hängt halt von 
der Aufgabe bzw. dem Programm ab.

Bei den ARMs hat man keine lineare Skalierung mit dem Takt. Flash und IO 
Bus haben oft ein relativ niedriges Taktlimit. Mit 80 MHz ist der ARM 
entsprechend da nicht mehr 4 mal so schnell wie mit 20 MHz. Da 
unterscheiden sich wohl auch die Implementierungen. Code kann man ggf. 
auch schneller aus dem RAM ausführen - allerdings ist da ggf. der Platz 
knapp.

von Max S. (maximus-minimus)


Lesenswert?

also irgendwie bleibt der nach wie vor lahmm...könnt ihr mal die 
Einstellungen überprüfen?
http://www.directupload.net/file/d/3997/5bqls6vn_jpg.htm
http://www.directupload.net/file/d/3997/asetjhsv_jpg.htm

von TriHexagon (Gast)


Lesenswert?

Warum ist verwendest du den internen Oszillator (HSI) und nicht den 
Externen (HSE)? Gibt es überhaupt einen STM32 der mit dem Internen so 
hoch takten kann?

von Max S. (maximus-minimus)


Lesenswert?

soweit ich weis sind alle takte mit dem internen möglich in zig 
Kombinationen..

von TriHexagon (Gast)


Lesenswert?

Ja stimmt sehe gerade, dass der mit 16 MHz läuft. Dann muss es an der 
Einstellung liegen...

von TriHexagon (Gast)


Lesenswert?

Damit kannst die Einstellung überprüfen (ist eine Excel Tabelle):
http://www.st.com/web/en/catalog/tools/PF257926#

von Max S. (maximus-minimus)


Lesenswert?

so..wie ich das sehe kackt der ARm voll ab :-( Also bleibe ich wohl doch 
beim Xmega..

Der Xmega ist ca. 40% schneller!

Anbei nochmal die einstellungen falls jemand noch einen Fehler 
entdeckt..
ARM 120MHz gegen Xmega 32MHz!!

http://www.directupload.net/file/d/3997/ozjnkjc3_jpg.htm
http://www.directupload.net/file/d/3997/rikqsnuc_jpg.htm

dann ist es also schon so wie ich es mir die ganze Zeit 
dachte..schade..can wäre schön gewesen..aber dafür so viel mehr kohle 
und mehr konfigurierei.neee

: Bearbeitet durch User
von Max S. (maximus-minimus)


Lesenswert?

anbei ein Vegleichsvideo...links der Xmega
http://www.vidup.de/v/Xp5Ar/

von TriHexagon (Gast)


Angehängte Dateien:

Lesenswert?

Dass der XMega 40% schneller ist, kann nicht sein. Da ist definitiv was 
im Argen.

Habe deine Einstellungen mal in STM32CubeMx übertragen und nach dessen 
Berechnung dürfte der ARM mit 20,48 MHz laufen (siehe Bild 1). Übernehme 
mal die Einstellung aus Bild 2.

von Max S. (maximus-minimus)


Lesenswert?

ahh, super jetzt ist der ARM schneller, dennoch deutlich weniger als 
erwartet..
Habe den PLLP jetzt mal auf 6 gestellt, also 40MHz, dann ist der ARM 
tatsächlich etwas schneller als der Xmega mit 32MHz..Also scheinen noch 
gut direkt mit dem Takt vergleichbar zu sein

von (prx) A. K. (prx)


Lesenswert?

Max Schauzer schrieb:
> Also scheinen noch
> gut direkt mit dem Takt vergleichbar zu sein

Mutige Verallgemeinerung.

: Bearbeitet durch User
von Max S. (maximus-minimus)


Lesenswert?

wieso? Das wir davon ausgehen das beides RISV ist haen wir ereits 
geklärt...

von TriHexagon (Gast)


Lesenswert?

Max Schauzer schrieb:
> wieso? Das wir davon ausgehen das beides RISV ist haen wir ereits
> geklärt...

Das sagt erst mal wenig aus. Denn da gibt es noch sowas wie 
Registerbreite, Busbreite, Taktfrequenz, Cache, Anzahl der Kerne, 
RAM-(Busbreite, Latenz, Größe), DMA, etc. .

Lass die beiden erst mal mit größeren Zahlen rechnen, da wird der XMega 
kein Land sehen.

von (prx) A. K. (prx)


Lesenswert?

Max Schauzer schrieb:
> wieso? Das wir davon ausgehen das beides RISV ist haen wir ereits
> geklärt...

Vergleich mal
  int shift(int x, int n) { return x >> n; }
für variables n. Klar, beide RISCs haben einen Shift-Befehl, der nur 
einen Takt benötigt, aber...

Schau dir mal an, was bei
  int a[10][10]; ... a[x][y] ...
rauskommt und zähl die Takte mit. Oder Codelänge.

Nur 2 Beispiele von vielen für stinknormalen Code.

Wenn Programme grösser als ein paar KB sind und der Overhead vom 
Startup-Code nicht mehr dominiert, dann wirst du typischerweise auch 
feststellen, dass CM3 Code kürzer als AVR Code ist.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Kleiner Spass am Rande: Vergleich mal den Code, der bei dieser völlig 
harmlosen und im Grafik-Umfeld auch nicht exotischen Funktion rauskommt:
1
int shift(int a, int b, int n)
2
{
3
        return (n > 0) ? a | (b >> n) : a | (b << n);
4
}
wobei hier ein kleiner Abstecher zum klassischen ARM Befehlsatz durchaus 
lohnen kann, denn das ergibt:
        cmp     r2, #0
        orrgt   r0, r0, r1, asr r2
        orrle   r0, r0, r1, asl r2
CM3 kommt da nicht ganz ran:
        cmp     r2, #0
        ite     gt
        asrgt   r1, r1, r2
        lslle   r1, r1, r2
        orr     r0, r0, r1
CM0 erst recht nicht:
        cmp     r2, #0
        ble     .L2
        asr     r1, r1, r2
        b       .L4
.L2:
        lsl     r1, r1, r2
.L4:
        orr     r0, r1
von AVR ganz zu schweigen:
        cp _zero_reg_,r20
        cpc _zero_reg_,r21
        brge .L2
        rjmp 2f
        1:
        asr r23
        ror r22
        2:
        dec r20
        brpl 1b
        rjmp .L4
.L2:
        rjmp 2f
        1:
        lsl r22
        rol r23
        2:
        dec r20
        brpl 1b
.L4:
        or r22,r24
        or r23,r25

PS: Ok, das ist etwas "tuned for ARM" ;-)

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

TriHexagon schrieb:

> Lass die beiden erst mal mit größeren Zahlen rechnen, da wird der XMega
> kein Land sehen.

Richtig. Nur ist der springende Punkt ja gerade, daß man in kleineren 
Steuerungsaufgaben fast nie mit großen Zahlen rechnen muß.

Wenn nur maximal 10 Bits reinkommen und nur maximal 10Bits wieder 
rausgehen können, muß man bei allen üblichen Algorithmen halt maximal 
mit 20..24 Bits rechnen. In dem meisten Fällen genügen aber auch 16 oder 
noch weniger.

Ja, es gibt leider sehr viele Leute, die sind nur dazu in der Lage, 
vorhanden Quelltext per C&P zu übernehmen.

Nur dieses KRASS UNFÄHIGE PACK braucht dann oft zwingend 32Bit oder gar 
eine Double-fähige FPU noch dazu, und das nur, weil der raubkopierte 
Quelltext halt eigentlich für Desktop-PCs geschrieben wurde...

Das ist aber nur bemitleidenswerter Programmiererabschaum. Nicht 
wirklich Programmierer. Irrelavant, außer für BWLer, die solche Abschaum 
natürlich gern einkaufen, weil er einfach mal billich ist.

von Skyper (Gast)


Lesenswert?

c-hater schrieb:
> Richtig. Nur ist der springende Punkt ja gerade, daß man in kleineren
> Steuerungsaufgaben fast nie mit großen Zahlen rechnen muß.
>
> Wenn nur maximal 10 Bits reinkommen und nur maximal 10Bits wieder
> rausgehen können, muß man bei allen üblichen Algorithmen halt maximal
> mit 20..24 Bits rechnen. In dem meisten Fällen genügen aber auch 16 oder
> noch weniger.

Dir ist schon klar, dass eine acht Bit CPU mehr Takte/Klimzüge braucht, 
wenn Du zehn Bits oder mehr verarbeiten möchtest gegenüber einer 
16-/32-Bit CPU... und gerade beim multiplizieren, sollte genug "Luft" an 
Bitbreite für das Ergebnis vorhanden sein, oder man muss vorher Prüfen, 
ob es keinen Überlauf gibt - zwei 16-Bit Zahlen zu multiplizieren mit 
einer 32-Bit CPU dürfte schneller von statten gehen, als bei einer 8-Bit 
CPU...

von TriHexagon (Gast)


Lesenswert?

Max Schauzer schrieb:
> so, hab es eben einfach mal getestet :-)
> Oha...das überrascht mich jetzt doch..habe einfach mal auf einem
> XMEGA128 und einem STM32F207   TFT_Set_Pen(CL_black, 2);
>  TFT_Set_Brush(1, CL_BLUE, 1, LEFT_TO_RIGHT, CL_BLUE, CL_BLUE);
>  For n:=1 TO 320 Do TFT_Rectangle(0, 0, n, 20);
>  TFT_Set_Brush(1, CL_yellow, 1, LEFT_TO_RIGHT, CL_BLUE, CL_yellow);
>  For n:=1 TO 320 Do TFT_Rectangle(0, 0, n, 20);

Eigentlich ist dieses Programm auch absolut unbrauchbar für den 
Vergleich. Hier werden nur Daten verschoben und dafür brauch man keine 
CPU. Da benutzt man einen DMA, dann geht die Belastung auf die CPU gegen 
null. Und das auch nur weil DMA und CPU den gleichen Bus benutzen.

von Malte _. (malte) Benutzerseite


Lesenswert?

Ich hatte mal privat die Taktzyklen eines AVR gemessen, die für die 
Durchführung einer 64 Bit Ganzzahldivision benötigt werden.
Dann hatte ich aus beruflichen Gründen den "Trace" einer 64Bit 
Ganzzahldivision auf einem ARM Cortex-A9 vorliegen. Das Ergebnis:

Anzahl der Taktzyklen auf einem AVR * 4 = Anzahl der Assembler Befehle 
auf einem Cortex-A9.
Das sagt leider nichts darüber aus, wie schnell der ARM jetzt ist, da 
die Taktzyklen dort nicht gezählt wurden. Der Faktor *4 würde natürlich 
passen, da erstere 8Bit und letztere in 32Bit rechnet, unter der (zu 
optimistischen) Annahme dass der AVR jeden Befehl in einem Takt 
ausführt.
Wie schnell nun der ARM pro Takt im Verhältnis zum AVR ist, hängt auch 
wieder von der ARM Architektur ab. Der Cortex A8 hat zwei 
Ausführungseinheiten und kann somit im günstigsten Fall zwei Befehle 
gleichzeitig ausführen.
Im wesentlichen kann man sich das so vorstellen, dass der zweite Befehl 
angefangen wird, bevor der erste fertig berechnet wurde. Das klappt 
(vereinfacht gesagt), solange der zweite Befehl keine Register 
verwendet, die auch im ersten Befehl verwendet werden. Die erreichbare 
Geschwindigkeit hängt somit davon ab, wie geschickt der Compiler dabei 
ist die einzelnen Befehle so zu verschachteln, dass möglichst viel 
anderer Code zwischen zwei Befehlen liegt, der das gleiche Register 
verwendet.
1
ldr r0, =123456
2
ldr r1, =234567
3
add r2, r1, r0
4
mov r4, #0
dürfte langsamer sein als
1
ldr r0, =123456
2
ldr r1, =234567
3
mov r4, #0
4
add r2, r1, r0

Beim Cortex A9 ist dies ebenfalls so, dafür kann der Out-of-Order 
ausführen, also die Reihnfolge der Befehle selbstständig ändern.

von Max S. (maximus-minimus)


Lesenswert?

"Eigentlich ist dieses Programm auch absolut unbrauchbar für den
Vergleich. Hier werden nur Daten verschoben und dafür brauch man keine
CPU. Da benutzt man einen DMA, dann geht die Belastung auf die CPU gegen
null. Und das auch nur weil DMA und CPU den gleichen Bus benutzen.§

mir völlig wurscht..das ist das was die meistn hier mit den Controllern 
machen, fenster Zecihnen, Button anlegen für touch etc...das ist daher 
für 90% ein brauchbarer Test.
MPEg kodieren, mit Fliesskoma rechnen im großen Stiel, Spracherkennung 
udn Mondfahrzeuge bauen hier die wenigsten..daher interessieren mit die 
theoretichen Diskussionen hier..0

von (prx) A. K. (prx)


Lesenswert?

Max Schauzer schrieb:
> ..daher interessieren mit die theoretichen Diskussionen hier..0

Wenn dich Antworten nicht interessieren, weshalb fragst du dann?

Den wohl einzigen verbreiteten Benchmark im Embedded-Bereich hatte ich 
anfangs bereits genannt. Es ist auch nicht schwer, danach zu Suchen und 
Zahlen zu gewinnen. Das fand ich zumutbar.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Der 8-Bitter kackt doch schon bei einfachen Arrayzugriffen gnadenlos ab:
- lade 2 Register mit Base
- lade 2 Register mit Offset
- addiere 2 mal
- lese 2 mal vom SRAM (für int16)

Er braucht jedesmal die doppelte Anzahl an Befehlen.

von (prx) A. K. (prx)


Lesenswert?

Peter Dannegger schrieb:
> Er braucht jedesmal die doppelte Anzahl an Befehlen.

Eine ggf. skalierte Addition ist beim ARM Teil des Ladebefehls.
        ldr r0, [r0, r1, lsl #2]
v.
        lsl r22
        rol r23
        add r22,r24
        adc r23,r25
        movw r30,r22
        ld r24,Z
        ldd r25,Z+1
für
1
int f(int a[], int i)
2
{
3
        return a[i];
4
}

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Der 8-Bitter kackt doch schon bei einfachen Arrayzugriffen gnadenlos ab:

nicht jedes Programm braucht das.

ARM ist auch nicht gut bei Video-Codierung.

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> ARM ist auch nicht gut bei Video-Codierung.

Würde ich so allgemein nicht unterschreiben. Kommt etwas drauf an 
welcher ARM. Die Bandbreite dessen, was unter dieser Flagge segelt, 
ist recht hoch.

Aber klar, nix taugt für alles. Wenn AVR reicht, warum wechseln? Aber 
der Thread bezieht sich letztlich auf die Frage, was bei einer 
strategischen entweder-oder Entscheidung flexibler ist, AVR oder ARM. 
Und das ist mittlerweile ARM.

: Bearbeitet durch User
von TriHexagon (Gast)


Lesenswert?

Max Schauzer schrieb:
> "Eigentlich ist dieses Programm auch absolut unbrauchbar für den
> Vergleich. Hier werden nur Daten verschoben und dafür brauch man keine
> CPU. Da benutzt man einen DMA, dann geht die Belastung auf die CPU gegen
> null. Und das auch nur weil DMA und CPU den gleichen Bus benutzen.§
>
> mir völlig wurscht..das ist das was die meistn hier mit den Controllern
> machen, fenster Zecihnen, Button anlegen für touch etc...das ist daher
> für 90% ein brauchbarer Test.
> MPEg kodieren, mit Fliesskoma rechnen im großen Stiel, Spracherkennung
> udn Mondfahrzeuge bauen hier die wenigsten..daher interessieren mit die
> theoretichen Diskussionen hier..0

Füllst du dich jetzt etwa beleidigt? Mein Beitrag war in keiner Weise 
beleidigend oder böse gemeint.

Weißt du überhaupt was ein DMA ist? Was daran jetzt theoretisch sein 
soll, verstehe ich auch nicht. Du verfeuerst hier unnötig Rechenleistung 
für simples Kopieren von Daten. Aber gut wenn du meinst, das macht jeder 
so und das soll so bleiben, wünsche ich dir noch viel Spaß. Kannst dich 
ja wieder melden, wenn du einen Benchmark STM32F207 vs Rasperry Pi 
machst ;) .

von Peter D. (peda)


Lesenswert?

Peter II schrieb:
> Peter Dannegger schrieb:
>> Der 8-Bitter kackt doch schon bei einfachen Arrayzugriffen gnadenlos ab:
>
> nicht jedes Programm braucht das.

Also bei mir kommt kein einziges Programm ohne Pointer aus, ob Strings, 
Buffer, Lookup-Tables, switch/case, command-parser usw. usw.
Und oftmals sind sogar Pointer auf Pointer nötig, d.h. mehrfache 
Indirektion.

Allerdings habe ich keinerlei Zeitprobleme, daher reicht der AVR mir aus 
und läuft oft mit Werkseinstellung 8MHz/8.

Ist aber schön zu wissen, falls man dochmal eilige Anwendungen hat, daß 
der ARM sowas in einem Befehl kann, statt in 7 beim AVR.

von Fpgakuechle K. (Gast)


Lesenswert?

A. K. schrieb:
> Peter II schrieb:
>> ARM ist auch nicht gut bei Video-Codierung.
>
> Würde ich so allgemein nicht unterschreiben. Kommt etwas drauf an
> welcher ARM. Die Bandbreite dessen, was unter dieser Flagge segelt,
> ist recht hoch.

ARM Systeme sind sehr wohl für Video/Graphic geeignet, das hat schon der 
Ur-ARM im Archimedes Acorn bewiesen dessen Graphic-leistung  Ende der 
Achtziger einen Commodore Amiga oder Mac CE alt ausehen ließ:

http://en.wikipedia.org/wiki/Acorn_Archimedes
https://www.youtube.com/watch?v=h6a8FMak-Pk (bspw. ab 2:00)

Heute überzeugt die Videoausgabe auf Smartphones oder in HDMI Sticks - 
ARM von Cortex M0 32 MHz bis multicores im GHz bereich bei Cortex-A12?. 
Und ARM selber ist nur der Core, bezüglich der "Chip-ausgabe" über 
Peripherals wie GPIO's, HDMI etc. ist der Lizennehmer verantwortlich. 
Und da gibt recht ordentliche Exemplare wo jeder Vergleich mit einem 8 
bit Waschmaschinencontroller lächerlich ist.

Bspw Chromecast:
https://tomkanok.wordpress.com/2013/07/25/chromecast-device-cpu-detailed-specifications/

MfG,

von m.n. (Gast)


Lesenswert?

Hat Moby eigentlich Ferien? Ich denke, er könnte abschließende Klarheit 
über die Leistungfähigkeit von AVRs bringen.

Max Schauzer schrieb:
> mir völlig wurscht..das ist das was die meistn hier mit den Controllern
> machen, fenster Zecihnen, Button anlegen für touch etc...das ist daher
> für 90% ein brauchbarer Test.
> MPEg kodieren, mit Fliesskoma rechnen im großen Stiel, Spracherkennung
> udn Mondfahrzeuge bauen hier die wenigsten..daher interessieren mit die
> theoretichen Diskussionen hier..0

Nimm den AVR! Das ist der beste µC der Welt. ARM taugt absolut nichts, 
da viel zu langsam.
Vielleicht kennt jemand noch einen guten Prozessor nicht zum Fenster 
zeichnen, sondern zum Fenster putzen - auch von außen?

von (prx) A. K. (prx)


Lesenswert?

m.n. schrieb:
> Vielleicht kennt jemand noch einen guten Prozessor nicht zum Fenster
> zeichnen, sondern zum Fenster putzen - auch von außen?

Kein Problem. Sind aber nur als Einzelstücke mit subtil 
unterschiedlichen und nicht immer vorher bekannten Eigenschaften 
verfügbar. Und die wirklich günstigen Typen sind nur sehr eingeschränkt 
versendefähig, weil der Zoll sie abgreift und zurückschickt oder 
einlagert, da hilft auch kein CE Zeichen (wenn sie nicht sowieso schon 
unterwegs absaufen). Gelegentlich wird auch von Problemen mit der 
Programmiersprache berichtete, eine Einhaltung von hiesigen Standards 
ist nicht garantiert.

: Bearbeitet durch User
von Hmmmmhhh (Gast)


Lesenswert?

Max Schauzer schrieb:
> mit Fliesskoma rechnen im großen Stiel

... das sagt alles über die Genauigkeit des Autors ...

von Irgendwer (Gast)


Lesenswert?

A. K. schrieb:
> Peter II schrieb:
>> geht nicht sinnvoll, sonst würde Intel & Co nicht ihre vergleiche anhand
>> von Benchmarks machen.
>
> Fairerweise muss man sagen, dass man bei AvrX und Cortex M3 durch
> Abzählen von Takten von Befehlen eines Programms der Realität wesentlich
> näher kommt als bei Intel & Co. Bei den x86 von heute ist das ein völlig
> hoffnungsloses Unterfangen.

Selbst bei den ARM ist das schon ein schwieriges unterfangen weil auch 
diese bereits pipelining/prefetch/branch speculation usw. beherrschen.

http://de.wikipedia.org/wiki/Pipeline_(Prozessor)
Cortex-M0+: 2-stufige Pipeline
Cortex-M0 : 3-stufige Pipeline
Cortex-M3 : 3-stufige Pipeline mit Sprungvorhersage
Cortex-M4 : 3-stufige Pipeline mit Sprungvorhersage
Cortex-M7 : 6-stufige Dual-Issue-Pipeline mit Sprungvorhersage

Ein einfaches aufsummieren der Befehle aus dem Handbuch gibt allenfalls 
einen theoretischen Worstcase aber für eine realistischen Wert müsste 
man genau betrachten in welcher Reihenfolge die verschiedenen Compiler 
die befehle anordnen (und ggf. auch bezüglich Piplining hin optimieren), 
wie sich diverse Waitstats im Flash/RAM der verschiednen Modelle 
auswirken (bzw. in wie weit diese z.B. durch Prefetch neutralisiert 
werden) und dann noch wie gut die sprungverhersage für den genauen Fall 
ist usw.

Ist insgesamt nicht wirklich viel einfacher aus bei einem der früheren 
x86.

von Falk B. (falk)


Lesenswert?

@ Fpga Kuechle (fpgakuechle) Benutzerseite

>ARM Systeme sind sehr wohl für Video/Graphic geeignet, das hat schon der
>Ur-ARM im Archimedes Acorn bewiesen dessen Graphic-leistung  Ende der
>Achtziger einen Commodore Amiga oder Mac CE alt ausehen ließ:

>http://en.wikipedia.org/wiki/Acorn_Archimedes
>Youtube-Video "DustyShows - Acorn Archimedes Xperience Szenedemo" (bspw. >ab 
2:00)

Das ist von 1994. Auserdem war die Graphikleistung der 16 Bit System der 
80er in erster Linie von den Customchips abhängig, die CPU hat da weit 
weniger eine Rolle gespielt.
Das Video/Demo ist Klasse, aber auch der Amiga konnte sowas.

>Heute überzeugt die Videoausgabe auf Smartphones oder in HDMI Sticks -

Wirklich? Die Standardsachen ala MP3/Videoplayer sind OK, weil wirrklich 
optimiert. Aber massig Apps und einfache Games sind einfach nur grausam! 
Da ruckelt und zuckelt es, trotz GPU und GHz CPU!

>ARM von Cortex M0 32 MHz bis multicores im GHz bereich bei Cortex-A12?.

Dito heute. Die Graphik macht die GPU, nur selten die CPU.

von Fpgakuechle K. (Gast)


Lesenswert?

Irgendwer schrieb:
> A. K. schrieb:

>> Fairerweise muss man sagen, dass man bei AvrX und Cortex M3 durch
>> Abzählen von Takten von Befehlen eines Programms der Realität wesentlich
>> näher kommt als bei Intel & Co.
>
> Selbst bei den ARM ist das schon ein schwieriges unterfangen weil auch
> diese bereits pipelining/prefetch/branch speculation usw. beherrschen.
>
> http://de.wikipedia.org/wiki/Pipeline_(Prozessor)
> Cortex-M0+: 2-stufige Pipeline
> Cortex-M0 : 3-stufige Pipeline
> Cortex-M3 : 3-stufige Pipeline mit Sprungvorhersage
> Cortex-M4 : 3-stufige Pipeline mit Sprungvorhersage
> Cortex-M7 : 6-stufige Dual-Issue-Pipeline mit Sprungvorhersage

Allerdings beherrscht der ARM bedingte Befehlsausführung was die Anzahl 
der bedingten Sprünge und damit der pipeline stalls bei falsch 
vorhergesagten Sprüngen deutlich minimiert.

Und kennt man die pipelinetiefe, kann man die zyclenzahl für eine 
schleife immer noch genau bestimmen. Auch ein Einberechnung der pipeline 
flush Kosten ist nun wirklich kein Hexenwerk (bei sprung anzahl clock 
cycles laut datenblatt drauf).

Kritischer ist IMHO die Abschätzung des Einflußes der Caches 
insbesonders bei nicht voll assoziativen Caches und Multi-Task systemen. 
Cache ist allerdings nur bei langsamen (externen) Speicherinterfaces 
sinnvoll,
so braucht der Cortex-M3 keinen Cache.

MfG,

von Max (Gast)


Lesenswert?

irgendwie verstehen hier offenbar einige oder die meisten! gar nicht 
worum es geht...obwohl der Threatstarter sogar Beispiele gebracht 
hat.r.affen es einige immer noch nicht..
Es geht nicht darum ob ein ARM generell besser ist, es geht darum ob es 
für umsteiger eine Überlegung ist, die eigentlich das übliche machen was 
90% der Leute hier amchen..nämlich LED Blinken, Button Zeichen auf 
Displays und einfach TExtausgabe bzw Balken...

Die Frage war ob ein ARM hierbei wirklich so viel schneller ist als ein 
mit 32MHZ getakteter XMEGA z.B.

Stattdessen kommen hier Beispiele mit Videocodierung und so ein 
tinnef...

UM es noch mal zu sagen..das FAZIT!! war ein mit 32MHz getakteter ARM 
ist für sowas genauso schnell..oder nahezu...wie ein 32MHz XMega..
Also ist ein mit 72MHz getakteter ARM auch tatsächlich bei solchen 
Aufgaben schon erheblich schneller und mit 120MHz noch mehr...

Eigentlich war die Frage gar einfach..aber 90% hier schon damit 
überfordert...

von Max (Gast)


Lesenswert?

haha, da fallen mir so geiel Beispiele zu diesem Forum hier ein :-)
Wenn  hier eienr fragt wie man eine Glühlampe am besten wehchselt, weil 
er sich damit nicht auskennt..werden daraus 45 Antworten doer 
mehr..sowas wie..warum nimmst Du nicht gleich LED, abbauen und T8 nehmen 
etc pp LOL
Dann kommen die üblichen Sicherheitsdiskussionen das er das besser sein 
lassen solle und jemand holen soll, andere erklähren den Wirkungsgrad 
von LED und LAmpen vs T8.
Dann kommen welche die sagen das das Thema geschlossen werden könne, 
weile s sicher nur ein Troll ist  hahah, ich schmeiß mich weg

von Max (Gast)


Lesenswert?

die hinweise auf die Rechtschreibung habe  ich vergessen LOL

von Moritz (Gast)


Lesenswert?

Max, du hast wieder vergessen deine Pillen zu nehmen :)

von Max (Gast)


Lesenswert?

ach ist doch wahr :-)

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.