针对嵌入式多媒体应用选择一个处理器是一项复杂的工作,涉及到对处理器内核架构以及外设的全面分析,需要完全掌握视频、音频数据在系统中传输方式,以及正确评价在一个可接受的功耗水平下可达到什么样的处理能力。
到最近为止,解决这个问题的标准方法是将其划分成由微控制器(MCU)芯片处理的“控制域”,以及由数字信号处理器(DSP)处理的“计算域”。RISC MCU和DSP传统上适合于媒体丰富的嵌入式应用,然而,它们的用途不可互相替代,更确切地说,它们要协调一致地工作。MCU架构非常适合于高效率的异步控制流,而DSP架构的“生存之道”是同步恒定速度数据流(例如,滤波和变换操作)。
因为在当今的媒体处理应用中,两种功能集都是必需的,工程师通常使用独立的MCU和DSP芯片。这种组合为广泛的多媒体应用提供了很好的处理引擎,但是增加了多媒体处理设计、多种开发工具组以及有待学习和调试的不同种类架构的复杂性。
为减轻这些问题,芯片厂商尝试过不同的解决方案。不同的MCU厂商都集成了某些信号处理功能,例如指令集扩展以及乘法累加(MAC)单元,但是这种努力通常缺乏针对先进信号处理应用所要求的基本架构基础。类似地,DSP生产商已经包含了有限的MCU功能,但是不可避免地在系统控制方面有所妥协。
最近,出现了另外的选择——单内核以及双内核的嵌入式媒体处理器(EMP)架构,这种架构在一个统一的设计中提供了MCU和DSP功能,允许在控制和信号处理需求方面进行灵活地划分。如果应用需要的话,EMP可以作为100%的MCU(代码密度与行业标准一致)、100%的DSP(时钟速度达到DSP技术的前沿)、或两者之间的某种组合。
单内核EMP架构评估
图1显示了一个单内核EMP架构,这个架构融合了一个32位RISC指令集、双16位MAC单元和一个8位视频处理引擎。其可变长指令集扩展到DSP内部环路所使用的64位操作码,但是经过了最优化以便16位的操作码代表最常用的指令。因此,编译后的代码密度可以与行业领先的MCU竞争,而其互锁流水线和代数指令语法能促进在C/C++和汇编两种环境中的开发。
像MCU一样,EMP具有受保护和未受保护的两种操作模式,防止用户访问或影响系统的共享部分。此外,它们提供定义不同应用开发空间的存储器管理功能,同时防止截然不同的代码部分被覆盖。它们还允许异步中断以及同步异常两种功能,以及可编程的中断优先级。因此,EMP非常适合于嵌入式操作系统(此前是MCU的天下)。
在DSP方面,EMP结构使数据的流动有效率且性能非常高,所配备的外设支持高速串行和并行数据搬移。此外,EMP包含先进的电源管理功能,允许系统设计工程师、架构师以最低的动态功耗曲线精心设计。
图1:单内核嵌入式媒体处理器BF533的框图
单内核开发方法
在当今的设计范例中,MCU和DSP程序员通常被分成两个完全独立的组,两方面的交互工作只发生在他们的功能范围相交的“系统边界”层面。这具有一定意义,因为两个开发组都形成了他们自己的设计习惯。例如,信号处理开发工程师可能熟知处理器架构的细节本质,能通过一些实现技巧来提高设计性能。
另一方面,MCU程序员可能更愿意采用这样的模式:只须启动器件,它就能完成所有的工作。这就是为什么EMP支持DMA和缓存存储器控制器来在系统中搬移数据的原因。多个高速DMA通道在外设和存储器系统中往返搬移数据,允许在不耗尽宝贵的内核处理器时钟周期的条件下,对控制进行精细地调整,这正是DSP设计工程师所追求的。相反地,片上可编程指令和数据缓存允许对管理代码和数据采用一种传递方法,这种方式类似于MCU程序员的做法。通常,在系统集成层面,两种方法的组合是最理想的。
一直以来,MCU和DSP开发团队划分的另一个原因是两个处理器具有两套不同的设计规则。从技术的角度来看,负责构建系统的工程师某些时候不愿意在同一个处理器上将“控制”应用与信号处理应用混在一起。他们通常担心非实时的任务将影响到硬实时任务。例如,负责处理图形用户界面(GUI)或联网堆栈的程序员不应该担心妨碍系统的实时信号处理。当然,“实时”的定义会根据特定应用而变化。在某种嵌入式应用中,关键是在于服务一个中断需要的时间。为此,我们假定在服务程序开始时,在发生中断和系统环境被保存之间的时间帧小于十毫秒。
尽管MCU控制代码通常用C语言编写并且以为库基础,而实时DSP代码通常采用汇编语言编写,并由手动设计为给定应用提取最可能的性能。不幸的是,这种最优化也限制了应用程序的可移植性,并因此也限制了在未来项目上两个编程团队之间对不同技巧和工具集的传播。
然而,在引入EMP后,可以实现以C/C++为中心的统一代码。这允许开发者利用以前开发的现成的大量应用程序代码。因为EMP同时针对控制和信号处理操作两种功能进行了最优化,编译器可以产生同时满足“紧凑”(从代码密度来看)和高效率的代码(对于计算密集的信号处理应用)。EMP高的工作频率(超过750MHz)可以弥合编译器之间的性能差距,这个频率位于当前主流DSP的前沿。此外,针对目标应用汇编代码依然是最优化关键处理环的一个选项。
尽管转向采用EMP可以大大地降低用汇编写代码的需求,但仅仅这一点还不足以证明转换到这种统一平台就是正确的,支持操作系统(OS)也很关键。通过OS或实时内核,可以实现几层任务。为确保依然能达到目标性能,有必要采用支持多个优先级的中断控制器。环境切换必须通过基于硬件的堆栈和对帧指针的支持来实现。这就允许开发者在同一个器件中创建包含控制和实时信号处理的系统。
此外,EMP的存储器管理工具允许OS支持存储器保护。这允许一个任务通过存储器分页机制,被另外一个任务屏蔽存储器或指令访问。当对一个受保护的存储器区域被未授权访问时,将产生一个异常。
EMP能获得的高处理速度可以转换成几种实实在在的好处。首先是上市时间-如果存在大量的剩余处理能力,在降低或免除代码最优化上可以节省大量的时间。第二个关键的好处是减少软件维护,否则的话这种维护要支配产品生命周期的成本。最后一点,对于可扩展的EMP架构,可能在最具处理能力的系列器件上设计一个系统,然后针对最终应用的计算规模设定“合理大小”的处理器。
当单内核EMP不足时
随着处理需求的不断增加,出现了这样的观点:即使一个600MHz的EMP对于某些应用来说都是不够的。这就是考虑采用双内核EMP的一个原因,例如ADSP-BF561(见图2)。
图2:双内核嵌入式媒体处理器ADSP-BF561的框图