|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
! {) k% a y7 ?* V* J
4 T }3 w) H7 U3 T5 Z( Z6 o$ E环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)+ m9 {$ a# n0 ]
自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的: P3 d0 [4 a0 Z- y9 u3 Z
应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?; u# K" w+ b3 k; F6 h
0 Q4 q8 R v* ]6 y
9 w1 U- |- @7 j1 J* a4 d下面是统计结果6 s* | [2 q& Z* o2 U& b9 D: W3 ]% f
统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间 * x9 q" \2 o4 i v& a+ @
emucycle0_0 = EMUCNT0;4 B5 _' m5 |$ \* U. ~
emucycle1_0 = EMUCNT1;
* F- e4 T# u4 i- F* q" C" ]emucycle0_1 = EMUCNT0;
" I4 j3 u. ]4 G l& S8 t. I |/ G( Zemucycle1_1 = EMUCNT1;
3 t: |: {1 N" T1 m. A/ R/ Zemuoverhead = (emucycle0_1 - emucycle0_0);) M5 i X9 O+ W1 a
( w U( @# c! Q5 G) H0 M- k算法();
; Y2 ?# q. j$ w4 {% P" J- g c s+ M0 p5 N& {0 v! w) d9 W. U) [
emucycle0_1 = EMUCNT0;4 N$ c8 v, H0 e) y( I
emucycle1_1 = EMUCNT1;
" S, N3 z+ l8 F9 j, A& g: g0 \8 h; f% G0 U" F+ ]# f- X
Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;3 n/ }5 _: E) d% O
% o* F1 w0 W) z# b3 } V4 ^6 }1 E7 j O
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
c. \+ I' x0 ~+ u/ d: x& M, I DSP> cycles: 196468 : 11814000
0 w0 O/ Z* [0 m* W% F4 O+ l6 S' U DSP> times: 430.85 us with CPU 456.
& e, P: J% O; M) h$ k DSP> cycles: 3238292 : 11814000
6 R2 r, y; u9 q5 i DSP> times: 7101.52 us with CPU 456.. \+ N1 l! C# x' ]1 F
DSP> cycles: 157860 : 11814000* u4 E3 K5 R$ `9 J# }
DSP> times: 346.18 us with CPU 456. q3 F" Z+ J: t& h0 {
DSP> cycles: 3265684 : 11814000
* i* Y& k0 p2 D DSP> times: 7161.59 us with CPU 456.1 p7 g$ l3 W" d" }1 ]
DSP> cycles: 156344 : 11814000
]: l. p" C& z% c6 x DSP> times: 342.86 us with CPU 456.: E& ?8 {9 l8 ? V( \- K; c" \
DSP> cycles: 3304428 : 11814000
; y" M( q- p9 q5 H DSP> times: 7246.55 us with CPU 456.
7 J) h9 K3 @) g
; i7 s+ }0 @) e. ~设置:相应的表放到IRAM中了
6 X: m. Z" z% }) I/ lSECTIONS9 M/ W" ~+ {# J
{
. R5 _# @" Y$ Z6 W! e- k+ P0 D# _ .edma_data>IRAM align = 0x80$ s2 [6 E5 @5 n
.audio_glb> IRAM align = 0x80& o7 q0 ]6 Q& v7 t2 c
.f_table> IRAM, align = 0x80 4 N" O7 q* {9 n+ `5 |0 r5 A
.f_text> DSP_PROG, align = 0x80 9 _$ w: A2 e; n& k* z$ z
.f_glb> IRAM align = 0x80
8 Y3 U4 G( f; Y# N) A- p .ref_glb > IRAM align = 0x80# Z# {0 d3 n' K4 W
}
# b6 k0 H) `/ A; T% b; e0 b3 b2 X
w; x0 [# B3 I
) D! _ D* J% F( V" w6 S编译加了-O3 优化参数
0 {: w9 [5 H6 D( ^5 b* s/ V; |+ u5 E4 ~) @3 b+ o2 [6 ]$ M
Q/ E1 L9 w3 N5 U- N$ Q; F! B
0 {- \7 j7 D' x% W; o" ^4 R x) N* B5 ~9 S
2 d* A$ f' i% N; n
" I" ~8 M+ ^0 n( o$ w% A |
|