从根本上来说,具体选择何种数字信号处理器来处理DSP密集型任务取决于MIPS,以及DSP支持的片内和片外存储器容量。MIPS越多,可以处理计算要求更多的应用,同时执行代码所需的时间也越长。显然,存储器容量越大,就能容纳更多代码,并根据应用需要提供更多中间数据存储。
本文主要介绍片内滤波器/FFT引擎如何帮助显著减轻DSP内核工作负荷,从而节省MIPS,让更多MIPS可以用于进一步后处理任务或执行其他任务。
图1 未采用该引擎的现有框架
MIPS计算
这点完全取决于应用,每种应用均有各自的MIPS要求。假定在音频解码器应用中,经过解码的PCM立体声位流必须以48kHz的速率驱动输出至编解码器,则两个立体声采样/字之间的时间为1/48kHz = 20.8μs。这意味着后续立体声采样应在此时间内准备就绪。一般数据处理以帧形式进行,因此我们应该考虑一个缓冲,而不是一个立体声采样。
假定输出缓冲大小为1024立体声字,那么应用有1,024 * 20.8μs的时间准备相同大小的下一缓冲。通常,输出缓冲采用乒乓式工作模式,当数据从一个缓冲输出到编解码器时,内核上运行的应用会填充另一缓冲。此时应执行DSP内核上运行的解码器代码,以便在此指定帧速率内使另一缓冲获得新解码的采样。如果执行代码和在缓冲中将数据准备就绪所需的时间等于输出帧速率,则意味着应用占用了所有可用的内核MIPS。一般而言,我们会优化应用代码或选择更快的处理器,以确保实时完成数据处理,并避免丢失有意义的音频或视频数据。
图2 图示为同一应用完全在内核上运行时与未改变应用框架但在内核和减负引擎之间分割运行时的差异
减负引擎
音频应用分为两大部分:主处理部分,如解码器;和后处理部分(PP),如多频段均衡器。PP算法主要由滤波操作构成。例如,多频段均衡器将内置数个IIR滤波器组。支持FIR、IIR和FFT的片内减负引擎可以帮助显著减轻DSP内核的后处理任务负荷,从而最终节省内核MIPS。换言之,DSP现在可以轻松地容纳之前因MIPS不足而无法容纳的算法。
采用片内减负引擎,可以在DSP上封装更多MIPS,因此非常有利。不过,为了适应此类先进的DSP架构,需要修改应用的软件框架。
图1显示在DSP上实现的大多数现有应用框架,这些框架都不支持片内减负引擎。这种情况下,整个信号链中的代码执行和数据处理流程完全连续进行。DSP内核首先执行主要应用算法,然后执行PP,最后再将数据发送到编解码器。经过速度优化的应用和能够以较高内核时钟频率工作的DSP可以获得额外的MIPS。这些额外MIPS更像是支持任何未来功能增强或软件升级的储备空间。
图3 DSP内核与滤波器引擎同时工作
|