|
|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑 * `1 {+ E0 w J
Q" q" @( C0 ]% ~( V环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)% p$ O; R: f4 N( [. w
自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的
( J h, v' z8 h) A应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?/ T) D- @7 x# {3 \
* \6 S, C, C' T7 O u
% |0 M. C- g0 w# n9 \) B
下面是统计结果* Y; ]/ I. A0 E& V, b: p+ Q
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间 , ?/ K3 z& {* a( Q6 D% r# M
emucycle0_0 = EMUCNT0;% P9 u$ b* I7 t! ~. C9 N% C% C* T& E7 y
emucycle1_0 = EMUCNT1;7 W, n( N: V! Q# }' Y0 e S
emucycle0_1 = EMUCNT0;# r! `& s2 L. I9 f5 B& f7 x/ l
emucycle1_1 = EMUCNT1;
# q: t+ t" X. C# l4 w9 b+ ] zemuoverhead = (emucycle0_1 - emucycle0_0);
( Z# u9 C! r+ |5 O7 O4 V, G
- ~4 I7 `6 l) |& Y _& L8 p, q算法();
4 F* E, ^. `3 L+ W, X: u# T+ L
2 z; W: w' q5 R U# r. Q5 Eemucycle0_1 = EMUCNT0;
, W, K8 D; T+ c, }emucycle1_1 = EMUCNT1;
3 R- u g. ]$ r5 |( O5 ~6 Q& W/ ?2 Z( `; T1 r, d. m
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;* Y( h) B2 g. A+ k
4 R3 J: j% w% e$ p! s6 p
+ C. t6 c2 c" f ^5 [, ~ z统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍: P( c9 e6 q, ]9 {
DSP> cycles: 196468 : 118140003 O! c" y c! a; w$ d% U7 O
DSP> times: 430.85 us with CPU 456.' k$ G. U& Q* v9 r E
DSP> cycles: 3238292 : 11814000
' m% f; l [( X" b! [* H: ], @, R0 z: L DSP> times: 7101.52 us with CPU 456.& V" \1 Y" q+ W# l7 _$ f( R
DSP> cycles: 157860 : 11814000
: w5 @4 G( Y7 ]; _$ z0 c5 x DSP> times: 346.18 us with CPU 456.' o8 Z. z2 A7 {3 w, h+ ~
DSP> cycles: 3265684 : 11814000
7 ?) }" I+ R! U! a6 b DSP> times: 7161.59 us with CPU 456.
3 M: [ g7 L. B( g; T) v DSP> cycles: 156344 : 11814000
+ q2 c! M" M( k! t! W' `9 M( o DSP> times: 342.86 us with CPU 456.# _- u0 J" s8 N+ `4 ^: j5 g; z3 Q) \6 s
DSP> cycles: 3304428 : 11814000! I! B" Q/ a ~: i! _1 z! `
DSP> times: 7246.55 us with CPU 456.
) N/ I- ~+ N: H: o
- J! g8 s5 x h& M, e设置:相应的表放到IRAM中了
7 M8 ~: P( M8 _7 s* {! GSECTIONS" F y1 ^/ k* @/ l. Y: ?: }2 S; y/ P4 f- j
{; V6 I# v. [6 F* p
.edma_data>IRAM align = 0x80% o8 ?2 ~% w7 j
.audio_glb> IRAM align = 0x805 u2 H$ ]; G" |' L, U( u
.f_table> IRAM, align = 0x80 7 y& e, \0 B2 O! B7 N+ e& }$ v9 C
.f_text> DSP_PROG, align = 0x80 + O; j% M6 O6 `. N; r( ^
.f_glb> IRAM align = 0x80
, a/ R5 Z( i& ?* w6 G3 B, p6 C .ref_glb > IRAM align = 0x80$ ^; X* }" G" X" r1 ~
}9 t, K" J. V: @! T" Q# q" b: Q9 `
7 A) ^) d6 W x7 h4 N, |7 t
) v3 p/ ~2 y0 W& @+ D( X
编译加了-O3 优化参数
# R5 G( V/ A: y, k' N
" h2 l% I0 S% L* @) N- f% N
# I, |# W* J: ]' ?. R6 a! M# g6 L
% q7 ~: R- T1 P$ g& S J5 Y* E$ u, K$ r& @4 v$ } o7 y: s
, j, K" `* Y- M) U+ n. a6 a; x) R8 h) o% C i, ?# o1 F
|
|