|
|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑 3 i& `- }8 L T9 V1 \
. P' n/ J# d9 _# [
环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)- W ]1 _0 S2 b7 Y7 q
自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的- \& G: C% }+ |% \
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?
* K* b% z0 o* c; r) a- C0 G
- _0 A( y& H- f/ Z
5 o" b. Z1 @, n$ [( l6 E下面是统计结果+ T; i* k+ _: L5 \# r
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间
3 ^' d- \, G6 _ W2 N' Pemucycle0_0 = EMUCNT0;
; w/ L8 {- }% M7 Xemucycle1_0 = EMUCNT1;9 e! R$ _* \- l" F7 x
emucycle0_1 = EMUCNT0;
* k9 n' O8 S( O6 k+ ~emucycle1_1 = EMUCNT1; 8 v3 y! k7 A) z+ D
emuoverhead = (emucycle0_1 - emucycle0_0);
5 d3 _$ `& g8 m, u t; H- o) |% {) l; R
算法();
% q, p! `' x9 e9 s: s- Q* y- W$ p; g- r/ A4 Q
emucycle0_1 = EMUCNT0;
0 t2 V/ P. Y# O3 xemucycle1_1 = EMUCNT1;7 x5 ~$ c" q# Z! r r% B
( y2 n5 J g' I+ S) W, I, rCycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
: ~% d: |1 _/ n5 F5 G
1 W( a! H) w" k# N* J3 r- R6 g- m
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
9 c6 N6 Z, j {- k! y DSP> cycles: 196468 : 118140000 S( Z/ C2 `- n# s9 H8 f5 L" N
DSP> times: 430.85 us with CPU 456.
* W3 R/ C' x8 N8 P; x8 d: C DSP> cycles: 3238292 : 11814000
$ O+ c$ c- F: e0 M7 U' n4 N8 a DSP> times: 7101.52 us with CPU 456.
4 \5 K# w$ I! @' g- I& k6 y, M DSP> cycles: 157860 : 11814000" b9 s3 Q& c$ h# ^3 v
DSP> times: 346.18 us with CPU 456.
! W \: m) O8 v! L7 R7 i8 j DSP> cycles: 3265684 : 11814000
) Z: c* v" S" ^; ?& ` DSP> times: 7161.59 us with CPU 456.5 Y3 J0 b$ r) k" Z6 J: q g6 X& V
DSP> cycles: 156344 : 11814000
6 [# c/ E5 |( p8 k7 N3 W2 F# h DSP> times: 342.86 us with CPU 456.# B: c4 y, v* k& B7 T
DSP> cycles: 3304428 : 11814000" F6 o, g2 N- K$ F1 B+ k4 c
DSP> times: 7246.55 us with CPU 456.
* c; t. T* P' F
G1 f' j9 a' B5 C0 L: s5 T设置:相应的表放到IRAM中了! A$ j1 r7 {0 |4 V; Y' }
SECTIONS
4 \% k" ?5 W+ y A H{. l F6 E$ {$ M4 Y
.edma_data>IRAM align = 0x80
! _% e6 `; t% X .audio_glb> IRAM align = 0x80* ]; r; H5 ~1 a
.f_table> IRAM, align = 0x80
$ P! N3 X4 w* j/ G .f_text> DSP_PROG, align = 0x80
o; j2 S& d! h C9 \7 e. }9 Q .f_glb> IRAM align = 0x809 K8 C6 E: ^+ P. p/ E
.ref_glb > IRAM align = 0x80
6 t: s) Y- b0 ]7 [( N' q}" F- W6 m: O( {2 I7 A
2 [( d, o. ^) W% C+ K. L/ C) A4 W! K; l, D
编译加了-O3 优化参数7 k8 e I) H8 U3 n; W, I1 o
& L' s. S& J3 p0 [7 r
( {/ G8 j- c1 a8 H: L6 `; J
, {. N: X9 K& j/ x3 P6 K+ U: a+ I: n7 _- g$ b) k
( F$ W1 C m7 g( j& [
, K8 l1 ?/ p; o0 ]
|
|