针对嵌入式多媒体应用选择一个处理器是一项复杂的工作,涉及到对处理器内核架构以及外设的全面分析,需要完全掌握视频、音频数据在系统中传输方式,以及正确评价在一个可接受的功耗水平下可达到什么样的处理能力。
到最近为止,解决这个问题的标准方法是将其划分成由微控制器(MCU)芯片处理的"控制域",控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。以及由数字信号处理器(DSP)处理的"计算域".RISC MCU和DSP传统上适合于媒体丰富的嵌入式应用,数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。然而,它们的用途不可互相替代,更确切地说,它们要协调一致地工作。MCU架构非常适合于高效率的异步控制流,而DSP架构的"生存之道"是同步恒定速度数据流,
因为在当今的媒体处理应用中,两种功能集都是必需的,工程师通常使用独立的MCU和DSP芯片。这种组合为广泛的多媒体应用提供了很好的处理引擎,但是增加了多媒体处理设计、多种开发工具组以及有待学习和调试的不同种类架构的复杂性。
为减轻这些问题,芯片厂商尝试过不同的解决方案。不同的MCU厂商都集成了某些信号处理功能,例如指令集扩展以及乘法累加(MAC)单元,但是这种努力通常缺乏针对先进信号处理应用所要求的基本架构基础。类似地,DSP生产商已经包含了有限的MCU功能,但是不可避免地在系统控制方面有所妥协。
最近,出现了另外的选择--单内核以及双内核的嵌入式媒体处理器(EMP)架构,这种架构在一个统一的设计中提供了MCU和DSP功能,MCU(Micro Control Unit)中文名称为微控制单元,又称单片微型计算机(Single Chip Microcomputer)或者单片机,是指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制 常见存储器件。MCU按其存储器类型可分为无片内ROM型和带片内ROM型两种。对于无片内ROM型的芯片,必须外接EPROM才能应用(典型芯片为8031)。带片内ROM型的芯片又分为片内EPROM型(典型芯片为87C51)、MASK片内掩模ROM型(典型芯片为8051)、片内FLASH型(典型芯片为89C51)等类型允许在控制和信号处理需求方面进行灵活地划分。
单内核EMP架构评估
图1显示了一个单内核EMP架构,这个架构融合了一个32位RISC指令集、双16位MAC单元和一个8位视频处理引擎。其可变长指令集扩展到DSP内部环路所使用的64位操作码,但是经过了最优化以便16位的操作码代表最常用的指令。RISC(reduced instruction set computer,精简指令集计算机)是一种执行较少类型计算机指令的微处理器,起源于80 年代的MIPS主机(即RISC 机),RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。
像MCU一样,EMP具有受保护和未受保护的两种操作模式,防止用户访问或影响系统的共享部分。此外,它们提供定义不同应用开发空间的存储器管理功能,同时防止截然不同的代码部分被覆盖。它们还允许异步中断以及同步异常两种功能,以及可编程的中断优先级。为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。多级中断的处理原则:当多级中断同时发生时,CPU按照由高到低的顺序响应。高级中断可以打断低级中断处理程序的运行,转而执行高级中断处理程序。当同级中断同时到时,则按位响应。因此,EMP非常适合于嵌入式操作系统。
在DSP方面,EMP结构使数据的流动有效率且性能非常高,所配备的外设支持高速串行和并行数据搬移。
图1:单内核嵌入式媒体处理器BF533的框图
单内核开发方法
在当今的设计范例中,MCU和DSP程序员通常被分成两个完全独立的组,两方面的交互工作只发生在他们的功能范围相交的"系统边界"层面。这具有一定意义,因为两个开发组都形成了他们自己的设计习惯。例如,信号处理开发工程师可能熟知处理器架构的细节本质,能通过一些实现技巧来提高设计性能。
另一方面,MCU程序员可能更愿意采用这样的模式:只须启动器件,它就能完成所有的工作。这就是为什么EMP支持DMA和缓存存储器控制器来在系统中搬移数据的原因。多个高速DMA通道在外设和存储器系统中往返搬移数据,允许在不耗尽宝贵的内核处理器时钟周期的条件下,对控制进行精细地调整,这正是DSP设计工程师所追求的。通常,在系统集成层面,两种方法的组合是最理想的。
一直以来,MCU和DSP开发团队划分的另一个原因是两个处理器具有两套不同的设计规则。从技术的角度来看,负责构建系统的工程师某些时候不愿意在同一个处理器上将"控制"应用与信号处理应用混在一起。他们通常担心非实时的任务将影响到硬实时任务。例如,负责处理图形用户界面(GUI)或联网堆栈的程序员不应该担心妨碍系统的实时信号处理。为此,我们假定在服务程序开始时,在发生中断和系统环境被保存之间的时间帧小于十毫秒。
尽管MCU控制代码通常用C语言编写并且以为库基础,而实时DSP代码通常采用汇编语言编写,并由手动设计为给定应用提取最可能的性能。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。不幸的是,这种最优化也限制了应用程序的可移植性,并因此也限制了在未来项目上两个编程团队之间对不同技巧和工具集的传播。
然而,在引入EMP后,可以实现以C/C++为中心的统一代码。这允许开发者利用以前开发的现成的大量应用程序代码。因为EMP同时针对控制和信号处理操作两种功能进行了最优化,编译器可以产生同时满足"紧凑"(从代码密度来看)和高效率的代码(对于计算密集的信号处理应用)。EMP高的工作频率(超过750MHz)可以弥合编译器之间的性能差距,这个频率位于当前主流DSP的前沿。
尽管转向采用EMP可以大大地降低用汇编写代码的需求,但仅仅这一点还不足以证明转换到这种统一平台就是正确的,支持操作系统(OS)也很关键。通过OS或实时内核,可以实现几层任务。为确保依然能达到目标性能,有必要采用支持多个优先级的中断控制器。这就允许开发者在同一个器件中创建包含控制和实时信号处理的系统。
此外,EMP的存储器管理工具允许OS支持存储器保护。这允许一个任务通过存储器分页机制,被另外一个任务屏蔽存储器或指令访问。当对一个受保护的存储器区域被未授权访问时,将产生一个异常。
EMP能获得的高处理速度可以转换成几种实实在在的好处。首先是上市时间-如果存在大量的剩余处理能力,在降低或免除代码最优化上可以节省大量的时间。第二个关键的好处是减少软件维护,否则的话这种维护要支配产品生命周期的成本。最后一点,对于可扩展的EMP架构,可能在最具处理能力的系列器件上设计一个系统,然后针对最终应用的计算规模设定"合理大小"的处理器。
当单内核EMP不足时
随着处理需求的不断增加,出现了这样的观点:即使一个600MHz的EMP对于某些应用来说都是不够的。这就是考虑采用双内核EMP的一个原因,例如ADSP-BF561(见图2)。
图2:双内核嵌入式媒体处理器ADSP-BF561的框图
增加另外一个处理器内核,不仅仅能将处理能力相对于单处理器的能力倍增,而且还有某些令人吃惊的结构好处,这种好处并不是立竿见影的。
传统的双内核处理器的应用采用了离散的且通常在每个内核上运行不同的任务。例如,一个内核可能执行所有的与控制相关的任务,例如图形和覆盖功能、网络连接、与大存储器的接口以及整体流控制。该内核还是操作系统或核(kernel)很可能驻留的地方。
这种模式受到采用分开的软件开发团队的开发商青睐。将这些功能类型进行划分的能力允许并行设计处理,消除项目中对关键路径依赖性。这种编程模式还对项目中的测试和验证阶段有所帮助。例如,如果一个内核上的代码发生变化,不一定会使另外一个内核上已经完成的测试工作付之东流。
对称的与非对称的多内核处理
为理解是什么让这种双内核方法令人兴奋,我们需要首先讨论"对称多处理(SMP)".这是指一种通过高速路经相连接的两个相似(或相同)的处理器,并共享一组外设和存储器空间。平时所说的双CPU系统,实际上是对称多处理机系统中最常见的一种,通常称为2路对称多处理,它在普通 AMD Athlon 64 X2的商业、家庭应用之中并没有太多实际用途,但在专业制作,如3DMaxStudio、Photoshop等软件应用中获得了非常良好的性能表现,是组建廉价工作站的良好伙伴。随着用户应用水平的提高,只使用单个的处理器确实已经很难满足实际应用的需求,因而各服务器厂商纷纷通过采用对称多处理系统来解决这一矛盾。在中国国内市场上这类机型的处理器一般以4个或8个为主,有少数是16个处理器。SMP架构没有这种局限性,因为两个处理器内核是相同的,可以按照应用要求进行划分,甚至划分为100%的DSP或100%的MCU工作。此外,对称处理器还具有提供一种普通的集成设计环境的优点。只需要一组开发工具,而且针对单一开发平台培训开发团队的负担较小。
作为一种SMP友好的器件,BF561包含属于每个内核的高速L1指令和数据存储器,以及在两个内核之间的一种共享128KB L2存储器。每个内核都能同等地访问范围广阔的外设-视频端口、串行口、定时器等等。这样的安排扩展了器件的可配置性,允许其工作在几种相同的有效架构下。这些模式(见图4)可以总结性地称为"MCU/DSP分离"、"串行处理"和"分离处理".
选择合适的数据模式
"MCU/DSP分离"模式涉及到分离的以及通常运行在每个内核上的不同任务。一个内核被分配给所有的"MCU类"行为,例如图形覆盖、联网管理以及流控制。此外,如果是用了操作系统的话,该内核还支持操作系统。与此同时,第二个内核专门用于应用的高密度DSP功能。例如,压缩数据通过第一个内核从网络传递。接收到的数据包然后提供给第二个内核,该内核再进行音频和视频的处理(图4)。
这种模式非常适合那些采用分离的基于任务的团队进行软件开发的公司。拥有"控制团队"和"DSP团队"可以使开发并行实施,减少项目对关键路径的依赖性。这种编程模式还能促进设计的测试和验证阶段。例如,在一个内核上的代码改变未必使另一个内核上已经完成的测试工作变得无效。此外,拥有两个相同的内核还允许重新分配在任何内核上任何"未用"的处理带宽,以在不同的功能和任务上再分配。
在"串行处理"使用模式中,第一个内核在输入数据组上执行若干中间级控制和计算,然后传第一个中间数据流到第二个内核进行最后的处理。这种方法的一个变化方法是:将任务在每个内核上进行划分,在这种方式中,中间数据实际上在内核之间搬移几次,直到获得最后的结果。
"分离处理"模式为每个内核提供了更均衡的使用。因为在对称处理器中有两个相同的内核,传统的计算密集应用可以在每个内核之间平均划分。架构功能,像丰富的片上存储器、很宽的内部数据路径和高带宽DMA控制器都有助于基于"分离处理"的系统设计的成功。在这种模式中,运行在每个内核上的代码是相同的;只有被处理的数据不同。在一个通道流应用中,这意味着一半的通道由第一个内核处理,而另外一半由第二个内核处理。
即使当某个应用适合某个单内核处理器,也可以利用双内核系统来降低整体的能耗。例如,如果一个应用需要600MHz的时钟速度以在一个单内核处理器(如ADSP-BF533)上运行,它还必须工作在更高的电压下(1.2V)以达到这个速度。然而,如果相同的应用在一个双内核器件(BF561)上进行划分,每个内核可以运行在大约300MHz的速度下,每个内核的电压可以极大地降低到0.8V.因为功耗与频率呈正比并与工作电压的平方成正比,电压从1.2V降低到0.8V(同时频率从600MHz降低到300MHz)能对功耗产生显着的影响,与单内核解决方案相比实际上节省了能耗。
:
全部0条评论
快来发表一下你的评论吧 !