本文对音视频产品的芯片选择作了分析,从芯片的指令集,主频,cache,DMA等方面进行衡量,给大家在选择软解码芯片时提供一些帮助。
现在有许多电子产品需要有多媒体编解码芯片的支持,例如:机顶盒,高端手机,PMP。在设计这些产品时,选择好一款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的发展计划。千万不要在软硬件都开发好,等待产品上市赚钱时,芯片厂家停产了,那就没地方哭去了。
王凯
北京飞利浦软件公司工程师
文章评论(0条评论)
登录后参与讨论