|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
) g( L+ Z! ^1 {( |
# ~( @6 z: y& m8 N9 y3 R4 N环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)
5 q! O. q) V) y/ J* S/ {自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的
5 y6 G# t" @; s- B应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?; i# O' p% a/ n: U
3 t; X) b) ^( ^# f/ g- I, Q/ \. M
: r, y# `6 z0 ~下面是统计结果
9 Y$ X8 Z2 m9 I$ ~& |, I. u7 C统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间
8 L5 A0 s1 Q5 ~1 J' {# d& [emucycle0_0 = EMUCNT0;
. Z. f7 {$ j, nemucycle1_0 = EMUCNT1;
! v C5 j, j: Q& Vemucycle0_1 = EMUCNT0;' U4 a8 L6 R8 t! u8 N2 @
emucycle1_1 = EMUCNT1; 6 I6 a8 _2 ]+ k! d
emuoverhead = (emucycle0_1 - emucycle0_0);
/ ^4 Y: E( t4 Z& O1 a/ y
" Y z: B/ f! p算法();
! Z9 |" y3 X. V( [2 \; Y
! {2 x4 `4 H+ K8 ^ lemucycle0_1 = EMUCNT0;
$ @# a5 P1 R/ }* j3 H/ aemucycle1_1 = EMUCNT1;
) @* X1 f' G: |) ?* I1 Z; S* d6 J* o J+ C8 D
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
S8 P. H5 j/ ?+ {% T5 x7 A0 e: }# ]4 \$ n& _
/ Q+ N8 `0 C( V, A' \5 C1 ]& R
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
& z* J- i" H; s5 b$ C( `# R& M DSP> cycles: 196468 : 11814000
8 M- t3 o' f$ |0 S( a DSP> times: 430.85 us with CPU 456.
, _4 ^) F( ]+ g" J6 U5 q* m DSP> cycles: 3238292 : 11814000
- @4 L, Q1 H* D: u4 O* b: t DSP> times: 7101.52 us with CPU 456./ v8 j- \' j' n+ m' I. [- q2 t
DSP> cycles: 157860 : 11814000
A9 H: C# p: s5 B/ c: Z! ]$ ~ DSP> times: 346.18 us with CPU 456.
! g7 F7 T) @* W1 g( U DSP> cycles: 3265684 : 11814000) p9 ]" j* S, s9 F; t
DSP> times: 7161.59 us with CPU 456.3 R N& T+ a6 S
DSP> cycles: 156344 : 11814000
: I. |# f& M) f- X" o4 F% E4 J* X DSP> times: 342.86 us with CPU 456.
. y4 }5 e; E, t5 q4 ` DSP> cycles: 3304428 : 11814000% [1 T6 T. v4 L" T# P" L
DSP> times: 7246.55 us with CPU 456.0 L" E i ~% D' G: j
* O9 g6 Q; Y( K( \) z/ I7 d: l: j设置:相应的表放到IRAM中了1 S; l/ G5 e+ |) p( a7 Y
SECTIONS$ J: O# Q/ ]$ o5 _' `* e
{/ A7 s0 @+ [8 j" e' I
.edma_data>IRAM align = 0x80
~9 O/ q S7 r9 _ .audio_glb> IRAM align = 0x80
6 ?: B; R' R6 w$ X* m .f_table> IRAM, align = 0x80
7 W* f/ h8 r1 P+ C .f_text> DSP_PROG, align = 0x80
3 K1 O$ X. S0 K8 c .f_glb> IRAM align = 0x80
9 I% n2 o% C0 h1 j+ p4 M .ref_glb > IRAM align = 0x80
8 S0 A3 u* v9 X- l9 e# R}
; l2 E# F, Q" V& q
" J% s- P w3 M% z7 B( i. I
% o. i, n) B! K9 ]) F编译加了-O3 优化参数
! `. |6 F5 P& E G& K1 _% d& Q" M) g/ K$ n2 Y. ~
" L1 X% o8 g0 N; @6 g1 g" g1 k
( u! j8 O7 F' s% T9 a* c* a2 j, |. g; L, g+ t: `
7 s `; A% g4 d
f7 `( p' k. t8 V. e. |' ?" W! p
|
|