AN2094 Freescale Semiconductor / Motorola, AN2094 Datasheet - Page 14

no-image

AN2094

Manufacturer Part Number
AN2094
Description
ITU-T G.729 Implementation on StarCore SC140
Manufacturer
Freescale Semiconductor / Motorola
Datasheet
Optimization Process
2.4.5 Procedural Notes
Because of the lack of experience in optimizing large functions, the development team first focused on optimizing
some of the smaller functions typically found in digital signal processing, such as Syn_filt(), Convolve(),
Residu(), Cor_h_X(), Autocorr(), and Norm_Corr().
The experience gained by optimizing the simple functions enabled the team to take on more difficult constructs,
including Cor_h(), Lsp_pre_select(), Levinson(), D4i40_17(), Pre_Process(),
Post_Process(), Inv_sqrt(), Az_lsp(), Chebps_11(), Chebps_10(), Lag_max(),
Pred_lt_3(), Get_lsp_pol(), Qua_gain(), scale_st(), filt_mu(), and search_del(). To
improve analysis, the function-level C optimization phase was extended to functions taking up to 95% of the
encoder cycle count and up to 88% of the decoder cycle count.
2.4.6 Results
The vocoder performance characteristics after the function-level C optimization is shown in Table 6.
These results are expected to improve with compiler evolution and should not be regarded as maximum
optimization values.
2.5 Algorithm Changes
If the function-level C optimization phase does not provide adequate speed improvement, the programmer can
change certain algorithms or implement the existing parallelism in different ways. Algorithmic changes are
classified in two major categories: platform-independent changes and platform-specific changes. In many cases
algorithmic changes are performed only locally, within a particular function. But there are also cases in which data
input from another function or output to another function are processed faster in another format, and the time
saving is greater than the time required to convert the data. Thus, it is worthwhile to determine if frequently-
accessed data structures can be changed so that:
14
16.6 MCPS
RWH
Speed
Manually inline small functions, such as L_Extract(), that involve multisample operations.
Do not apply the C operators (*, +) to operations on fractional values that only employ intrinsic
functions (L_mult(), L_add()). Also, do not use intrinsic functions for integer values (for
example, use only +, -, and * on indices).
Functions access data sequentially
Lengths of data arrays are multiples of four.
T‚€rÂsÇur†rÃ…‚t…h€€vtÇvƒ†Ã€h’Á‚‡Ãhƒƒy’Ç‚Ãsˆ‡ˆ…rÉr…†v‚†Ã‚sÇurÃT‡h…8‚…rÃT8 #Ã
qr‰ry‚ƒ€r‡Ã‡‚‚y†
Table 6. Performance Characteristics After Function-Level C Optimizations
ITU-T G.729 Implementation on the StarCore™ SC140/SC1400 Cores, Rev. 1
Program Size
42.2 KB
6.75 KB
Tables
Channel Data
3.19 KB
Freescale Semiconductor
Stack Size
2.84 KB

Related parts for AN2094