5.4.2.2 Trimedia媒体处理器、参考板及其软件开发环境
TM-1000是Philips公司于1996年底推出的新一代媒体处理芯片(Media Processor)。它是一款针对实时处理音频、视频、图像和通信数据流的通用微处理器,内部集成了一个极高性能的CPU,一些周边的I/O单元和协处理单元。综合运用内嵌DSP(Digital
Signal Processing)的方案和通用CPU的高度可编程特性,使它以极高的性价比实现了高性能的多媒体功能。因此它在消费类电子产品和PC产品中得以广泛应用。它有以下几个主要特点:
·在一块芯片上同时处理音频、视频、图像和通信数据流;
·内部集成一个强大、通用的VLIW(Very Long Instruction Word)非常长指令字)的处理器内核,包含分离的数据和指令cache(高速缓冲存储器),峰值计算速度达到40亿次/秒。
·相互独立,DMA驱动的多媒体输入输出单元接受和输出格式化的数据,以及能实现特殊多媒体算法的多媒体协处理单元。
·指令集包括RISC、多媒体、DSP以及和IEEE兼容的浮点运算。
·TM-1000内部和功能单元之间通过一个高性能的总线和存储系统进行通信。
·利用高性能的软件开发工具和预先构造的库,使多媒体应用的开发基于c或C++语言。
1.Trimedia处理器
参看图5-20 TM-1000的功能模块图,下面对TM-1000各个功能部分分别给以详细的介绍。
5-20 TM-1000功能模块图
(1)可编程的VLIW CPU
TM-1000的心脏是一个强大的类似DSP的32位处理器核心。处理器实现了32位线性地址空间,内部包含了27个流水线驱动的功能单元和128个通用寄存器,任何寄存器都可以被任何操作、任何操作数利用。它的高度并行的VLIW体系结构实现了一个five-issue-slot引擎。核心使用VLIW指令集,每个时钟周期内,允许同时发出5个运算,这些运算可以针对27个功能单元的任何5个,其中包括整数单元、浮点数运算单元、类似于DSP的数据并行单元。大部分通常的运算一个时钟周期即可得到结果,复杂一点的运算需要多一点的时钟周期。
TM-1000的指令集包括通常的RISC(精简指令集)运算、实现强大SIMD(single instruction multiple data)功能和定制多媒体功能(custom
multimedia functions)的专门DSP运算以及32位IEEE兼容的浮点运算,支持高字节顺序和低字节顺序。
TM-1000的CPU还对指令和数据断点提供了特别的支持,这在应用程序的开发和调试中尤其有用。
(2)专门的数据和指令cache
TM-1000内部具有专门的16KB数据cache和32KB指令cache支援32位处理器。为了提高cache的性能,两种cache都使用了一种锁定机制,cache的数据一致性由软件维持。数据cache是双端口的高速缓冲存储器,它允许两个同时的访问。为了减少内部总线的带宽需求,存储器和cache里面的指令采用压缩格式,在指令被CPU处理之前,压缩的指令由指令cache解压缩单元完成解压缩。
(3)无缝的存储系统接口
TM-1000存储系统通过使用片上cache和一个对外部同步动态随机访问存储器SDRAM(Synchronous DRAM)无缝接口相结合的机制找到了性能和价格的平衡点。它的存储器接口有了足够的驱动能力,可以直接驱动100MHz,8MB的存储系统。利用较低的系统时钟频率和外部的缓冲器,可以实现更大的存储空间。可编程的时钟比使存储系统和CPU可以运行在不同的时钟速度下。支持不同的存储器类型、总线宽度、时钟速度,使TM-1000可灵活设计满足不同系统的需求。
(4)高速内部总线(数据高速通路)
TM-1000内部的高速数据总线将内部各功能单元连接在一起,并且提供对各功能单元的控制寄存器、外部的SDRAM以及外部的PCI总线的访问。它由分离的32数据总线和地址总线组成;总线传输协议采用块传输协议。片上的周边设备单元和协处理器单元可以是总线传输的主设备也可以是从设备。总线带宽的分配是可编程的。内部总线有一个中央判优器,它有许多不同的工作模式,允许针对不同的应用选用不同的判优算法。根据判优模式,它控制对总线的访问和分配不同的带宽给请求单元。每种模式保证一个单元最小的带宽和最大的服务延迟。这种总线分配机制是使得TM-1000成为真正的音频和视频实时系统特点之一。
(5)视频输入单元(Video In)
任何CCIR601/656(8位并行输出,4:2:2的YUV时间复合信号)兼容的设备,如数字摄像机,都可以和视频输入单元直接连接。与CCIR不兼容的设备可以通过一个数字视频解码芯片(如Philips
SAA7111)与视频输入单元相连接。视频输入单元从片下单元获取数字视频,将复合YUV数据分离,如果需要的话可以进行子采样,然后回写到SDRAM中。许多数字摄像机获取640像素每行或720像素每行的图像,视频入单元自身对图像进行水平子采样,直接转换到320像素每行或360像素每行的图像,转换过程不需要CPU的介入,如果需要较低的解析度,那么获取信号过程中进行的子采样能够极大的减少存储和带宽需求。
(6)视频输出单元(Video Out)
视频输出单元执行和输入单元相反的功能。它从SDRAM中分离的YUV数据结构产生8位复合的YUV数据流。它能执行任何可编程的任务,然后将数字视频数据输出到片下(off-chip)的视频子系统,例如数字视频编码芯片、数字视频录相机或其它CCIR656兼容的设备。视频输出单元可以用PAL或NTSC制式输出连续的数字视频,最高频率可以达到40M像素每秒。在产生复合视频数据流的同时,视频输出单元可以进行可选的水平2倍放大,将CIF的解析度转换到CCIR的解析度。为了能够同时显示图形和活动视频,它也能在输出的图像的任意位置以任意尺寸产生复杂的图形覆盖(如alpha混合)。
(7)音频输入和输出单元(Audio In/Out)
TM-1000集成了音频输入和输出单元。他们自动利用DMA方式为片下(off_chip)的串行音频AD和DA提供数据流服务。两个单元都可以直接支持串行的16位立体声输入输出,采样频率最高可以到100KHz。配合少量的外围电路,可以支持8路声道的输出。音频接口是高度可编程的,能够适应专门协议和未来的标准。TM-1000可以编程,提供主时钟给外部的ADC和DAC。片上时钟发生器的精度可以达到0.0006ppm。如此高的解析度,使编程者能精确地控制采样时钟频率,以简化复杂多媒体系统中同步算法。
(8)专用的协处理器
TM-1000具有很强的处理能力,又有便宜的价格,关键之一是它拥有专用的硬件协处理器。
(9)图像协处理器(Image CoProcessor ICP)
ICP和CPU下载图像处理和调整任务,例如将图像从SDRAM中拷贝到显示卡的帧缓存中。它也可以当做一个存储器到存储器设备或存储器到PCI总线的协处理设备。在存储器到存储器的模式下,可以执行水平或垂直的图像滤波和任意图像放缩,这是它能执行输入像素5邻域的32FIR(Finite
Impulse Response有限冲击响应);滤波,滤波系数全是可编程的;在存储器到PCI总线的模式下,可以执行水平放缩,然后执行色彩空间变换。例如,如果一个像素数组将要显示在一个PC的图形用户界面的窗口中,ICP首先在存储器到存储器模式下调整图像垂直大小(如果需要的话),然后在存储器到PCI总线模式下调整水平大小,最后执行YUV到RGB的色彩空间变换。ICP也为重迭窗口中的活动视频显示提供支持,窗口的数目和大小仅仅受到带宽的限制。最后经重新采样和变换的图像像素通过PCI总线传送到片下的图形卡或帧缓存。
(10)变长解码器(Variable Length Decoder VLD)
VLD帮助CPU解码非常高位速率的哈夫曼编码的视频数据流,如MPEG-1或MPEG-2数据流。VLD工作在存储器到存储器的模式下。CPU传递给VLD一个指向哈夫曼编码的位流的指针,结果产生一个为MPEG解压缩软件优化的符号化位流,因此CPU和VLD之间的通信是最小的。
(11)I2 C接口
TM-1000的I2C接口使片内设备连接、控制外部I2C设备成为可能。这样,TM-1000可以配制和监测外部视频设备的状态,如视频解码器和编码器以及某些数字摄像机。它也用来在启动的时候从EPROM中读取启动程序。
(12)同步串行接口(Synchronous Serial Interface SSI)
TM-1000的SSI接口为多种多媒体应用提供访问通路,例如电视电话或视频会议和PC机一般的数据通信。SSI包含了和模拟调制解调器相联结所需要的所有的缓冲区和逻辑(电路)。当和Trimedia的V.34软件库组合起来时,SSI提供了完全和V.34兼容的调制解调器能力。另外,TM-1000的SSI也能和ISDN接口芯片相连,以提供更好的数字调制解调器能力。
(13)定时器
TM-1000包含了4个定时器,程序员可以使用其中3个,另外一个保留给系统。
(14)高速PCI总线接口
TM-1000的PCI总线接口将VLIW的CPU和片上的输入输出单元以协处理器单元联结到PCI总线。在基于PC的应用中,TM-1000可以直接联结到标准PCI总线上,因此它可以直接安装到PC的母板或是插入卡上。在TM-1000作为主处理器的嵌入式应用中(embedded
application),PCI总线可以用来连接其它一些周边设备,这些周边设备实现了某些TM-1000未提供功能。
2.Trimedia软件开发环境
按照传统的做法,嵌入式的微处理器应用程序由汇编书写代码,结果虽然代码执行效率较高,但是却损失了代码的移植性,而且也使产品开发周期变得很长。Trimedia提供了一套复杂的系统软件工具帮助程序员使用标准的C或C++语言开发多媒体应用程序。这一套工具包括编译器,调试器,优化工具和仿真器。Trimedia的软件开发环境(Software
Development Environment SDE)保证了快速开发新的代码和移植已有的代码,从而缩短新产品开发周期,迅速占领市场。在Trimedia系列芯片中,软件的兼容性只限于源代码(c或C++)级别,强大的编译器使得程序员没有必要费力去书写没有任何移植性的汇编源程序。SDE集成了许多通用CPU和实时系统开发环境所具有的共同特征,它由以下一些模块组成。图5-21的框图说明了SDE各模块之间的关系。
·VLIW的标准C或C++语言的编译器
·基于GUI(图形用户界面)的多级调试器
·性能分析和增强工具
·中间代码和机器代码级的仿真器
·一个实时操作系统(RTOS)内核
5-21 Trimedia软件开发环境的组成模块
(1)VLIW编译系统
图5-22说明了Trimedia编译系统对C或C++源程序的操作过程。非常简单,Trimedia的编译系统从C或C++语言的源代码产生可执行程序。它模块的设计使程序员可以完全控制编译、调试和优化的每一步。中间代码和机器代码级的仿真器允许程序员在开发过程中评诂指令级的并行度和校验程序的逻辑功能。
在编译块完成C语言的预处理(preprocessing)或C++语言的翻译后,核心的C编译器将C代码翻译成以判定权形式表示的中间代码。根据需要,可以使用中间代码仿真器来检测中间代码的并行度,这个过程和目标处理器的配置无关(如issue_slot的数目,功能单元的数目等等)。
指令调度模块(scheduler)检查判定树,并且产生针对目标处理器的VLIW指令。在这步处理过程中,调度模块给每条指令增加条件代码,这种技术能极大地减少代码的分支,因此也减少了程序执行时间。
在代码的编译和安排阶段,编译系统可以执行很多自动和程序员控制的优化操作。下面的性能分析和增强工具一节中将给以详细介绍。
当获得较好的并行代码后,代码和一个或多个目标模块或目标库组装、连接起来。然后指令压缩模块压缩代码以增加代码的密度,这样就缩短了指令cache和片下存储器之间传输时间。这时,可执行程序就可以被装入存储器,并且在处理器或仿真器上运行。
5-22
Trimedia的编译系统
通过读入不同的机器描述文件(Machine Description file MDF),编译系统模块可以为任何的Trimedia体系结构产生可执行代码,不论是现在的,将来的或是正在实验的体系结构。MDF描述了特定的Trimedia处理器使用的参数,如issue_slot的数目,内部功能单元的类型和数目,完全的指令集等等。
Trimedia的编译提供了用标准的ANSI C语言进行系统级编程的能力,包括对中断处理例程和对数据cache精细控制的支持。另外,尽管绝大多数的汇编级指令可以在源代码里实现,Trimedia还是提供了完整的汇编语言。
(2)基于GUI的多级调试器
Trimedia软件开发环境支持应用程序中间代码和机器代码级的调试。交互的、居于GUI的源代码级调试器使应用程序开发者能完全控制程序的动态执行,它使用编译器产生的符号化调试信息,提供检测中止程序的状态、观察变量和表达式的赋值、在代码里设置断点等功能。机器代码级调试器提供了相同的功能,使程序员可以每次单步执行一条VLIW的指令。
(3)性能分析和增强工具
开发高度并行的应用程序代码是一个需要复杂工具和程序员能力的交互的过程。运行在Trimedia细颗粒(fine-grain)并行处理器上的特定的应用程序的性能依赖于编译器对程序指令级并行的开发程序。为了帮助多媒体开发者获得高度并行和高性能的程序,Trimedia的编译系统集成了很多有用(强大)的编译选项和分析工具。
① 代码框架分析(Code Profiling)
它为应用程序的执行情况提供可靠的统计数字,这为增加代码的并行度提供了途径。Trimedia的代码框架分析帮助程序员获得最大可能的并行度和代码执行程序。当代码框架分析有效时,程序的仿真执行能产生判定树和执行概率的统计数字。然后,利用产生的代码框架分析信息重编译该程序以期增加程序的并行度。这个过程可以对程序的的部分模块和整体重复操作,以精细调整程序的性能。
② 判定树嫁接(Decision Tree Grafting)
通过减少分支数目,判定树嫁接可以增加指令级的并行度,提供每个时钟周期内更有效的操作码。在这过程里,从判定树上跳转或退出被它的目标判定树的拷贝所代替。嫁接过程可以被编译器自动执行,或通过读入一个包含控制参数的文件而被程序员引导执行。这些参数使程序员可以控制代码密度,其中包括最小概率阈值,最大代码复制因子,最小执行计数阈值,最大嫁接深度以及嫁接使能。
③ 别名分析(Alias Analysis)
编译器自动执行别名分析以决定是否可以采取某些优化措施,这是提高代码并行度的一个关键方法。编译器检测两个内存单元是否相同或相互重迭,如果两个都不是,编译器试着削弱内存操作的阶数(强度),这样允许更多的操作并行执行。编译器支持3个层次的别名分析。
④ 受限指针(Restricted Pointer)
当编译器自动执行不安全的别名分析时,受限指针使程序员外部地强制编译器取消对该指针的别名分析。编译器利用这些信息去执行其他的优化操作。
⑤ 局间和全局优化(Local and Global Optimization)
通过对源代码的假定级别,编译器对局部判定树或全局判定树支持4个层次的优化。
⑥ 关键路径(Critical Path)绘图工具
Trimedia的编译系统工具可以以图形方式输出关键路径以识别程序的并行。图形数据以PostScript格式输出。
⑦ 基于GUI的cache分析器
通过优化使用cache可以获得最高的性能。SDE包含以图形方式显示动态cache使用统计数字的工具。分析指令和数据cache命中失败可以帮助程序员找到调整代码和数据的时机,以增加并行度。
除了上面提到的优化方法,Trimedia编译系统还支持增值拷贝、常数合拢(folding)、死代码消除、循环重复优化(loop iteration
optimization)和局部公共子表达式消除。
(4)Trimedia C-调用(C-callable)的特殊运算
这些高度并行的定制(custom)运算大大加速了数字信号处理和多媒体应用中常见的特殊运算的性能。定制运算提供了类似C函数调用的方式,源代码里的访问语法和C语言保持一致。这些运算被自动安排(调度),充分利用Trimedia高度并行的VLIW体系结构,可以提高应用程序的性能,又减少了代码开发时间。
(5)Trimedia的应用程序库
通过提供多种处理音频、视频、图形和通信的多媒体算法,Trimedia的应用程序库缩短了很多标准的多媒体应用程序的开发周期。这些库包含了C语言调用的例程,例如MPEG-1和MPEG-2的解码,V.34调制解调器,浏览器,H.32X视频会议,音频合成,2D/3D几何造型等等。
(6)中间代码和机器代码级的仿真
两个代码级的仿真使程序员在程序开发过程中就有机会评估代码的性能和并行度。在代码的初期开发阶段,中间代码可以进行仿真,允许交互的调试和估计指令级的并行度,测试程序的性能。中间代码级仿真假设CPU有无数个通用寄存器和功能单元。在代码开发的后期,机器代码级的仿真器使程序员能够测试和提高应用程序的性能。它能用来在一个实时操作系统里给定数目的时钟周期内单步执行单个、重定位的模块或者仿真整个程序。机器代码级的仿真器精确地模拟Trimedia
CPU、存储子系统、系统周边设备单元、中断处理、时序和PCI接口。通过读入MDF文件,机器代码仿真器能够测可执行程序在不同的Trimedia体系结构上的性能。
(7)共享库、动态库的支持
Trimedia的编译系统还包括一个可重入的ANSI C库,以及其它共享库和动态库,连接和装入这些库,有利于减少可执行代码的大小。
(8)实时操作系统(RTOS)内核
多媒体应用要求系统资源和活动得到高效的管理,Trimedia处理器支持pSOS+实时多任务操作系统内核。pSOS+操作系统Integrate
Systems Inc(ISI)开发,它基于开放操作系统标准(Open System Standard),并且针对多媒体应用作了专门的优化。它具有以下特点:
① 真正实现抢先式,基于优先级的任务调度
pSOS+内核调度、管理和分配系统资源(如CPU、定时器、存储器、输入输出设备以及总线带宽等)、协调系统内异步的活动。pSOS+内核简单地将应用程序看成一个任务、输入输出设备驱动程序和中断服务例程(Interrupt
Service Routine)的组合。一个任务是系统内竟争它自己的系统资源的最小单位。核心响应系统调用发送给它的信号,在不同的任务之间进行切换,从而使相互独立的任务得以并发执行。
② 合理的中断处理
ISR处理中断并执行所要求的动作,如重新设定设备,读/写数据等。ISR也驱动一个或多个任务去响应和处理与中断相关的情况。为了更好地响应实时应用和异步特性,内核实现了真正的抢先式和基于优先级的任务调度。内核保证任何时刻,正在运行的任务在所有准备好可以运行的任务中具有最高的优先级。更高优先级的外部事件可以抢先当前的任务。通过使抢先特性有效或无效,或改变调度任务时间片的大小,用户可以改变调度的行为。pSOS+核心通过核心外部的ISR来处理中断。为了提供可能的最快响应时间,中断可以直接被传递给ISR。从ISR发出的系统调用返回到ISR,消除了核心调度的时间消耗。
③ 动态的,基于对象的多任务
pSOS+是一个动态的、基于对象的核心,它允分利用了为任务到任务通信、ISR到任务通信、同步和互斥服务的自由竞争同步机制的优点。它支持的对象包括任务,存储区域,固定和可变长的消息队列,事件,定时器,信号量和异步信号等。
④ 动态的存储分配
pSOS+核心存储管理提供动态分配可变尺寸的段和固定尺寸的缓冲区的能力。
⑤ 灵活的计时管理和时钟服务
pSOS+核心提供许多有用的函数,其中包括维持系统时间、日期,超时设定任务,唤醒任务,周期性的外部事件的超时设定,跟踪一个正在运行的任务的时间片等的函数。
⑥ 先进的错误处理和故障恢复
当系统遇到致命的故障时,pSOS+核心使用一种特殊的机制依次的挂起任务。
|