|
本帖最后由 bobhi009 于 2018-8-16 12:00 编辑
. `2 g: g. z! H5 P
2 |" p2 `! F' |& T* f- s1 ]; P环境: 创龙提供的mcsdk (linux3.3 + bios6 + syslink)
" ?; p9 A$ P/ C1 P% J$ [2 X自己的算法连续两次运行消耗时间差20倍, 而且跟算法本身应该没有关系, 因为算法在dsplink 的开发环境下是运行的没有问题的
# i" e: m8 A5 `; L; C: M应该是mcsdk这套开发环境的影响。 有谁知道是什么原因?
$ k# q' N6 K F2 ~2 Q
& _# E1 v7 T2 [9 h$ {+ ~
0 r( I! {4 L5 A9 R( X下面是统计结果
; P- j: y8 u& z6 D: ~0 K4 s统计方法: 通过EMUCNT0 EMUCNT1 寄存器统计算法执行周期 再除以主频得到运行时间 " u2 t9 _3 t, Q
emucycle0_0 = EMUCNT0;: I* ]: l4 W8 d* t& y6 A) ?
emucycle1_0 = EMUCNT1;
) H6 M2 T. R" c1 Cemucycle0_1 = EMUCNT0; E2 o3 {, \7 G& C! W4 q: G
emucycle1_1 = EMUCNT1;
6 w3 Y X1 V3 o. K$ w% Z, R7 l8 Temuoverhead = (emucycle0_1 - emucycle0_0);9 a) ]/ V; v- Y1 H( o
& D3 g' i* t% \ l2 W X算法();
/ L! g# Z8 c+ V# w, x
& t) v! b; Q+ Z* Gemucycle0_1 = EMUCNT0;# g. P2 ` r. b* `- |; z6 k+ w
emucycle1_1 = EMUCNT1;
8 w, j% k" p4 {( E% G7 ~
) u ?0 U) o9 a, J. \+ ^( A# }6 l0 _Cycle = ((emucycle0_1 - emucycle0_0) - emuoverhead) * 4;
# K b/ k( T; B% v( S8 |( k# d
T9 i0 D J& Q; J5 H& q7 ^( |; S: P% l; u9 k1 H& J8 C% j
统计结果: 每隔一次, 数据处理的时间会是前一次的将近20倍
0 l( F0 s" w. n8 I DSP> cycles: 196468 : 11814000
9 G! B( z2 d1 x8 [ DSP> times: 430.85 us with CPU 456.
1 Q! q! E& l0 u+ P DSP> cycles: 3238292 : 11814000
. d7 r5 _( e, C& ` DSP> times: 7101.52 us with CPU 456.; c8 r; N# M7 K+ m: {6 a
DSP> cycles: 157860 : 118140005 x% o4 i/ B* a$ A, A0 G" E! Q
DSP> times: 346.18 us with CPU 456.9 s( a C9 f7 n1 V: l1 x
DSP> cycles: 3265684 : 11814000$ t! h D& L, l" k8 X$ R8 m
DSP> times: 7161.59 us with CPU 456.
" ^' y: ~4 Y: S0 Y1 w8 S) u, A DSP> cycles: 156344 : 11814000- F0 T. _! s" w# J" b" y
DSP> times: 342.86 us with CPU 456." W: f1 }+ `8 Y
DSP> cycles: 3304428 : 11814000
1 U1 `7 D% L1 `, N( G" R, r DSP> times: 7246.55 us with CPU 456.4 M8 T. U% x# f
4 ?- ~% o% G! c i3 y1 k8 X
设置:相应的表放到IRAM中了, J1 u \ D4 I. V
SECTIONS
) E u9 [4 U$ l0 Z{
, m6 a5 R/ I9 ~ ^, m+ k6 ` .edma_data>IRAM align = 0x80' N3 W8 H8 ]5 j; X
.audio_glb> IRAM align = 0x801 n1 L/ @. D# @, k; }6 C' R
.f_table> IRAM, align = 0x80 7 N, g8 B0 \) A/ G- f' a, r k
.f_text> DSP_PROG, align = 0x80 / Y( F2 G2 m1 A
.f_glb> IRAM align = 0x80( O6 k5 \8 R4 u) Z( H
.ref_glb > IRAM align = 0x80) }# a" \9 R7 q0 `( V: [, b1 E, t
} z) y% M, t* ]: g; q! P; W' S
" V h+ @. E- o1 F- [9 F2 K/ r5 Z3 t8 s5 I
编译加了-O3 优化参数
8 R+ D X: Q) c9 w9 j5 m2 k; v: y7 H% \" E$ p, k
6 C) A$ v7 r4 I) V8 m1 ?1 V
" b( [8 i) ~/ h3 E
) k8 W2 I1 s% f; @7 k- a2 R/ S- T, f
( {9 c* z' S! @9 ^5 K |
|