与视频编解码算法不同,预处理和后处理算法并没有统一的标准,各个产品采用的算法是不同的。此外,原有算法会不断升级,新的算法也会不断涌现,这些都要求预/后处理算法的硬件具有更高的可编程能力,因此专门针对这些算法优化过的可配置处理器是一个不错的解决方案。
你可能并不熟悉可配置处理器的概念,但你一定对固定指令集架构处理器有所了解,自片上系统诞生之日起就在使用它们。固定指令集架构处理器延续了自1971年Intel发明业界第一颗商用单片处理器4004以来一直使用标准处理器架构的传统。SOC的出现(其实就是内置处理器的ASIC)在90年代中期改变了微处理器的传统架构。既然用户可以根据特定应用定制硅片,那么同样也可以定制片上的处理器。但是过去由于缺乏专门的处理器设计人员和开发维护软件工具链的昂贵费用,定制处理器一直未能实现。
如今,自动化工具已经可以帮助逻辑设计和软件开发人员针对特定的任务来定制处理器,而不需要专门的处理器设计者参与了。由于增加了新的指令和寄存器以及将多条指令合并成单条指令,优化后的定制处理器实现目标算法的性能比通用处理器和DSP要高得多。因此,开发一个视频专用处理器来加速各种视频预/后处理算法就顺理成章了。有很多方法来实现视频算法,这里提到的办法很简单:用C语言来描述算法,在处理器上编译运行并进行性能分析,接下来就可以看到在不同处理器架构上的性能差异了。
表1列出了采用上述方法针对5种不同的视频算法分别在RISC处理器、DSP处理器、针对算法用自动化工具定制的处理器和设计人员手工定制的处理器上运行的结果。这里的RISC处理器是一款基于Tensilica Xtensa架构的RISC核,DSP处理器同样基于Tensilica Xtensa架构,但是增加了包括4路SIMD MAC和DSP专用ALU等一系列DSP扩展指令,能够执行4路或8路SIMD向量操作,该处理器还支持超长指令字功能,每个时钟周期能够发射3条独立的指令,这套扩展指令集被称作Vectra LX指令集。
表1中所列视频处理算法包括:
* 5x5像素2D滤波器:2维滤波器可用于包括图像锐化,模糊化和增加抖动等操作中。
* 5x5像素门限滤波器:门限滤波用黑白二值来表示图像像素,从而使每个像素只占用1bit。滤波结果中不包括灰度信息,用于噪声检测等算法中
* 中值滤波:中值滤波经常用于减小椒盐噪声和高斯噪声的影响。
* 帧采样:简单的图像缩小功能
* 帧求和:该算法用于衡量视频图像不同部位的光强,在降噪、曝光补偿中都有应用,也用于辅助视频压缩。
经过了SIMD/DSP扩展的Xtensa处理器比未扩展版本快很多,大多数视频处理算法的性能都得到了巨大提升,但增加的面积相对来说很小(在TSMC 65LP制程下大约0.4mm2)。
表1中“XPRES”列所示为采用Tensilica自动化工具XPRES定制的处理器执行5种算法的性能。
XPRES对C源代码进行性能分析并自动生成针对相应代码进行优化的处理器扩展指令。自动生成的处理器比扩展了Vectra LX指令集的处理器面积稍小,但在大多数算法的性能上却可以略胜一筹。
表1最后一列所示为手工定制扩展指令和IO接口来加速特定算法的处理器性能。我们可以看到5x5 2D滤波算法的性能比未定制处理器提高了170倍;5x5门限滤波算法的性能提高了225倍;帧求和算法的性能提高了44倍。
表1:视频算法性能结果:RISC处理器、DSP处理器和Tensilica自动化工具XPRES定制的处理器之间的性能比较。