多媒体编解码芯片的选择策略
本文对音视频产品的芯片选择作了分析,从芯片的指令集,主频,cache,DMA等方面进行衡量,给大家在选择软解码芯片时提供一些帮助。
现在有许多电子产品需要有多媒体编解码芯片的支持纾夯ズ校叨耸只琍MP。在设计这些产品时,选择好一款DSP芯片,成为了产品成败的一个关键。如何选择芯片?这是一个非常复杂的问题,涉及到方方面面。我把我对这个问题认识在此总结一下。
先从了解芯片的处理能力说起。假如我们要让我们的产品做到MPEG-4 D1实时解码,不考虑价格,功耗,接口等其他因素,只谈处理能力。我们以Philips 的Trimedia 1300和ADI的Blackfin533为例。人们谈起芯片的处理能力时,总是首先想到主频。Trimedia1300的主频是133Mhz,而Blackfin533的主频高达600Mhz。Blackfin的主频比Trimedia要高得多。
当年Intel和AMD争夺PC芯片市场时,Intel的主频高于AMD,后来AMD打出了主频*指令数/周期的牌,引入了新的概念。Trimedia每周期可以执行5条指令,因为Trimedia使用了VLIW,每条指令32位。其中两条可以做乘加运算,另外三条可以用于简单的算术逻辑运算或存取数据。于是,2*133+3*133=266+400。而Blackfin,每个周期最多可以执行3条指令,其中只有一条是做乘加运算,另两条都是存取操作。算作1*600+2*600=600+1200。Blackfin中的乘加指令的执行时间与Trimedia中的大致相同,都是3个时钟周期后得到结果。单从每秒的DSP运算指令数来看,Blackfin是Trimedia的两倍多。每秒的算术逻辑运算和控制指令数,Blackfin是Trimedia的三倍。从简单算术逻辑运算和控制指令来看,Blackfin是比Trimedia稍强些。
下面以视频处理中最典型的IDCT运算为例,来比较这两款芯片的处理能力。在Trimedia中,使用IFIR16, DUALUCLIPI, PACK16MSB,MERGEDUAL16LSB这四个DSP指令,一个8点的IDCT需要大概12个周期。在Blackfin中,使用双乘双加指令,可以在21个周期中完成一个8点的IDCT。因为Blackfin的主频是Trimedia的4倍多,单从指令方面看,执行一个8点IDCT,Blackfin是Trimedia的两倍。
在实际的MPEG-4解码中,需要执行的不是一个8点IDCT,而是一个8*8点的二维IDCT。在上面的对执行指令周期的计算时,一个隐含的前提假设是所有的数据都是在寄存器中。做一个8*8的二维IDCT至少需要32个32位寄存器。因为Trimedia中有128个寄存器,而Blackfin中只有8个数据寄存器,因此,在Blackfin中就不可避免要在2维IDCT执行中作从内存到寄存器的数据传递工作。虽然,在Trimedia和Blackfin中都使用了cache来减少这种数据传递对运算的影响,但这仍然很难完全避免。当cache miss发生时,CPU不得不停下来,等待数据的传入。如果把相同的工作频率为133Mhz的SDRAM与Trimedia和Blackfin连接,则一个Trimedia中的cache miss要耗掉3个时钟周期,而一个Blackfin中的cache miss则要用掉5个时钟周期。所以,虽然Blackfin的芯片主频很高,但因为它的寄存器很少,片内内存不可能存下所有的数据,cache miss就不可避免要发生,此时,他的计算能力就要大打折扣。
Cache miss对运算速度的影响非常大,尤其是在做motion compensation时,数据在内存和寄存器之间频繁的导入导出。当CPU工作频率和内存频率相差越大,cache miss的影响就越大。当使用adi提供的编译环境visual DSP调试程序并计算cycles时,cache miss是不计算在内的。因此,当把软件仿真的MPEG-4 decoder调试好,放在板子上测试时,就会发现解码时间明显变长,很是失望。
因为这两款DSP都是为音视频处理设计的,他们都有一些特殊的指令来完成音视频处理。但因为Blackfin只有两个MAC单元,同时只能做两个乘加,比Trimedia的4个乘加差了些。为了弥补这个不足,Blackfin为video 处理的处理设计了一些特殊的指令,可以很方便的完成motion estimation 和compensation。
在其他方面,Blackfin的二维DMA可以独立快速的完成图像的转置和裁减。Trimedia的图像协处理器可以任意改变图像的大小。他的每一条指令都有guard位,可以选择的执行。
由此可以看出,一个芯片的处理能力不只由他的工作频率决定,他的指令功能,每个指令的执行周期数,单周期指令数,寄存器个数,cache行为,内外工作频率差都对性能有不可忽视的影响。其他的例如外围数据传递方式,协处理器的功能也不可忽视。另外,有些DSP带有专用于写回cache,可以提高写回速度,减少cache冲突,提高效率。
第二个选择DSP的方面是看DSP的功耗是否符合要求。实际上,Trimedia和Blackfin这两块DSP在功耗上是不可比的,因为它的设计的针对领域不同。Trimedia是为数字电视,监控设备,机顶盒设计的。他的功耗很大,他的芯片面积大概是Blackfin的4倍,工作时需要加散热片。Blackfin是为手持设备设计的,功耗相当小,加一块1200ma的电池,可以连续播放MPEG-4文件8个小时。Trimedia不可能用在手持设备上,Trimedia最大的使用是在监控设备上,一块片子最多可以做4路CIF编码。Blackfin完全可以移植到手机上,在性价比上完全可以与OMAP一拼。
在软硬件的调试方面,现在多数的芯片都支持JTAG,调试工具也都大同小异,没太多说的。对于外围的接口,不同的芯片因为设计目的不同,也会有很大差异。还有,有些芯片会有一些bug,非常难查,这对应用厂商会产生致命影响。除了这些方面,还有一个不可忽视的方面是生产厂家对这块DSP的发展计划。千万不要在软硬件都开发好,等待产品上市赚钱时,芯片厂家停产了,那就没地方哭去了。
评论