|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
& c2 `+ S. x0 `( f# X) v8 \& q4 q- E( W$ w+ }+ C9 T
环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)3 p& O! M+ i+ [" l
自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的2 o* d9 m7 p% ]# y$ F: k- _
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?* i2 C- U3 f7 T
3 @, [! m) L+ [: k4 s' U& P5 Q
# `. R" _# M) P8 K
下面是统计结果& Q5 L6 N3 {! |* T9 B: x I) o
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间
5 B+ S( A, n6 O% bemucycle0_0 = EMUCNT0;
2 `* G; e8 ~- M8 M$ N$ O& Femucycle1_0 = EMUCNT1;
; R6 |+ f L! Femucycle0_1 = EMUCNT0;! y# w. A7 @" C6 Z
emucycle1_1 = EMUCNT1; 2 e# e+ ~) E$ {
emuoverhead = (emucycle0_1 - emucycle0_0);
8 V W+ \& T, W P$ P
+ k6 z5 M, l. X5 w1 S算法();
; W) h5 Y6 M& H+ r! ~3 ~ k6 ]+ x! q) T
emucycle0_1 = EMUCNT0;/ Y& ]: O! z( m' F: j8 w+ t( n8 W
emucycle1_1 = EMUCNT1;: _" }) x0 s) v# o" P
) U( f+ P% H; p0 yCycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
0 b, @0 Z: g9 p& H
2 f2 t% `+ b3 u# b# W# f2 Y
% p: G& v9 W8 i% F. C统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
1 n" E8 c. R; T" z* y R DSP> cycles: 196468 : 11814000
3 z- |5 R- K- Z v DSP> times: 430.85 us with CPU 456.; l/ y* d4 s8 l8 f
DSP> cycles: 3238292 : 11814000
8 h6 F8 f2 T: F( w1 w/ s DSP> times: 7101.52 us with CPU 456.
4 T! w) f, x6 T. _: T DSP> cycles: 157860 : 11814000
! c- n' S3 u: [9 B DSP> times: 346.18 us with CPU 456.
' i1 k+ w2 K7 Y* T& X& Y DSP> cycles: 3265684 : 11814000
9 G- K. ]1 U0 V K, C3 s2 J DSP> times: 7161.59 us with CPU 456.4 H' q5 a6 ^$ o( |- Q/ ]
DSP> cycles: 156344 : 11814000
6 n5 U8 ~# H' k DSP> times: 342.86 us with CPU 456.$ O _4 _: E4 s- V) _6 U3 W) [+ |
DSP> cycles: 3304428 : 11814000. p7 k! W, m" D4 V% V: b
DSP> times: 7246.55 us with CPU 456.6 {) u9 o9 \5 G- ^
: U; @% W% V+ L5 T9 o
设置:相应的表放到IRAM中了: }* E- |, d6 j3 @7 ~
SECTIONS; q+ B0 j0 F2 y
{. ?6 i3 F% ^( r W, q/ x+ @! G
.edma_data>IRAM align = 0x80% r/ ?7 g- f% l5 y) @
.audio_glb> IRAM align = 0x808 v- y& {" W+ a) y- ^6 P1 n
.f_table> IRAM, align = 0x80 , b3 _8 \ |9 m8 `
.f_text> DSP_PROG, align = 0x80 ) {: H) S0 N/ v
.f_glb> IRAM align = 0x80 k2 v( q0 Z9 o7 K8 M' W% ]$ V5 i! `
.ref_glb > IRAM align = 0x80) |. a4 C2 n* l y% J& e
}5 i; [6 h g8 Q- ^9 e0 F! H6 Q: A
; g @! Q t* w( W2 N0 _# Y
: `( s, m% u% T, j' w5 p+ H5 D
编译加了-O3 优化参数
' q7 a* l2 H T4 d% c0 W( ?3 z* n* U7 a5 o5 R; r" U" L) r
- f2 P- {; X" c" ?- |2 D6 H/ ]* c! Q- v7 T
4 d" b" @! m# f* ]5 ~8 b
0 Q# w4 L9 f) ^7 y. d$ @7 t$ q9 l8 {/ B, b% }2 k( M/ \, @; p
|
|