|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
7 t! } s8 O" E
% @) f! |* g- I1 i1 E! i7 p, O环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)
" y R( Y4 s8 A6 [/ C! Q3 b7 X自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的- ~; _! c& Q8 t* O
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?. J1 s* ~4 y* d% S: P- b+ {: n
3 R1 C; b* {6 M- z# I" p6 \! Z. v/ J
A& z; m. D7 H B- s下面是统计结果% g [! ~2 w' j" B) ~
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间 0 K6 C: Z$ `6 a' S2 A
emucycle0_0 = EMUCNT0;$ x$ {1 J P; r0 T
emucycle1_0 = EMUCNT1;
9 p( M4 }. J& P, {8 o$ e) O+ H. L$ F+ |emucycle0_1 = EMUCNT0;
2 ]" L5 I0 G4 P8 x ]6 yemucycle1_1 = EMUCNT1; , N- O4 x8 Y5 [
emuoverhead = (emucycle0_1 - emucycle0_0);
7 w D/ n5 M9 Y" m8 P# A
7 m' y1 G% Y# A算法();
" O( @$ J) i+ @* ?, @, |
) s: Y! y; `& wemucycle0_1 = EMUCNT0;
4 j2 ]; s' {5 M- o- o& E7 j3 Hemucycle1_1 = EMUCNT1;4 S# o+ D/ u) d8 K; |" _4 _& R
: C/ Q. C) H) a
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
; s- u/ K' O6 ~/ L4 [* [# `; n. Z! H O7 C& D
1 [" e. o& N, r1 ~
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
* @3 \6 o! ^+ n/ `9 q ] DSP> cycles: 196468 : 11814000
2 N9 t( [ s! @6 k: C- `. U DSP> times: 430.85 us with CPU 456.. Y9 P3 b( w4 Z {) A+ U6 O8 f
DSP> cycles: 3238292 : 11814000* h; ~2 v+ p0 a( X' g
DSP> times: 7101.52 us with CPU 456.
+ V6 r" E. H3 | DSP> cycles: 157860 : 11814000
. L+ V5 A( ^9 M. B. |$ T1 w DSP> times: 346.18 us with CPU 456.
. f" [: b# R% Z DSP> cycles: 3265684 : 11814000
9 Y3 M/ H7 J; ?- a5 M DSP> times: 7161.59 us with CPU 456.( i& n- ~2 e& L# i0 p/ z' A
DSP> cycles: 156344 : 11814000
/ d; h2 o; Q' r DSP> times: 342.86 us with CPU 456.
5 j) G+ [: C# |; j DSP> cycles: 3304428 : 118140001 L0 e& w3 z# J. p$ ]" Y4 {
DSP> times: 7246.55 us with CPU 456.: {9 d v/ I+ y
" r; q2 H. S! F$ W0 h设置:相应的表放到IRAM中了% o6 [ m% N7 K4 U( A
SECTIONS
+ d. A& i! h5 ^; u: D{
2 A' j J! b! |- {* X; d# ?- g( S8 c .edma_data>IRAM align = 0x80
' m) ?0 R) K B% e .audio_glb> IRAM align = 0x80) S0 j% a% N# R/ Q- r# D( D0 {
.f_table> IRAM, align = 0x80 : K- p/ n& m4 t5 P: k, f6 D' a4 Z7 T: W
.f_text> DSP_PROG, align = 0x80 & G# e) q' @+ q8 R; a
.f_glb> IRAM align = 0x80
& K) H N" v5 l5 m( W F .ref_glb > IRAM align = 0x80, a, K1 t/ N) t; g$ s+ t" T
}) F1 a% l/ o% \1 i2 x; \
% M, u: v6 D( m: ~2 N' q
7 g' ^9 e& ?7 K- W
编译加了-O3 优化参数4 s) |% F# c; @+ g! I k0 v7 T# K2 g
" X, j. C. t& L" L9 f
2 |% I W9 x6 _7 V# H& b8 `( v5 ?8 q# k. ^6 A$ _
9 p j/ J" f! i6 \ d, F8 i! W }0 |5 Z
: z* t3 k* |& I3 j& ~; Q8 \; h9 S |
|