Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeit SAM4S


von Mirco C. (Firma: s@Td) (mcontroller)


Lesenswert?

Hi,

ich habe gerade ein bisschen Schwierigkeiten die Rechengeschwindigkeit 
eines SAM4S mit CortexM4 bei 120Mhz einzuschätzen. Dabei habe ich 
folgenden Code:
1
static void delay_ticks(uint32_t ul_dly_ticks)
2
{
3
  volatile uint32_t ul_delay_tick = 7000000;
4
  while (ul_delay_tick--);  
5
}

Der so umgesetzt wird:
1
static void delay_ticks(uint32_t ul_dly_ticks)
2
{
3
  400a60:  b082        sub  sp, #8
4
  volatile uint32_t ul_delay_tick = 7000000;
5
  400a62:  f64c 73c0   movw  r3, #53184  ; 0xcfc0
6
  400a66:  f2c0 036a   movt  r3, #106  ; 0x6a
7
  400a6a:  9301        str  r3, [sp, #4]
8
  while (ul_delay_tick--);
9
  400a6c:  9b01        ldr  r3, [sp, #4]
10
  400a6e:  f103 32ff   add.w  r2, r3, #4294967295
11
  400a72:  9201        str  r2, [sp, #4]
12
  400a74:  2b00        cmp  r3, #0
13
  400a76:  d1f9        bne.n  400a6c <delay_ticks+0xc>
14
  
15
}
16
  400a78:  b002        add  sp, #8
17
  400a7a:  4770        bx  lr

Erzeugen tut das ganze ein rund 1ne Sekunde langen Delay. Was mich 
wundert ist, dass die Schleife nur 7.000.000 mal durchlaufen wird.

Daher stellt sich mir die Frage was den Prozessor aufhält?
Wird in jedem Takt eine Instruktion beendet (bei 3-stufiger Pipeline)?

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.