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