Audio processing algorithms are increasingly used in cell phones and today’s
customers are placing more demands on cell phones. Feature phones, once the
advent of mobile phone technology, nowadays do more than just providing the
user with MP3 play back or advanced audio effects. These features have become
an integral part of medium as well as low-end phones. On the other hand, there
is also an endeavor to include as improved quality as possible into products to
compete in market and satisfy users’ needs.
Tackling the above requirements has been partly satisfied by the advance in
hardware design and manufacturing technology. However, as new hardware emerges
into market the need for competence to write efficient software and exploit the
new features thoroughly and effectively arises. Even though compilers are also
keeping up with the new tide space for hand optimized code still exist.
Wrapped in the above goal, an effort was made in this thesis to partly cover
the competence requirement at Multimedia Section (part of Ericsson Mobile
Platforms) to develope optimized code for new processors. Forging persistently
ahead with new products, EMP has always incorporated the latest technology into
its products among which ARMv6 family of processors has the main central
processing role in a number of upcoming products.
To fully exploit latest features provided by ARMv6, it was required to probe
its new instruction set among which new media processing instructions are of
outmost importance. In order to execute DSP-intensive algorithms (e.g. Audio
Processing algorithms) efficiently, the implementation should be done in
low-level code applying available instruction set. Meanwhile, ARMv6 comes with
a number of new features in comparison with its predecessors. SIMD (Single
Instruction Multiple Data) and VFP (Vector Floating Point) are the most
prominent media processing improvements in ARMv6.
Aligned with thesis goals and guidelines, Reverb algorithm which is among one
of the most complicated audio features on a hand-held devices was probed.
Consequently, its kernel parts were identified and implementation was done both
in fixed-point and floating-point using the available resources on hardware.
Besides execution time and amount of code memory for each part were measured
and provided in tables and charts for comparison purposes. Conclusions were
finally drawn based on developed code’s efficiency over ARM compiler’s as well
as existing code already developed and tailored to ARMv5 processors. The main
criteria for optimization was the execution time. Moreover, quantization effect
due to limited precision fixed-point arithmetic was formulated and its effect
on quality was elaborated.
The outcomes, clearly indicate that hand optimization of kernel parts are
superior to Compiler optimized alternative both from the point of code memory
as well as execution time. The results also confirmed the presumption that hand
opti...