XMC4500 vs stm32f429.warum gibt es Unterschiede in der Berechnungsdauer?

Gast #3876295
Lesenswert?

Hallo zusammen,

im Anhang befinden sich zwei Programme. Beide tun im Prinzip das 
Gleiche, sind aber jeweils für den XMC4500 und den STM43F429 geändert. 
Die Mikrocontroller führen Floating-Point-Berechnungen durch und messen 
mit ihren internen Timern die Zeit (Angabe in Prozessortakten), die 
jeweils für die Berechnung gebraucht wird. Das Ergebnis der Zeitmessung 
wird per Debugger ausgelesen.

Die Umgebung:
- Toolchain: Keil MDK-Lite Version 5.12.0.0
- Hardware:  XMC4500-relax-kit und STM32F429Discovery

Nun frage ich mich, wie die merklichen Unterschiede in den 
Prozessortakten, die die beiden für die bestimmten Test-Berechnungen 
brauchen, zustande kommen? Beide Mikrocontroller haben doch den gleichen 
Cortex-M4-Kern drin und es wird derselbe Compiler verwendet...müsste die 
Anzahl der benötigten Prozessortakte dann nicht ähnlicher sein?

Hier nochmal die Ergebnisse im Überblick:
1
//-------------------------------------------------------------------------------------------------------
2
// TEST 1  XMC4500
3
// Mit FPU:   Taktzyklen insgesamt: 356 => Berechnungsdauer bei 120 MHz: 2.97 us    (FLASH)
4
// Ohne FPU:  Taktzyklen insgesamt: 1153 => Berechnungsdauer bei 120 MHz: 9.61 us   (FLASH)
5
//-------------------------------------------------------------------------------------------------------
6
//-------------------------------------------------------------------------------------------------------
7
// TEST 2 XMC4500
8
// Mit FPU:   Taktzyklen insgesamt: 201 => Berechnungsdauer bei 120 MHz: 1.68 us    (FLASH)
9
// Ohne FPU:  Taktzyklen insgesamt: 949 => Berechnungsdauer bei 120 MHz: 7.91 us   (FLASH)
10
//
11
// Mit cos aus der DSP-Library:
12
// Mit FPU:   Taktzyklen insgesamt: 129 => Berechnungsdauer bei 120 MHz: 1.08 us   (FLASH)
13
// Ohne FPU:  Taktzyklen insgesamt: 685 => Berechnungsdauer bei 120 MHz: 5.71 us   (FLASH)
14
//-------------------------------------------------------------------------------------------------------
15
//-------------------------------------------------------------------------------------------------------
16
// TEST 3 XMC4500
17
// Mit FPU:   Taktzyklen insgesamt: 599 => Berechnungsdauer bei 120 MHz: 4.99 us    (FLASH)
18
// Ohne FPU:  Taktzyklen insgesamt: 2907 => Berechnungsdauer bei 120 MHz: 24.23 us   (FLASH)
19
//
20
// Mit cos und sin aus der DSP-Library:
21
// Mit FPU:   Taktzyklen insgesamt: 472 => Berechnungsdauer bei 120 MHz: 3.93 us   (FLASH)
22
// Ohne FPU:  Taktzyklen insgesamt: 2238 => Berechnungsdauer bei 120 MHz: 18.65 us   (FLASH)
23
//-------------------------------------------------------------------------------------------------------

Und zum STM32F429:
1
//-------------------------------------------------------------------------------------------------------
2
// TEST 1 STM32F429
3
// Mit FPU:   Taktzyklen insgesamt: 216 => Berechnungsdauer bei 180 MHz: 1.2 us    (FLASH)
4
// Ohne FPU:  Taktzyklen insgesamt: 1040 => Berechnungsdauer bei 180 MHz: 5.78 us   (FLASH)
5
//-------------------------------------------------------------------------------------------------------
6
//-------------------------------------------------------------------------------------------------------
7
// TEST 2 STM32F429
8
// Mit FPU:   Taktzyklen insgesamt: 166 => Berechnungsdauer bei 180 MHz: 0.92 us    (FLASH)
9
// Ohne FPU:  Taktzyklen insgesamt: 946 => Berechnungsdauer bei 180 MHz: 5.26 us   (FLASH)
10
//
11
// Mit cos aus der DSP-Library:
12
// Mit FPU:   Taktzyklen insgesamt: 108 => Berechnungsdauer bei 180 MHz: 0.6 us   (FLASH)
13
// Ohne FPU:  Taktzyklen insgesamt: 608  => Berechnungsdauer bei 180 MHz: 3.38 us   (FLASH)
14
//-------------------------------------------------------------------------------------------------------
15

16
//-------------------------------------------------------------------------------------------------------
17
// TEST 3 STM32F429
18
// Mit FPU:   Taktzyklen insgesamt: 508 => Berechnungsdauer bei 180 MHz: 2.82 us   (FLASH)
19
// Ohne FPU:  Taktzyklen insgesamt: 3000 => Berechnungsdauer bei 180 MHz: 16.67 us   (FLASH)
20
//
21
// Mit cos und sin aus der DSP-Library:
22
// Mit FPU:   Taktzyklen insgesamt: 378 => Berechnungsdauer bei 180 MHz: 2.1 us   (FLASH)
23
// Ohne FPU:  Taktzyklen insgesamt: 2334 => Berechnungsdauer bei 180 MHz: 12.97 us   (FLASH)
24
//-------------------------------------------------------------------------------------------------------

Sollten noch weitere Infos benötigt werden stehe ich gerne zur 
Verfügung. Besten Dank!
      DonPanso
Angehängte Dateien:
Gast #3876354
Lesenswert?

Kenne den XMC4500 nicht, aber könnte es vielleicht daran liegen:

STM32F4:
Outstanding results :
- 210DMIPS at 168Mhz.
- Execution from Flash equivalent to 0-wait state performance
up to 168Mhz thanks to ST ART Accelerator
Gast #3876380
Lesenswert?

hp-freund schrieb:
> Kenne den XMC4500 nicht, aber könnte es vielleicht daran liegen:
>
> STM32F4:
> Outstanding results :
> - 210DMIPS at 168Mhz.
> - Execution from Flash equivalent to 0-wait state performance
> up to 168Mhz thanks to ST ART Accelerator

Gute Frage! Das könnte es sein...ich werde beizeiten mal schauen, dass 
ich die Tests mit einem STM32f3Discovery durchführe. Der hat auch einen 
Cortex-M4-Kern, aber nach dem ersten Überfliegen des Datenblattes nicht 
den ART-Accelerator. Oder ich schaue mal, ob ich den Accelerator beim 
STM32F4 deaktiviert kriege, um ähnliche Ergebnisse zu erhalten.
Bisher kann ich aber sagen, dass der XMC4500 auch einen Instruction- und 
Data-Prefetch vom Flash hat...ob das mit dem ART Accelerator 
vergleichbar ist gucke ich mir noch an.
Gast #3876399
Lesenswert?

Programmierer schrieb:
> DonPanso schrieb:
>> Beim XMC4500 ist der Flash ebenfalls gecacht.
> Aber vielleicht hat Infineon seinen Cache minimal anders gebaut als ST
> seinen...

Klingt plausibel! Dann gucke ich mal, dass ich den Code ins RAM kriege 
und damit ähnliche Ergebnisse herbeiführen kann. Besten Dank!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren