Forum: Mikrocontroller und Digitale Elektronik Vergleich zweier Prozessoren


von Martin Z. (abalone76)


Lesenswert?

Liebes Forum,

Ich wollte die Leistung zweier Prozessoren vergleichen:

ARM Cortex-M4F (TI Tiva TM4C1231H6PGE), 
http://www.ti.com/lit/ds/spms338e/spms338e.pdf

und

Atmel/MCP SAM3X 
(http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-11057-32-bit-Cortex-M3-Microcontroller-SAM3X-SAM3A_Datasheet.pdf)

Beide 32bit, der Cortex M4F läuft mit max 80MHz, der Cortex M3 mit max. 
84MHz. Zum Cortex M3 finde ich die Angabe "105 MIPS", zum Cortex M4F 
"100 DMIPS".

Angeblich kann man MIPS und DMIPS nicht einfach so umrechnen...

Wie und mit welcher Aussagekraft kann ich die Leistung der CPUs 
zueinander in Relation stellen?

Und hat eine FPU (M3 hat keine, M4F hat eine) einen Einfluss auf diese 
Zahlen (MIPS, DMIPS)?

Danke :-)

von (prx) A. K. (prx)


Lesenswert?

Martin Z. schrieb:
> Wie und mit welcher Aussagekraft kann ich die Leistung der CPUs
> zueinander in Relation stellen?

Die beste Aussagekraft hat das Programm, um das es dir geht. Notfalls 
reduziert auf jenen Kern, der Performance benötigt.

MIPS = Meaningless Indicator of Processor Speed.

von Alex D. (daum)


Lesenswert?

Ein M4 ist meistens schneller als ein M3, da er mehr Instructions hat, 
die spezielle Berechnungen beschleunigen können.
Wie viel das ausmacht, hängt vom Programm ab.

Gleiches gilt für die FPU. Werden floats gar nicht oder nur ein paar bei 
der Initialisierung benutzt, hat diese keinen Einfluss auf die 
Geschwindigkeit. Werden floats allerdings häufig benutzt, macht eine FPU 
einen riesen Unterschied.

Der M4 kann beispielsweise mit einer Instruktion 2 32bit Werte zu einem 
64bit Wert multiplizieren, der M3 kann das nicht.
Auch einige andere Instructions wie MAC (multiply accumulate) sind auf 
dem M4 schneller.

von Stefan F. (Gast)


Lesenswert?

Es gibt aber auch Operationen, wo sowohl Cortex M3 als auch M4 (bei 
gleicher Taktfrequenz) kein bisschen schneller sind, als ein oller 8bit 
AVR. Es gibt sogar ein paar wenige Fälle, wo sie langsamer sind.

Deswegen sagte A.K. schon zu Recht, dass der einzig aussagekräftige 
Benchmark das konkrete Anwendungsprogramm ist.

von Jakob (Gast)


Lesenswert?

Stefanus F. schrieb:

> Es gibt aber auch Operationen, wo sowohl Cortex M3 als auch M4 (bei
> gleicher Taktfrequenz) kein bisschen schneller sind, als ein oller 8bit
> AVR. Es gibt sogar ein paar wenige Fälle, wo sie langsamer sind.

Kannst du ein paar Beispiele nennen? Stehe vor einem ähnlichen Problem 
wie der T0.

von Stefan F. (Gast)


Lesenswert?

Jakob schrieb:
> Stefanus F. schrieb:
>
>> Es gibt aber auch Operationen, wo sowohl Cortex M3 als auch M4 (bei
>> gleicher Taktfrequenz) kein bisschen schneller sind, als ein oller 8bit
>> AVR. Es gibt sogar ein paar wenige Fälle, wo sie langsamer sind.
>
> Kannst du ein paar Beispiele nennen? Stehe vor einem ähnlichen Problem
> wie der T0.

Zum Beispiel können sie I/O Pins nicht schneller ein/aus schalten, als 
AVR (bei gleicher Taktfrequenz - wohlgemerkt). Wo sie langsamer waren, 
habe ich vergessen. Das stand irgendwo in dem YIU Buch (The Definitive 
Guide to ARM Cortex-M3 and Cortex-M4 Processors von Joseph Yiu).

Für mich ist die CPU Geschwindigkeit nicht so spannend. Die meisten 
Anwendungen laufen bei mir mit 1 oder 8 MHz, weil es genügt.

von Martin Z. (abalone76)


Lesenswert?

...Danke für die Ausführungen.

Die konkrete Anwendung wäre ein Audio/Video-Controller, d.h. Steuerung 
und Überwachung von Geräten, wie Projektoren etc. über IP, RS232... Es 
werden hauptsächlich ein paar Strings durch die Gegend geschickt und 
ausgewertet und auf Eingaben gewartet... Software ist in C (arm gcc).

Es gibt professionelle A/V-Controller mit dem Cortex M4F drin und ich 
hatte mich gefragt, ob ein M3 im Vergleich ein grosser Rückschritt wäre.

Wie der A/V-Cointroller von DSP-Funtionen und FPU profitiert, ist mir 
auch eher unklar. Wird ja beispielsweise kein Audio gerechnet.

von Stefan F. (Gast)


Lesenswert?

Martin Z. schrieb:
> Es werden hauptsächlich ein paar Strings durch die Gegend geschickt

Dann sollte die CPU Leistung völlig irrelevant sein.

von Frank K. (fchk)


Lesenswert?

Martin Z. schrieb:
> ...Danke für die Ausführungen.
>
> Die konkrete Anwendung wäre ein Audio/Video-Controller, d.h. Steuerung
> und Überwachung von Geräten, wie Projektoren etc. über IP, RS232... Es
> werden hauptsächlich ein paar Strings durch die Gegend geschickt und
> ausgewertet und auf Eingaben gewartet... Software ist in C (arm gcc).

Dann wäre der TM4C129 mit seinem internen Fast Ethernet MAC+PHY 
vielleicht sinnvoller.

Was auch einen EInfluss hat, ist das Flash. Das bremst nämlich einen 
Cortex M aus. Wenn Geschwindigkeit eine Rolle spielen sollte: Den 
TM4C129 gibts mit 256k RAM, d.h. da hast Du genug Platz, um kritischen 
Code aus dem Flash ins RAM zu kopieren und dort laufen zu lassen. Genau 
deswegen gibts z.B. auch NXP LPC4000'er ohne jegliches Flash, aber mit 
1M RAM.

Ich denke aber, bei Dir sind andere Sachen wichtiger als ein paar % 
Geschwindigkeit.

fchk

von Rolf M. (rmagnus)


Lesenswert?

Martin Z. schrieb:
> ...Danke für die Ausführungen.
>
> Die konkrete Anwendung wäre ein Audio/Video-Controller, d.h. Steuerung
> und Überwachung von Geräten, wie Projektoren etc. über IP, RS232... Es
> werden hauptsächlich ein paar Strings durch die Gegend geschickt und
> ausgewertet und auf Eingaben gewartet... Software ist in C (arm gcc).

Dann würde ich eher schauen, dass der µC alle benötigten Schnittstellen 
schon mitbringt. Die Rechenpower des CPU-Kerns ist dagegen wohl eher 
nicht so entscheidend.

> Wie der A/V-Cointroller von DSP-Funtionen und FPU profitiert, ist mir
> auch eher unklar.

Nach deiner Beschreibung zu urteilen: Gar nicht.

von Wumpe (Gast)


Lesenswert?

Frank K. schrieb:
> Was auch einen EInfluss hat, ist das Flash. Das bremst nämlich einen
> Cortex M aus. Wenn Geschwindigkeit eine Rolle spielen sollte: Den
> TM4C129 gibts mit 256k RAM, d.h. da hast Du genug Platz, um kritischen
> Code aus dem Flash ins RAM zu kopieren und dort laufen zu lassen. Genau
> deswegen gibts z.B. auch NXP LPC4000'er ohne jegliches Flash, aber mit
> 1M RAM.

Ist es aber bei den Cortex-M3/4 nicht teilweise sogar so, dass Sie bei 
Ausführung aus dem Ram langsamer werden?
Ich dachte wenn viele Speicher-/Lade-Operationen in den Ram stattfinden 
bremst der Bus das System aus.

Bei ST sind bei höheren Taktraten die M4 merklich schneller als gleich 
getaktete M3. Der Einfluss des Prefetchers (ART Accelerator) ist in 
allen Anwendungen die ich kenne messbar. Für volle PErformance im Ram, 
kenne ich es von einer anderen Architektur, dass der Code auf anderen 
Ram Bänken liegen muss. Dann kann parallel auf Daten und Instructions 
zugegriffen werden … würde mich wundern wenn das beim genannten LPC4000 
nicht so ist.

Renesas ist sehr schnell auf dem Flash unterwegs … ist aber nicht mehr 
schneller als ST mit deren Prefetcher.

Für die genannte Aufgabe würde ich aber auch eher den Blick auf die 
Peripherie werfen, wie es einige Vorposter schon getan haben.

von oszi40 (Gast)


Lesenswert?

Wumpe schrieb:
> Der Einfluss des Prefetchers (ART Accelerator) ist in
> allen Anwendungen die ich kenne messbar.

Bleibt nur die Frage, ob er benutzt wird oder werden darf weil evtl. 
Code eingeschleust werden könnte wie bei Intel. Wie A.K. schon schrieb: 
das benutzte Programm entscheidet. Was nützt beste Rechenleistung, wenn 
auf irgendwelche I/O-Prozesse gewartet werden muss?

von (prx) A. K. (prx)


Lesenswert?

Sobald Caches in Spiel kommen muss man die Zugriffscharakteristik des 
konkreten Programms betrachten. Womit nicht nur CPU-Caches gemeint sind, 
sondern auch auch Prefetcher und Flash-Caches.

Wumpe schrieb:
> Ist es aber bei den Cortex-M3/4 nicht teilweise sogar so, dass Sie bei
> Ausführung aus dem Ram langsamer werden?

Wenn der Core parallele Zugriffspfade von I-Fetch zu Flash und und von 
Daten zu RAM hat, kann das so sein. Andererseits ist die Zugriffszeit 
auf RAM kürzer als die auf nichtsequentielles und in keinem Cache 
enthaltenes Flash. Es kann u.U. sein, das Interrupt-Handler aus dem RAM 
schneller starten und langsamer laufen als aus dem Flash.

M.a.W: Das ist ein komplexes Thema und die Komplexität steigt ungefähr 
mit <n> in Cortex M<n>.

: Bearbeitet durch User
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.