|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
7 m& Z7 O9 Z# i5 s2 D
( W+ @% o7 ^; C) k9 n环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)
6 z$ |# r7 k+ T自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的( M/ f! b& V; b& A; W( L$ m: \
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?- E c; a, _+ ^0 D L
* c6 l; S0 T; x, ~
3 i8 Y5 e. s% G0 }5 \/ S下面是统计结果3 d* i/ P A/ N- x6 u9 w& y/ l
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间 8 S! W; ?% p* N3 E% r% M! n
emucycle0_0 = EMUCNT0;$ B( r* A, ^& ]- Y
emucycle1_0 = EMUCNT1;
2 Q$ L% {0 X( j0 K6 K: Y9 vemucycle0_1 = EMUCNT0;
1 E4 d4 I/ _1 l! demucycle1_1 = EMUCNT1;
2 ~5 v# H1 A( {4 N G5 G# t+ t! vemuoverhead = (emucycle0_1 - emucycle0_0);$ w v( U" [5 R
: _0 V4 n$ N/ P- s0 |; f算法();
- j* R/ O' _" c! x! W* n& E4 V0 \5 O: L; @7 \+ j t" k
emucycle0_1 = EMUCNT0;# {# M7 Y9 I/ A8 T, g) g+ D
emucycle1_1 = EMUCNT1;$ m3 U2 c8 w+ m4 A& c
. N, T! u k; O, h( @: B
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
' R4 Z+ d" w$ m A% H
, x0 O; ]" Q9 A/ s: H9 L' l2 I4 I2 P
2 C8 Y/ [, f6 L1 Q统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
5 c& d2 [; }0 v; j DSP> cycles: 196468 : 11814000" @, i( H. Y( E
DSP> times: 430.85 us with CPU 456.9 q6 d+ [1 c& |. g& r
DSP> cycles: 3238292 : 11814000
& k# V u0 W$ x. Q. F. k2 p DSP> times: 7101.52 us with CPU 456.
6 L& w. v4 D7 m& y5 e- l a DSP> cycles: 157860 : 118140006 {+ u0 S" ?, D5 C' Y% V
DSP> times: 346.18 us with CPU 456.
7 Q/ L( {( ^: M3 z3 X9 C DSP> cycles: 3265684 : 11814000
' {: g" N9 Y: w0 q G) t DSP> times: 7161.59 us with CPU 456.
. \, T- A, U7 g u; s DSP> cycles: 156344 : 11814000( X/ D/ y) ^1 Z& Z" r5 M
DSP> times: 342.86 us with CPU 456.
1 f" A8 @# N z9 v1 ]2 F DSP> cycles: 3304428 : 11814000, |* w" L+ U1 C1 b9 [
DSP> times: 7246.55 us with CPU 456.
; C. j. g0 l R3 x; j% [; ~: B$ V# g
设置:相应的表放到IRAM中了
" e# Z; b0 j& n( m, X; L# P5 ]SECTIONS6 J/ J" d1 Q% \/ S: v; h/ v
{
& d# K- ~/ N$ K; z .edma_data>IRAM align = 0x80
- {, p0 N6 G7 I .audio_glb> IRAM align = 0x80
7 j; ~1 }2 V% l. @$ G. y% [- N .f_table> IRAM, align = 0x80 ) o8 ]0 g1 q e- M3 r, L S
.f_text> DSP_PROG, align = 0x80 ) v3 `- X. y# h% q. R2 {' @
.f_glb> IRAM align = 0x80$ v- z. `6 @) s2 u$ N! i# S) @
.ref_glb > IRAM align = 0x80: {, V& p" k8 M$ [. Q2 n5 q: v
}: C3 J) F) g8 `6 S
) H& N/ l' K, j! d4 p0 X) ?( p0 ]% A; h6 _
编译加了-O3 优化参数/ v1 Y. q, [1 M" h6 i
' t* g# Q6 V# r1 M" w) A3 A6 l$ A# N
# i) U3 e: O, F9 [8 q, B6 P, J5 t5 v5 T7 [8 F
3 Z+ U7 @6 V0 h0 w0 g% l4 A9 n. b
5 z' _4 l' g" d4 X2 z5 v, q! U: Z) F8 z8 ?3 t7 R. O3 x
|
|