数字语音解码器的低功耗设计策略
在本设计里主要根据SoC平台的资源和指令集特点,使用软硬件协同设计方法在C代码转化为汇编代码时,通过分析标准C算法发现,大部分循环和函数的调用存在冗余,频繁的函数调用操作(压栈出栈)占用了CPU的部分处理时间。在汇编代码中可以通过循环展开以减少不必要的循环判断,其基本原则的原始代码为:普通的单循环,一个周期执行一次乘累加(MAC)指令,优化后进行了4次循环展开。在优化后的代码中,4个MAC被同时使用,并且在作乘累加时,提取下次运算的数据,消除了流水线等待,充分应用了硬件资源,提高了效率。除了循环展开,在某些情况下进行循环合并也可提高效率。主要原因是每个循环体均需要有控制指令,减少循环的个数自然会减少控制指令的条数。注意两个合并的循环必须有相同的循环数。
对于在代码里多次用到的函数,应考虑用调用指令,这样可以大大减少代码的体积;而对于只调用少次的函数,则宜嵌入主函数中,因为它不仅可以减少传参过程中的指令,而且可以减少调用函数的压栈出栈操作。当然,对于一些大而复杂的函数,虽然它只被调用1次,但由于寄存器的数目有限,如果考虑直接嵌入主函数,可能要频繁地做push和pop操作,反而得不偿失,这时就应该用调用指令。
如果有些处理比较复杂,在整个解码过程中运算量大且耗时长,有必要设计相关硬件协处理器,通过汇编指令直接操作协处理器,既可以提高效率减少运算量也有利于控制功耗,但成本会增加。这种处理方法在实时影响明显的模块尤其关键和有效。例如在MP3的解码中,通过增加矩阵乘法器以提高子带综合滤波的处理速度,取得明显效果:可减少运算时间91%。这种软硬件协同的设计手段在语音解码器中多处用到。
在算法级中还涉及其他方面的低功耗设计,如减少存储器的存取次数,缩短片选信号的宽度等方面的考虑,本设计也做了相应的处理。总的说来,算法级的优化设计在降低系统功耗方面潜力大,对降低整个语音解码器的功耗具有重要意义。
1.3 结构级低功耗设计策略
在结构级,降低功耗最重要的策略是利用并行处理或流水线技术。流水优化后,还可以减少中间数据的读取操作,且比串行处理对存储器的读取操作减少约50%,这对降低系统功耗大有裨益。
由于语音解码的模块较多,通过研究可以发现,通过简单的消除数据相关后各模块可以流水操作,减少了解码的时间,从而降低实时处理的时钟频率;在多声道语音处理中,可以使用多声道并行处理,增加处理模块以减少处理时间。在MP3解码中,立体声处理之后,左声道的后续处理(混叠重建、IMDCT和子带综合滤波等)和右声道的后续处理可以并行进行,由于IMDCT(逆改进离散余弦变换)和子带综合滤波是解码中运算量最大的部分,左右声道的并行性几乎可以把系统的处理时间减少一半。
为了提高处理速度,还可以挖掘耗时长的模块的内部并行处理潜力。例如在IMDCT处理是MP3和ACC语音处理中运算量大耗时长的模块。可以在IMDCT内部放置2个乘法器,这样可以同时运算两列数据,速度提高1倍。
显然通过增加硬件的模式提高处理速度并未减少运算量,但提高了处理速度,其代价就是增加了芯片面积,导致成本上升,处理时必须综合考虑,以达到较好的性价比。
在电路级和工艺级的低功耗设计技术主要是全定制集成电路设计技术。全定制的设计可以将硅片充分利用,布局、布线、排版组合等均需要反复斟酌调整,按最佳尺寸、最合理布局、最短连线、最便捷引脚等设计原则设计版图,与同样功能而采用自动布局布线方法实现的电路相比较,手工设计电路可以节省一半以上的芯片面积,尤其是使用基于锁存器的手工布局布线代替基于D触发器自动布局布线,降低面积
的同时系统功耗减少了约88%。
2 结论
首先分析了CMOS集成电路的功耗物理组成,得到其主要功耗。其次,SoC低功耗设计的各种级别层次采用不同的设计方法,由此重点分析了在语音解码中各层次采取各种策略以降低系统功耗,并取得了初步效果。系统级使用双向不交叠时钟技术,可以将运算主频降低50%;算法级主要使用汇编语言重写和优化原代码,将MP3解码的C代码转为汇编代码后,从原来的86 Kb降为13 Kb,AMR解码的C代码转为汇编代码后,从原来的158Kb降为25 Kb;在结构级,增加协处理器进行并行计算,在IMDCT内部放置2个乘法器,这样可以同时计算两列数据,速度提高1倍,MP3的解码中,通过增加矩阵乘法器以提高子带综合滤波的处理速度,可减少91%的运算时间。本文引用地址:https://www.eepw.com.cn/article/166578.htm
评论