长久以来多媒体的嵌入式应用都可见到RISC微控制器(MCUs)和DSPs的踪影。然而它们并不能互相替代,而是搭配使用。MCU架构适合有效率的异步控制流,而DSP架构则用在同步且固定速率的数据流(如滤波器和转换运算)。由于两种功能都是目前媒体处理应用所必须的,工程师经常使用个别的MCU和DSP芯片。这种组合对广泛的多媒体应用提供良好的处理引擎,但是却提高了多重处理设计的复杂度,以及学习多重开发工具组和除错的不同架构。芯片商为了解决这些问题而作过各种的尝试。许多MCU制造商已经将部份信号处理功能整合在一起,如指令集的延伸和乘法累加(multiply-accumulate;MAC)单元等,但是这种方法往往缺乏进阶信号处理应用所需要的基本架构基础。同样地,DSP制造商已经内建有限的MCU功能,但是在系统控制方面却不得不有所妥协。
最近出现另一种选择-嵌入式媒体处理器(Embedded Media Processor;EMP)。这种处理器在单一架构上同时具有MCU和DSP的功能,并能在控制和信号处理的不同需求中作有弹性的区隔。EMP可以视应用方案的需要,当作100%的MCU(符合业界标准的程序代码密度)、100%的DSP(领先DSP技术的时钟速率),或是介于两者之间的组合。本篇文章着重于从系统设计者的观点来看,当考虑EMP的解决方案时所可能产生的组织和技术问题,以及提供目标导向的见解来成功地建立以EMP为基础的设计。
EMP的架构
为了说明EMP的架构,本文接着将检视一款媒体处理器,它结合32位RISC指令集、双16-bit MAC单元和一个8位的视讯处理引擎。可变长度指令集可延展至用于DSP内循环的64位操作码(Opcode),但是经由优化使得最常使用的指令长度为16位。所以编译过的程序代码密度足以媲美业界其他MCUs,而其连锁的管线(interlocked pipeline)和代数指令语法有助于以C/C++和汇编语言来开发程序。
EMP与MCU一样具有保护及未保护作业模式,以避免用户存取或影响系统的共享区域。除此之外还提供规范个别应用程序开发空间的内存管理能力,以防止不同的程序代码区段被覆写。EMP也允许异步的中断和同步的例外状况,而且还有可程序化的中断优先级。所以在EMP之上很适合使用嵌入式操作系统(在以前这是MCU的领域)。
在DSP部份,EMP被建构用于有效率的数据流,具有非常高的性能并有支持高速序列和平行数据传送的外围组件。此外EMP包括先进的电源管理功能,让系统设计者得以打造拥有最低动态电力模式的设计。
开发方法
在现今的设计范例中,MCU和DSP程序设计师通常是两种完全不同的族群,两者的关系只有在两个功能世界交会的「系统边界」上。这在两群设计者各自发展出自有的设计方式上,是说得通的。举例来说,信号处理开发人员可能偏好钻研处理器架构的支微末节,来实现改善性能的窍门和技巧。在另一方面,MCU程序设计师或许喜欢将装置打开让其自行完成工作的模式。这就是为何EMP同时支持DMA和快取(cache)内存控制器来传输数据于系统之中。多重高速DMA频道在外围装置和内存系统间来回穿梭传递数据,使DSP程序设计者不必耗费宝贵的核心处理器循环就可达到想要的微调控制。相反地,单芯片上可设定的指令和数据快取能够让程序设计师像设计MCU一样,不用插手程序代码和数据的管理工作。通常在系统整合的层级上综合两个作法是最理想的。
另一个导致在过去MCU和DSP开发族群分隔的原因是,两个处理器各有各的设计规则。从技术的角度来看,负责建构系统的工程师有时会犹豫是否要将控制应用程序和信号处理应用程序混在同一颗处理器上。最常见的顾虑在于非实时的任务会干扰实时任务。比如说,像是处理图形用户接口(GUI)或是网络堆栈的程序设计者,应该不用担心会妨碍到系统的实时信号处理活动。当然「实时」的定义会根据特定的应用程序而有所不同。对嵌入式应用而言,重点在于服务一个中断所需要的时间。因此假设从中断发生到服务程序在开端处将系统内容储存好的这段时间小于10微秒(microsecond)。
MCU的句柄通常是用C语言编写且是以函数库为基础的,而实时DSP程序代码往往是以汇编语言为基础,并且是对某特定应用以手工的方式来得到的最佳性能。不幸的是,这种优化设计也限制了应用程序的可携带性,因此也使得未来的计划仍需要两组程序编写小组的技能及开发工具。
然而随着EMP的导入,以C/C++为主的统一程序代码基础将是可以实现的。这让开发人员得以利用以前研发成果中所获得的庞大应用程序代码。由于EMP同时针对控制和信号处理作业作优化设计,编译程序可以产生既「紧密」(从程序代码密度的观点)又有效率(给需要密集计算的信号处理应用程序)的程序代码。EMP的高运作频率足以弥补任何因编译程序效能所产生的间隙,超过750MHz的频率在现今的主流DSP中居于领先地位。此外,汇编语言仍然是在优化重要处理循环时的一个选项。
采用EMP虽然可以大幅减少撰写汇编语言的需要,但光是这样还不足以证明转换到这个统一的平台是有益的。操作系统(OS)的支持也是关键。藉由支持一种操作系统或是实时核心(kernel),即可实现多层次的任务。为了确保预期的性能仍然可以达成,一个支持多种优先权的中断控制器是必要的。内文转换(context switching)必须要经由以硬件支持的堆栈(stack)和框架指针来达成。开发者因而能够创造出一个包括控制和实时信号处理两个领域的系统在同一台装置上。
另外,EMP的内存管理机制允许OS支持内存保护功能。一个任务可以透过分页(paging)的机制阻挡另一个任务所作的内存或指令存取动作。当未经授权的存取动作发生在受「保护」的内存区域时,就会产生一个例外情形(Exception)。核心(kernel)会负责这个例外并采取适当的措施。
EMP所能达到的高处理速度意味着数点实际的好处。第一是上市时间,如果有很多的处理资源可用,减少或者不管程序代码优化可以节省相当多的时间。第二个重要的优点是减少软件维护的工作,这在产品的生命周期成本中占有举足轻重的角色。最后,对易扩充的EMP架构而言,有可能先在功能最强的处理器系列成员上设计系统,然后再根据最终应用的运算大小来选择适当的处理器。
双核心方法增加了设计弹性
最后还有一个值得一提的选择。现在有一些嵌入式媒体处理器已经是双核心的装置。传统上的双核心处理器是在各个核心上采用个别和不同的任务。比如说,一个核心可能执行所有跟控制相关的任务,像图形和重迭的功能、网络、介接大量储存以及总体流量控管。这也是操作系统或kernel可能的所在地。第二个核心可以专注在需要高度处理能力的应用程序。举例来说,压缩过的数据封包可能从网络接口传送到第一个核心,经过预先处理后再送到第二个核心进行影音的译码。
采用个别软件开发小组的顾客都偏好采用这个模型。将功能分隔开来使设计程序可以同时进行,能够减少项目对临界路径(critical path)的依赖性。此编写程序模型也对项目的测试和验证阶段有所帮助。例如一个核心的程序代码改了,并不会影响另一个核心已经完成的测试结果。简而言之,DSP和MCU仍将持续地配对使用在各种应用,而嵌入式媒体处理器的普及使得着重媒体应用的产品能在性能、整合性、有效用电和成本考虑方面,达到采用个别装置解决方案所无法达到的新境界。
(作者任职于ADI美商亚德诺)
[2] D.A. Smolyansky, Time Domain Network Analysis:Getting S-parameters from TDR/T Measurements - Infiniband PlugFest, 2004> |
|
|
![](file:///E|/易立達/hopenet-mag/images/misc_spacer.gif) |