|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
/ E: }/ \8 H! m/ h `+ T1 u# o6 K7 i8 i o% R" J& R
环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)( B0 b) V5 J: P- T7 C
自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的; H+ _- b& Z! x' E
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?$ [ M3 @: c5 T* f6 y( M
4 Y2 C8 w2 T6 \* [, o( B
% L( B# N/ q% w6 _% ~
下面是统计结果
5 h O, }- g$ {" Y& ?统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间 5 E( L5 ]+ @3 X4 v' f
emucycle0_0 = EMUCNT0;
) d) E$ N. L. e1 k- `# Qemucycle1_0 = EMUCNT1;
, F8 l4 D |! n8 |& l& W) v4 Pemucycle0_1 = EMUCNT0;5 f- F( O3 _% |/ t1 v& J. v
emucycle1_1 = EMUCNT1;
# _$ ]2 k7 I( d, \; F; C; _emuoverhead = (emucycle0_1 - emucycle0_0);
2 v* ]# r0 D4 Q2 N
_ A4 y9 W9 Y8 v/ ?' `5 N算法();) L) ^0 @/ O1 m% k- ^; [
: u" k$ R% f0 N* [5 x$ e! Gemucycle0_1 = EMUCNT0;8 C x& B- S7 X1 D1 ]
emucycle1_1 = EMUCNT1;) _; N# @4 Y1 K! S
1 G7 z, o+ T* k' G w% Q, }
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
; _8 w' C( e( O/ o* F
. K, {9 C) n J# R- r
5 ^5 z( ?; A# L1 G统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
$ Y$ N8 m' o) w9 B, o DSP> cycles: 196468 : 11814000
( R/ q! G' Q" d/ ]% @; {! G DSP> times: 430.85 us with CPU 456.
8 I- J: M9 d7 I! B DSP> cycles: 3238292 : 11814000 y% W6 ~! s+ n' ?
DSP> times: 7101.52 us with CPU 456.
; t# U( Y6 ^1 W2 U* K: @3 E DSP> cycles: 157860 : 11814000
, K* U9 v! ]* a) t }: t5 Z& Y DSP> times: 346.18 us with CPU 456.3 q4 ]& g! o- A4 ] w1 A, @- U
DSP> cycles: 3265684 : 118140009 p8 {4 H$ B, u& X& \0 Y
DSP> times: 7161.59 us with CPU 456.
, g- s7 H, e& R) }9 z DSP> cycles: 156344 : 11814000
& v4 n" u! d& y2 G DSP> times: 342.86 us with CPU 456." l) T+ D' {7 D# a Y
DSP> cycles: 3304428 : 11814000
) z8 E# ^$ `+ C* X7 W% k/ U DSP> times: 7246.55 us with CPU 456.. u/ G# p& D; o5 U# M9 S8 @
4 k$ G4 I' u! n+ d0 O3 F, w, U设置:相应的表放到IRAM中了
! H) I9 M' u; ~SECTIONS% F& x- t* m" b
{1 h6 c2 C Z; @' J0 g/ G
.edma_data>IRAM align = 0x80
0 c7 s4 D% ?1 P/ s .audio_glb> IRAM align = 0x80
2 `: W6 z* G) \1 q$ o# e& ] .f_table> IRAM, align = 0x80 9 E, E+ A' t1 m- z- }
.f_text> DSP_PROG, align = 0x80 : X3 `) y g/ |
.f_glb> IRAM align = 0x80
$ l1 X+ R/ e9 l .ref_glb > IRAM align = 0x80
# M Y! L0 C5 e8 _) e}' C5 R1 W+ n& G1 E6 Q! e3 X
. L- e7 j* k8 D& W: S
- H! z5 b7 G/ u编译加了-O3 优化参数
0 e( M0 U A E8 a7 ^, C$ Q8 y% m; `/ |% c9 }2 \# Q. {
2 F1 S/ Y: D( p8 X# @ [) |' d3 `2 l, i1 s" E
" z6 r9 y# ~7 S. o
" T; L# j+ O! A' p; t5 b$ e% E3 t
% j f$ y Y" d3 l: y' { |
|