|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
2 _, `9 x- C9 P( g0 T3 v# }
" D3 m/ U$ y8 w3 [3 W环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)
& M7 w( E3 C _2 [# C: I/ M) }自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的) f8 |% Y! e' k6 n F! }8 W
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?0 I3 ]% P9 l0 N
/ q7 b; D# ] y9 s
2 @; Q5 t& P2 _下面是统计结果" O# J% y! c3 x
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间
. Z9 T' w) V$ d# iemucycle0_0 = EMUCNT0;, ]5 a! t8 A( ]1 d+ d. l) c" B
emucycle1_0 = EMUCNT1;0 H( l( { r9 V0 C+ a- h
emucycle0_1 = EMUCNT0;
) R# }& W5 r2 v, D4 e4 J/ Semucycle1_1 = EMUCNT1; * g" f- s2 ]; E8 G0 \# @
emuoverhead = (emucycle0_1 - emucycle0_0);9 g1 O) b8 U; O5 V6 N
+ W: e$ j; P) V9 G. I
算法();
, E4 }0 k) u& A- q
+ k$ J6 V7 \) u4 P1 k5 W Aemucycle0_1 = EMUCNT0;+ ^8 ?3 z, r/ T: y/ g5 g
emucycle1_1 = EMUCNT1;
8 i9 t: B, }8 L3 S* g. H( v) ]( L% z6 A" f9 d- ]" f5 V* s
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;8 q( \4 S Y: u g9 ~9 ]- d% w' `2 A. a% Z
, @' r5 i8 q5 C% Z2 ]9 C
: P; L6 \5 N% L. D; L+ `; ]
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
, g) P/ a8 D- j3 H DSP> cycles: 196468 : 11814000) D6 H) s7 v n9 R# o1 r/ K- t
DSP> times: 430.85 us with CPU 456.& f5 [+ b, b+ C( c
DSP> cycles: 3238292 : 118140009 j) Q" C1 M7 a" n0 i6 ]
DSP> times: 7101.52 us with CPU 456.
, j% N3 a2 m! e; H } DSP> cycles: 157860 : 11814000
- p, r4 p% ?, O DSP> times: 346.18 us with CPU 456.% S9 ?$ H6 m( H# l7 P
DSP> cycles: 3265684 : 11814000
0 ?: w0 P* d7 G DSP> times: 7161.59 us with CPU 456." R; ]3 |; `1 B( O$ |
DSP> cycles: 156344 : 11814000" x& ~9 }/ ^* {$ R2 M, W
DSP> times: 342.86 us with CPU 456.
* b6 j0 V' S& d5 I8 q) o' A9 X9 z DSP> cycles: 3304428 : 118140008 ^0 e- T/ i0 v' I& n8 P6 w! @ b
DSP> times: 7246.55 us with CPU 456.
g& }% U5 x3 l) l
' m2 {& [2 ` ]0 D8 S设置:相应的表放到IRAM中了# i' Z" b: p3 E n% J
SECTIONS
" B( n. z+ m; J% Q{' Y( `! t) w- ^, ?1 J
.edma_data>IRAM align = 0x80
, G0 v) Q4 m/ R0 N* v& ]% @ .audio_glb> IRAM align = 0x803 R5 {4 T; ]* e. z7 j& K# d* j
.f_table> IRAM, align = 0x80
9 n. B, h+ v( E& R .f_text> DSP_PROG, align = 0x80 1 Q* K. `5 X% z3 z6 R
.f_glb> IRAM align = 0x80/ f5 k- ~9 h) L' Q( k
.ref_glb > IRAM align = 0x80
; \) t7 L; c* Y1 {/ k}
3 Y4 V" P) Q2 x% j# m& X4 U
2 J+ F0 o4 V$ P& u) p4 @
1 ^3 _) \) c% r, ^编译加了-O3 优化参数
( B- b3 F: I# {3 A" L0 q1 y
, `) I7 r5 U' H) R) _! m. o7 K0 R% r! g* R
$ w" h% _1 I/ x' [( T2 K# g6 c
, r" u( ]/ l" Z/ C& H' [+ [: K+ Q
# f W4 O: D, c' E7 P2 p, [2 n; }
! b: o3 W/ k* d& M, _ |
|