Blackfin嵌入式媒体处理器的体系结构
引言
针对媒体处理要求高速信号处理和控制功能并举的应用需求,美国模拟器件公司(简称ADI)开发出了兼备上述功能的单芯片Blackfin系列媒体处理器,主要用于对多媒体应用中很普遍的实时数据流和通常由MCU操纵的控制任务进行处理。Blackfin处理器通过把信号处理模块[例如双MAC和视频运算器(ALU)]和典型的MCU功能(例如操作模式和内存管理单元)结合起来,提供了一种设计嵌入式多媒体系统的集成方法。本文主要介绍Blackfin处理器能在一个复杂的多媒体系统中完成DSP和MCU两种任务的体系结构和功能特点。
全面的外围设备
因为MCU本来就是系统控制器,所以它们通常会提供多种多样的用于连接其他子系统的外围设备。这些外围设备包括低速的串行端口[例如串行外围接口(SPI)和通用异步收发器(UART)]、可编程通信接口(PCI)、通用串行总线(USB)以及一些外围设备。此外,为了进行事件控制,它们通常还包含可以作为事件捕获设备或者脉宽调制(PWM)输出节点的可编程定时器、实时时钟、监视定时器以及大量有用的可编程输入输出(I/O)标志。
Blackfin媒体处理器系列不仅包含这些MCU类型的外围设备,还包含用于发送和接收多媒体信息的高速接口(见图1)。例如,其中异步串行端口可连接到高分辨率的音频编解码器和高性能电信接口,而并行外围接口(PPI)可连接到视频编解码器和数据转换器。
与大多数MCU一样,Blackfin处理器有片内硬件支持用于软件异常、硬件断点、性能计数器和执行跟踪,而且它还支持通过一个JTAG口对目标硬件的完整控制。
用于媒体处理的统一指令集DSP应用强调尽可能用少的时钟周期执行尽可能多的算术计算(如MAC操作)。为了达到这个目的,它们经常采用VLIW(超长指令字)指令,因而为了提高计算效率而牺牲代码密度。另一方面,MCU主要执行的控制功能包含许多条件操作,在程序流程中频繁跳转。这些程序一般都采用C或C++语言编写,并且常常使用实时操作系统(RTOS)。因为可能需要大量的控制功能,所以代码密度至关重要,从而使可变长度指令集成为一个突出的特点。
Blackfin的VLIW指令集包含了64 bit操作码以支持DSP内部环路的每时钟周期多次运算功能,但是因为它经过了优化,以便使16 bit操作码成为使用频繁的指令。因此,编译后的Blackfin代码密度可与那些的MCU的代码密度相媲美。Blackfin处理器的软件开发模式使得同一架构内的高性能DSP功能可与典型的RISC设备相匹配。系统层和产品层应用代码可用C/C++语言编写,并且位于用户选择的标准实时操作系统的顶层。底层代码,例如原始数据搬移和处理,可以用混合汇编代码和C/C++代码来编写,需要时还可采用手工调整的汇编库。
应该认识到Blackfin处理器既不是带有增强指令集的DSP,也不是扩展了DSP功能的MCU,这一点很重要。该处理器既是一种高性能的媒体处理器,也是支持编译器的处理器,两类开发工程师都能认可这种处理器。因为Blackfin处理器在一个统一平台上利用一个工具链开发代码,所以开发工程师只要学会一个指令集就能维护在同一个操作系统上运行的一个代码集。这种协同作用实际上创造了一个新的“媒体指令集计算”领域,可大大缩短开发时间。
数据搬移
DSP是数据量很大的应用,所以让它们自己参与多的数据总线和DMA引擎以便降低数据搬移对处理器的负担。另一方面,MCU通常不支持足够快的存储器数据传输速率以适应流媒体数据。 嵌入式媒体处理器必须有全面的DMA能力以便将数据块移进或移出芯片。因为在芯片上集成足够的存储器用于存储多个解压缩视频帧很不切实际,所以必须以一种高度集成的方法采用DMA来管理流动数据,以便有效地完成视频处理。考虑到媒体处理应用需要大量的数据搬移,所以数据搬移不允许引起处理器中断,因为中断会影响实时性能。另外,因为进行数据搬移时经过处理器会降低效率,所以该DMA引擎必须有自主权并且有足够的能力以便降低处理器内核的负担。实质上,该DMA控制器允许处理器内核把数据搬移与系统控制过程分离开。 在典型的应用中,原始数据首先从视频端口或串行端口等外围设备直接经过DMA进入媒体处理器;然后,在媒体数据处理期间,中间数据直接经过DMA送到外部存储器或者从外部存储器获取;,处理过的数据直接经过DMA送回到外围设备或系统存储器。Blackfin处理器除了提供具有不同优先级的高速DMA通道外,还具有“二维”DMA功能(见图2),使其能以很低的软件开销就可搬移任意矩形区域内的数据(例如,一幅图像中的一个像素块)。
存储器的组织和管理
Blackfin体系结构包含一个多级存储器层次,用于数据存取和指令读取(见图3)。这些结构适合于支持硬件实时确定性操作和非实时大代码尺寸的有效应用。通过把Blackfin处理器先进的数据搬移能力和它的多级数据存储器层次结合到一起,可以高效地处理面向流的数据和面向控制的数据。L2存储器和L3存储器都是线性的(包括指令和数据)而且该处理器的可设定地址空间很大,允许处理器访问大程序和数据集。
这种数据存储器层次允许指定一些快速的系统存储器作为高速缓存或者SRAM。这就使程序员能灵活地调整并权衡性能和数据集大小之间的关系。独立的4 KB “高速暂存”用于程序运行时的快速堆栈空间。数据存储器中的高速缓存结构分成两组,系统开发工程师可以把二组都当作高速缓存,也可以把其中一组当作高速缓存而另外一组当作SRAM,或者二组都当作SRAM。因为有了指令高速缓存,独立的数据缓存可以在装满数据后锁定。
资源的保护
因为MCU要控制一个完整的复杂系统,所以它们必须有一组完整的安全特性,例如具有定义独立的、可自由存取的应用开发代码区,同时又能够保持不同的代码区没有受覆盖危险的存储器管理能力。Blackfin处理器以受保护(“用户”)和未受保护(“管理员”)两种操作模式支持上述操作系统的安全功能。这些保护功能防止了用户无意或有意地访问或破坏系统的共享部分。像许多MCU一样,Blackfin处理器也允许异步中断和同步异常。这两类事件都会引起流水线指令挂起正在执行的任务以便处理中断事件。Blackfin处理器的可映射中断优先级是一项在MCU中很普遍的功能,但在DSP中不常见。该芯片的异常处理能力保护了系统免遭错误或非法的程序侵害。
动态电源管理
为了满足嵌入式媒体处理器对计算复杂度和性能的要求,需要很快的时钟频率,功耗将是设计中要考虑的一个重要因素。Blackfin处理器的动态电源管理能力可以针对具体的任务来优化性能和功耗的关系,它支持一种多层次的电源管理方法,可以根据系统需求调整性能。如图4所示,其内核电压可随着频率的变化而一致地变化,所以当以低频率和低电压运行某一代码段时可以降低功耗。
开发工具
为了支持媒体处理应用的开发,软件开发环境必须同时能支持两类开发—密集型环路的媒体和信号处理,以及基于高速缓存的控制处理。CROSSCORE开发工具套件支持Blackfin系统开发。这些开发工具包括评估系统、在线仿真器以及一个VisualDSP++集成开发环境,具有支持两类系统开发的特点。
为了调整位于低速L2或L3存储器中的控制代码和数据,系统开发工程师必须了解和观察高速缓存在系统中是如何工作的。到时钟周期的仿真程序收集了与执行序列和高速缓存操作有关的高速缓存统计数据。例如总的高速缓存存取次数、存取成功次数以及存取失败次数等统计数据会被制成表格并直观地显示出来(见图5)。此信息会在应用状况统计观察窗和动态高速缓存内容观察窗中显示出来。利用这种高速缓存观察窗,开发工程师可以确保系统按照所有要求的配置正确地运行。
因为信号处理算法的开发与提高内部环路效率的关系十分密切,所以VisualDSP++包含了一个指令流水线观察窗(见图6),它直观地显示出经过定序器的流水线的指令流。阻塞[S]、冒泡[B]、多周期指令[M]、取消指令[K]以及其他的流水线事件都有图形化显示。每一个经过该流水线的具体事件的直观显示,允许系统开发工程师能更好地了解一个算法中在何处以及为什么引起等待和阻塞,以便优化算法,减小无效的流水线指令数量。
结语
在多媒体应用中应用Blackfin处理器系列产品,较之双处理器解决方案具有成本低、复杂性小、产品上市时间短等明显的优势。特别是Blackfin处理器能以出色的性价比实现音频、视频、图像等媒体处理功能。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。