|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑 & j1 _) s0 K8 r6 b1 P" ~2 \; P }% }
: T* x# H9 b( p; i3 u. M [1 w
环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)- B: U6 x/ g2 F& e
自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的3 ~1 C8 r" Y8 H: b& j- |7 }9 @
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?# E3 i' Y2 o+ `
; X1 f; g, C' ~
" t; j. p8 j, f$ Y
下面是统计结果
+ J# C$ L7 A- e* ?- k统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间
. a/ Y1 m6 U: f8 Q6 H T$ |7 V3 G/ M+ femucycle0_0 = EMUCNT0;
2 o1 g: i' g2 |. @/ U) d0 nemucycle1_0 = EMUCNT1;
9 H. [/ L) l+ h1 U( ~. [* u. wemucycle0_1 = EMUCNT0;
; F9 d2 F1 i9 ?+ ^* p! Jemucycle1_1 = EMUCNT1;
- g2 }7 t, z0 R: Y1 \2 m1 v( `* R9 q$ Y4 [emuoverhead = (emucycle0_1 - emucycle0_0);+ |2 L( H6 J; V! Q8 A* X1 I
/ ]- G1 e" [1 ]0 k- H; W算法();& `+ L0 R _# ~0 o0 I
. j1 D" J; \8 I5 Xemucycle0_1 = EMUCNT0;
" y& [* w2 I1 r- z" P R5 y0 `emucycle1_1 = EMUCNT1;: R0 j2 y( C8 ?( t/ t# `9 S: P/ j
8 O5 D/ H- S( J3 }/ }0 v$ K
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
' b# ~/ E7 O8 {3 n5 Y! B; t
* v7 ~. \; |$ q2 y5 j# L
# H5 O3 q* l8 e9 u统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
( ]+ m8 u: B8 r' A DSP> cycles: 196468 : 11814000
6 S t3 T8 t, S$ O/ V4 J" L DSP> times: 430.85 us with CPU 456.3 |! [5 n; {* P1 s0 w5 |
DSP> cycles: 3238292 : 11814000
2 Q! U: z5 \( j' |: z- I0 G DSP> times: 7101.52 us with CPU 456.% S5 q( d7 K5 s2 M7 K
DSP> cycles: 157860 : 11814000
, ^. \, R4 y3 ~5 @+ G% Y DSP> times: 346.18 us with CPU 456.
V9 M7 A, y9 ]$ a p DSP> cycles: 3265684 : 11814000: A+ C: r* j9 g& V) U! b0 r: ?
DSP> times: 7161.59 us with CPU 456.
, f! H0 |: n. S% H! _: ^ DSP> cycles: 156344 : 11814000# P* f2 a4 l7 f+ M
DSP> times: 342.86 us with CPU 456.1 U+ s/ a s# m6 F
DSP> cycles: 3304428 : 11814000
& q2 Q4 ^+ I$ v) T DSP> times: 7246.55 us with CPU 456.& E1 f+ ?7 h& a( Q7 n5 L; t: s
; _. c/ Y7 g) G! E o E
设置:相应的表放到IRAM中了! p- l O4 ~3 ^0 F
SECTIONS
; [/ n9 {; O2 ~0 d. T" o{1 P/ w( Z6 G8 F; P* {& U
.edma_data>IRAM align = 0x803 L: _- E2 h5 l3 p& N: U2 Y4 Z, w
.audio_glb> IRAM align = 0x80
: I3 O# O3 @ r- h- m8 ^$ ? .f_table> IRAM, align = 0x80 1 B. {* ]1 j- m4 L+ H8 V( N0 k: ]$ a
.f_text> DSP_PROG, align = 0x80 " i$ N" Z; v' }( ^( V I5 A+ A
.f_glb> IRAM align = 0x80; U9 [: u6 W* s
.ref_glb > IRAM align = 0x80) g% `( Z7 K0 h$ A3 R+ [1 C
}
$ [1 u; x0 O: b# i3 r6 P1 Q
* i8 g3 ^3 i* c: ^. N' R. {: A
" A# }1 i: r9 o+ o编译加了-O3 优化参数; f3 ?0 X# d! |
7 n$ z- z2 \$ F6 ?; G* x4 U
$ ]/ S+ p0 ]6 o/ |- @5 l3 y; t1 Q7 T
0 g3 i1 l# F& X# q9 t! J# t" @
5 l, j1 Z8 Z8 A7 H" [5 u1 `6 f! P6 \4 G0 t& Y* |' P" `
) O+ [& \' \" Z5 \; m7 b$ o
|
|