|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
+ _; c4 y D* r$ \, Q9 r( W9 y }6 k* N& j7 Z
环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)
2 f# s( E7 ^/ M/ B/ P6 v自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的
" ~( v+ }/ Q, o) \* l应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?; P& D' j! O: k
! N$ w! }( `7 v9 x
6 [# h, e; A7 F7 v: W下面是统计结果
5 k g0 f5 K t9 `4 C, S: e统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间
; x% I4 v! p5 J( ~0 @- Xemucycle0_0 = EMUCNT0;
4 H" o4 E1 d( S9 m5 Nemucycle1_0 = EMUCNT1;
% N0 n! f$ I! ?6 \& F; Iemucycle0_1 = EMUCNT0;; P- W" \! v+ Y! b! L
emucycle1_1 = EMUCNT1;
: I6 `. k4 p- S2 B2 |emuoverhead = (emucycle0_1 - emucycle0_0);) Z' c F7 ]# _( f; I# }
8 W( e& q) j8 c1 Z+ E7 q, b+ W
算法();4 Q6 u( D/ K3 H
! d/ O1 P5 e/ ?% V# k
emucycle0_1 = EMUCNT0;/ _: o# f5 k+ P, ]: }" A
emucycle1_1 = EMUCNT1;0 i, v. ]3 @5 p! } U. E
* ^ J6 O, b4 K* U6 x8 L
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;5 i+ C- D s5 H. F# s% |
' f0 z6 o% S3 ^5 t; d$ S
5 M) V2 I1 M. o6 A统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
- Y8 W K, G! s; X DSP> cycles: 196468 : 11814000
9 f4 Y3 ~- @" X' J* y7 N! p DSP> times: 430.85 us with CPU 456.
8 s1 O" o) ~& E0 s9 C5 n0 ` DSP> cycles: 3238292 : 11814000
, V0 |6 b+ J& } DSP> times: 7101.52 us with CPU 456.
+ D. N% O: k7 i4 O5 ~ U DSP> cycles: 157860 : 11814000; `. b2 K) j; i
DSP> times: 346.18 us with CPU 456.
1 |- k+ ~* d- M; j/ O DSP> cycles: 3265684 : 11814000+ ]& O' S. ~+ {+ i+ B6 r
DSP> times: 7161.59 us with CPU 456.
: g) q6 V$ K0 S; B- v DSP> cycles: 156344 : 11814000
8 m5 Z8 \1 H) Q" _ DSP> times: 342.86 us with CPU 456.
, |3 S" {! o; q, i9 D DSP> cycles: 3304428 : 11814000
5 A( H1 U2 }+ l: o; u- z1 ^: Z/ m4 v DSP> times: 7246.55 us with CPU 456.) J0 `# x9 j3 ]9 z. u8 r) V
- ^. [( A6 V" z; X2 K设置:相应的表放到IRAM中了
3 v! h5 j. F! H4 l7 J: i) hSECTIONS" n, N8 z7 o! Z# f
{: e: l. [; Q9 \" E
.edma_data>IRAM align = 0x80
" J% p4 D: X9 E- G3 G .audio_glb> IRAM align = 0x80
D7 M% r' r( f: ^1 T* @ .f_table> IRAM, align = 0x80 1 L6 P; h+ N0 w8 ~- A& }9 w/ U
.f_text> DSP_PROG, align = 0x80 " b8 O1 m" ~3 F2 c' M
.f_glb> IRAM align = 0x807 ~- S; \9 y+ W* X: y
.ref_glb > IRAM align = 0x80
, f3 P) F7 x7 {, J( ~* R. l+ M' N}
/ V/ v2 r Q9 @( g) W
" ^* b% G" ^, s2 ?& u8 j/ H4 C, ?2 a: L% x, l) q, R
编译加了-O3 优化参数
, V. J' Q2 O; C1 Q0 g& t' C9 ]1 |* E0 B4 F g
$ t0 D2 X% h/ \/ Y2 w/ p& l" b8 U/ C1 w6 l
3 O G7 {4 ]9 D3 G; ^; b0 y; @* _% |* l) e) l
r w) Q, F! c C: c( A' q3 |% B
|
|