|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑 * |" ~+ b ]0 E
3 J) v* J/ Q8 w9 S, @
环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)
) \+ c0 G0 g; a" p* s, d }自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的
: P1 ?) T( l2 ~* F应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?
5 u$ D' J0 Q4 m5 w: A. @
$ {) g/ `6 c8 H+ Z3 j" R" y9 ?2 i
下面是统计结果
T' h4 ?+ q0 l" T5 M( O! ~统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间
" b, {+ ]' h! U/ o# semucycle0_0 = EMUCNT0;& V2 h' R( _ r# P& b: e
emucycle1_0 = EMUCNT1;3 f4 i. P" T. Y z5 R
emucycle0_1 = EMUCNT0;" \+ y0 e9 h/ ]1 G. ?8 ^+ [
emucycle1_1 = EMUCNT1;
3 u7 ~! H% v+ c8 k6 demuoverhead = (emucycle0_1 - emucycle0_0);, C0 w; w4 [: V9 H9 ]* A4 e9 e- {
1 g; F/ Q. N8 L' L0 n% {" I算法();
9 M& J1 G! q2 L% y9 P/ T2 f1 H3 `. _) U
emucycle0_1 = EMUCNT0;) H2 w) a3 p& q' T* n
emucycle1_1 = EMUCNT1;
; K! H# E* Z5 d( |0 [4 c5 B
: y' c* E3 J" j7 n* \: n! dCycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
* q" [1 ~! f( Z' |; q
) Y: A! g0 z- j( N; ]! h" q' g0 t$ g- M
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
! Y3 e/ C% y; C4 G% y DSP> cycles: 196468 : 11814000
4 m/ t7 z% U4 p. S& w DSP> times: 430.85 us with CPU 456.
+ z/ w' |# T W M1 W- }: e+ I DSP> cycles: 3238292 : 118140000 @+ b% E/ }( V! A- v
DSP> times: 7101.52 us with CPU 456.: g) Y) | }% [& U P" |& C5 ?
DSP> cycles: 157860 : 11814000
/ ?: h- P" F5 [0 _ DSP> times: 346.18 us with CPU 456.
$ y# W1 P% B% q' X+ j3 x5 j1 D8 \ DSP> cycles: 3265684 : 118140008 T- S; ?( ]2 L* Q4 Z
DSP> times: 7161.59 us with CPU 456.
3 C4 _( w5 y; U z7 I DSP> cycles: 156344 : 11814000) s; [- ^5 H5 m1 d
DSP> times: 342.86 us with CPU 456.% h8 t1 [1 p1 z) O6 {6 d- {
DSP> cycles: 3304428 : 11814000
- ^1 n6 u8 _8 c# M2 N3 B; V DSP> times: 7246.55 us with CPU 456.
* F* O; s) Q0 h( \2 _5 Z
, u- K$ \* j- E9 Z m设置:相应的表放到IRAM中了
@; i! f9 V- {) ]5 a' `SECTIONS
6 _- B/ e& h+ w9 [6 o{
8 k( l$ F0 s, O; K3 X+ W .edma_data>IRAM align = 0x805 T1 X6 t6 b0 I# V( G0 b
.audio_glb> IRAM align = 0x80
3 X8 Q% ~6 E, ]; }) G& g .f_table> IRAM, align = 0x80 & `- y5 U, E5 P/ _' f" Q
.f_text> DSP_PROG, align = 0x80
9 K6 O! F( N ]6 v7 Y .f_glb> IRAM align = 0x80
8 v( | K: W- n7 c .ref_glb > IRAM align = 0x80% ]1 W5 o, I& g% I
} Q" Z3 J8 l3 Z! I S- X
! L/ l% M0 Q1 D" u$ ^
r; L6 S) h9 q$ E5 l" C5 v- L
编译加了-O3 优化参数% B/ v$ Z1 g Y% F7 e
& _! {: m" s4 M2 T& [
& o( R: J1 C1 o a! k& B: }
; M3 P! F& B" A, A+ |- R
7 H% o$ W1 A5 ?9 K7 R9 z8 E& W2 ]! ?4 y7 g" Q! J4 K' g0 \
! |1 e) ]7 }/ c
|
|