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 #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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.