|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
. o& v8 ?9 x1 z) c# y, A8 U5 c0 ~* b! X1 l i4 D
环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)# H; h' F4 B1 Q4 N# a: K
自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的. R" ^) j! L- B/ {- P9 `. O3 D/ S
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?8 n. [0 L; n) t, N& [
% w5 ~1 ?& {% m9 F
6 e5 v3 m9 ~5 _* p$ o2 ]& K
下面是统计结果2 @3 F" h& d, {! f3 B5 q
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间 ! _( h+ ~1 o9 I/ }8 C5 O
emucycle0_0 = EMUCNT0;
% e, ] R g3 D9 o6 Z2 Uemucycle1_0 = EMUCNT1;
( k, {( I' ]; `" p6 ^) x8 vemucycle0_1 = EMUCNT0;
& Q/ |/ b, f, cemucycle1_1 = EMUCNT1;
+ }) G3 w* |" G9 W4 H8 temuoverhead = (emucycle0_1 - emucycle0_0);. s" q/ _" ]3 j. Q
0 X$ | {6 N- ]算法();
/ }8 b- T9 @0 ]& I
( ]& r/ P1 C! h* P6 gemucycle0_1 = EMUCNT0;5 B$ Z& C6 P4 D2 Y! U* `
emucycle1_1 = EMUCNT1;
0 M: g1 M8 J, Y" L0 a6 v% Z9 f) W3 s" y% L: e) K; L
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
! ` G9 O* D- |0 K" C1 u$ R9 R2 j% }0 }" ?( ]
z: m" W- i y/ {. \7 Q
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
! v5 z2 T% Y: [. q DSP> cycles: 196468 : 11814000& P- L$ e! M* w% ]- i
DSP> times: 430.85 us with CPU 456." V' {( a/ o* y4 W2 x
DSP> cycles: 3238292 : 118140004 a* s3 m" p% j2 Q' v
DSP> times: 7101.52 us with CPU 456.+ ~. z- Q9 c' O" l6 y( v
DSP> cycles: 157860 : 11814000
. X( j- Q4 @3 d DSP> times: 346.18 us with CPU 456.9 f( B/ O- @0 p9 h8 R4 U5 ]/ {
DSP> cycles: 3265684 : 118140002 R+ s9 z9 S2 `- p6 A
DSP> times: 7161.59 us with CPU 456.* R% `, z+ q) F; U/ I" M+ X" H& y
DSP> cycles: 156344 : 11814000/ D v0 S+ [' m5 p/ @' j! L. H6 R
DSP> times: 342.86 us with CPU 456. d. ]3 T) }& k* Z v- e6 M9 L
DSP> cycles: 3304428 : 11814000& D: _# A& Q' ?; F8 Y W
DSP> times: 7246.55 us with CPU 456.# p1 Q6 y# q, o
. o7 D; m7 \% a R设置:相应的表放到IRAM中了
# W; C7 ]& J/ y" H, z1 qSECTIONS; X% [. Q* J/ F! B7 J7 t
{
& {; w* c7 V$ u! `! W8 j, n .edma_data>IRAM align = 0x803 x( m5 M6 O. B e) r; F
.audio_glb> IRAM align = 0x80" ^0 \" ]9 `0 U9 e' s* T3 q
.f_table> IRAM, align = 0x80
& G) l2 G6 A$ K; x6 m/ A$ q .f_text> DSP_PROG, align = 0x80 " Y+ _& g% J9 \6 k' \* ?7 y
.f_glb> IRAM align = 0x80
! w# A$ k, S2 H E .ref_glb > IRAM align = 0x809 M, A6 _+ k v0 Y" _
}
5 x/ M; E. q) a
' c' V) y) G; y* K( r- R: h& ]6 r3 Z, X6 q6 l( x; _
编译加了-O3 优化参数2 I1 a" w+ E2 e. p/ ]& a
. }/ V! F5 j( ^, y, d/ r9 b5 }2 M2 G
! n1 n' ?7 Q4 m7 Z+ n" e! e5 u0 m
( A! J- i- H1 d8 q0 Q, F: O/ I
# J4 j0 F" b% C- @6 a. j, _/ K |
|