|
|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
% N* f" [* Z2 A, Z4 E7 R; Z& `& _, |8 T. w l i0 x
环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)
4 m# a; {$ \' j& J& K% @自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的0 [: f" x' m- d% M4 B$ T
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?& ^/ V4 c# H z' e* |8 R
5 C- T, N1 k/ u( b7 u8 Z4 j) N
( m& } i9 v% G! F& m0 a
下面是统计结果7 g6 O3 b, L* Q3 n/ o/ I* O
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间 # i. y I6 ? l
emucycle0_0 = EMUCNT0;2 [$ k2 v5 ?* ~1 C2 G/ k1 W. n
emucycle1_0 = EMUCNT1;0 E, n- Z! W$ O( L0 `# e
emucycle0_1 = EMUCNT0;
- ?5 V/ S# l- Q! o4 Temucycle1_1 = EMUCNT1;
+ y% v1 {2 c( J# K' jemuoverhead = (emucycle0_1 - emucycle0_0);
l3 O- [+ S2 M* {* o. L8 B* e
/ o2 j6 P& m4 n1 M算法();
- c& m7 u) Q$ y; _2 J" {
! j$ \5 L5 m3 l1 B# g8 Y/ pemucycle0_1 = EMUCNT0;7 f" p, b5 [7 q) m
emucycle1_1 = EMUCNT1; O$ H) l" D, X+ ^2 ^0 ]; ^: s6 x0 u
+ \0 G; l2 g2 K0 kCycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;/ y" B/ G6 ~3 S: a3 s& g2 M7 ~
* _; { k+ V5 M' i: O6 X! E* c5 t9 r
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
3 U5 M; P% Z+ S0 Z& C w: v$ D DSP> cycles: 196468 : 11814000; o' w; \* J6 n
DSP> times: 430.85 us with CPU 456.
3 g% Y7 N4 g4 B3 W- k7 O DSP> cycles: 3238292 : 11814000
# T& V7 g9 ^: x- D$ c DSP> times: 7101.52 us with CPU 456.) ]& o6 A7 N u6 e
DSP> cycles: 157860 : 11814000# ^1 W! l3 ^# h2 q8 n
DSP> times: 346.18 us with CPU 456.
6 @8 q6 z T: p( a DSP> cycles: 3265684 : 11814000
) |+ U, ?5 h x, Y7 D6 E' d DSP> times: 7161.59 us with CPU 456.9 w) s m( h, N# n
DSP> cycles: 156344 : 11814000( E5 T5 O) C' U/ K( M
DSP> times: 342.86 us with CPU 456." C( z% z2 h5 ]! F5 y
DSP> cycles: 3304428 : 11814000
0 `5 C' w8 K( ~ DSP> times: 7246.55 us with CPU 456.
6 u* t' J7 S) g$ p! r! @. B% v; m& l/ W0 r5 `: h
设置:相应的表放到IRAM中了
/ ~+ @' e5 d& L7 F4 C, y/ D$ bSECTIONS
0 w/ ^+ }0 ~9 S; l k{- y9 }3 ^* O3 Q7 n: i
.edma_data>IRAM align = 0x80) V# _, \, Q7 }# \* s+ Q
.audio_glb> IRAM align = 0x80
; O5 b' o- z2 n) }9 G& ^ .f_table> IRAM, align = 0x80
% m9 U9 z' B# L2 K5 ~% W- p H1 N .f_text> DSP_PROG, align = 0x80
- Y; d, O7 D" ? .f_glb> IRAM align = 0x808 {2 ~% p: e) w; o: s3 s. b( _6 }, F
.ref_glb > IRAM align = 0x80
& ~% {( x# j& @( ?' |6 m) s" h}
( N# n: Q u4 E. d
- V) x M9 F* z9 R2 I9 @2 ^0 ]
3 D q2 o0 H( x编译加了-O3 优化参数
* d* e' @5 o6 _% d: C$ t8 ~$ M6 B0 r1 B
, | U! X/ R% Z* }, T
3 {! R3 }: |% v& X4 u5 r- O9 m
) g# Z9 ~ E( N8 `0 M" [
. Q; b5 D: ?* u: o+ r3 p$ v
* ]0 h$ N* a7 C% h( t+ Z1 i" H
|
|