基于ARM946E处理器的MP3解码优化设计
2020-06-15 07:28:14 点击:
上一篇:TMS320VC54x处理器McBSP接口的设计和实现
计算量可降低一半。
子带合成滤波在解码过程中包括了32点到64点的IMDCT处理,如式(3)所示:
由于N(i)(k)具有对称特性,可以得出:
只要计算0≤i
4 代码优化
根据ARM946E处理器硬件特点,对实时性要求较高的关键程序进行C语言和ARM汇编级代码优化。
4.1 减计数循环体
IMDCT和子带合成滤波器组2个运算量最大部分中有多个循环体运算,为了提高执行效率,推荐使用减计数循环体。
如表3所示,对于固定次数的循环,减计数循环比增计数循环速度快。这是因为每次增计数循环体外加3条指令,而减计数循环体外只有2条指令,减循环终止条件为减计数到零,而不是计数增加到某个特定的限制值。由于减计数结果已存储在指令条件标志里,省去与零比较指令。
4.2 内联函数和内嵌汇编
MP3解码算法中定点化乘法都是通过函数调用来实现,每次调用需要开销23~28个时钟周期,其中超过15个周期用于函数调用时PC指针以及寄存器压栈保护上。采用内联函数方式(使用关键字_inline声明)或宏指令,在编译阶段代码段将被直接展开。另外armcc编译器允许在C源程序中使用内嵌汇编 (但代码可移植性差),使用包括汇编的内嵌函数,可以使编译器支持通常不能有效使用的ARM指令和优化方法,例如C编译器不支持的ARM v5E扩展指令。使用内联函数结合内嵌汇编实现移位乘法,可使平均时钟周期缩短为6~8个。