多媒體編解碼芯片的選擇策略
本文對(duì)音視頻產(chǎn)品的芯片選擇作了分析,從芯片的指令集,主頻,cache,DMA等方面進(jìn)行衡量,給大家在選擇軟解碼芯片時(shí)提供一些幫助。
現(xiàn)在有許多電子產(chǎn)品需要有多媒體編解碼芯片的支持紓夯ズ校叨聳只?,PMP。在設(shè)計(jì)這些產(chǎn)品時(shí),選擇好一款DSP芯片,成為了產(chǎn)品成敗的一個(gè)關(guān)鍵。如何選擇芯片?這是一個(gè)非常復(fù)雜的問(wèn)題,涉及到方方面面。我把我對(duì)這個(gè)問(wèn)題認(rèn)識(shí)在此總結(jié)一下。
先從了解芯片的處理能力說(shuō)起。假如我們要讓我們的產(chǎn)品做到MPEG-4 D1實(shí)時(shí)解碼,不考慮價(jià)格,功耗,接口等其他因素,只談處理能力。我們以Philips 的Trimedia 1300和ADI的Blackfin533為例。人們談起芯片的處理能力時(shí),總是首先想到主頻。Trimedia1300的主頻是133Mhz,而Blackfin533的主頻高達(dá)600Mhz。Blackfin的主頻比Trimedia要高得多。
當(dāng)年Intel和AMD爭(zhēng)奪PC芯片市場(chǎng)時(shí),Intel的主頻高于AMD,后來(lái)AMD打出了主頻*指令數(shù)/周期的牌,引入了新的概念。Trimedia每周期可以執(zhí)行5條指令,因?yàn)門rimedia使用了VLIW,每條指令32位。其中兩條可以做乘加運(yùn)算,另外三條可以用于簡(jiǎn)單的算術(shù)邏輯運(yùn)算或存取數(shù)據(jù)。于是,2*133+3*133=266+400。而Blackfin,每個(gè)周期最多可以執(zhí)行3條指令,其中只有一條是做乘加運(yùn)算,另兩條都是存取操作。算作1*600+2*600=600+1200。Blackfin中的乘加指令的執(zhí)行時(shí)間與Trimedia中的大致相同,都是3個(gè)時(shí)鐘周期后得到結(jié)果。單從每秒的DSP運(yùn)算指令數(shù)來(lái)看,Blackfin是Trimedia的兩倍多。每秒的算術(shù)邏輯運(yùn)算和控制指令數(shù),Blackfin是Trimedia的三倍。從簡(jiǎn)單算術(shù)邏輯運(yùn)算和控制指令來(lái)看,Blackfin是比Trimedia稍強(qiáng)些。
下面以視頻處理中最典型的IDCT運(yùn)算為例,來(lái)比較這兩款芯片的處理能力。在Trimedia中,使用IFIR16, DUALUCLIPI, PACK16MSB,MERGEDUAL16LSB這四個(gè)DSP指令,一個(gè)8點(diǎn)的IDCT需要大概12個(gè)周期。在Blackfin中,使用雙乘雙加指令,可以在21個(gè)周期中完成一個(gè)8點(diǎn)的IDCT。因?yàn)锽lackfin的主頻是Trimedia的4倍多,單從指令方面看,執(zhí)行一個(gè)8點(diǎn)IDCT,Blackfin是Trimedia的兩倍。
在實(shí)際的MPEG-4解碼中,需要執(zhí)行的不是一個(gè)8點(diǎn)IDCT,而是一個(gè)8*8點(diǎn)的二維IDCT。在上面的對(duì)執(zhí)行指令周期的計(jì)算時(shí),一個(gè)隱含的前提假設(shè)是所有的數(shù)據(jù)都是在寄存器中。做一個(gè)8*8的二維IDCT至少需要32個(gè)32位寄存器。因?yàn)門rimedia中有128個(gè)寄存器,而Blackfin中只有8個(gè)數(shù)據(jù)寄存器,因此,在Blackfin中就不可避免要在2維IDCT執(zhí)行中作從內(nèi)存到寄存器的數(shù)據(jù)傳遞工作。雖然,在Trimedia和Blackfin中都使用了cache來(lái)減少這種數(shù)據(jù)傳遞對(duì)運(yùn)算的影響,但這仍然很難完全避免。當(dāng)cache miss發(fā)生時(shí),CPU不得不停下來(lái),等待數(shù)據(jù)的傳入。如果把相同的工作頻率為133Mhz的SDRAM與Trimedia和Blackfin連接,則一個(gè)Trimedia中的cache miss要耗掉3個(gè)時(shí)鐘周期,而一個(gè)Blackfin中的cache miss則要用掉5個(gè)時(shí)鐘周期。所以,雖然Blackfin的芯片主頻很高,但因?yàn)樗募拇嫫骱苌?,片?nèi)內(nèi)存不可能存下所有的數(shù)據(jù),cache miss就不可避免要發(fā)生,此時(shí),他的計(jì)算能力就要大打折扣。
Cache miss對(duì)運(yùn)算速度的影響非常大,尤其是在做motion compensation時(shí),數(shù)據(jù)在內(nèi)存和寄存器之間頻繁的導(dǎo)入導(dǎo)出。當(dāng)CPU工作頻率和內(nèi)存頻率相差越大,cache miss的影響就越大。當(dāng)使用adi提供的編譯環(huán)境visual DSP調(diào)試程序并計(jì)算cycles時(shí),cache miss是不計(jì)算在內(nèi)的。因此,當(dāng)把軟件仿真的MPEG-4 decoder調(diào)試好,放在板子上測(cè)試時(shí),就會(huì)發(fā)現(xiàn)解碼時(shí)間明顯變長(zhǎng),很是失望。
因?yàn)檫@兩款DSP都是為音視頻處理設(shè)計(jì)的,他們都有一些特殊的指令來(lái)完成音視頻處理。但因?yàn)锽lackfin只有兩個(gè)MAC單元,同時(shí)只能做兩個(gè)乘加,比Trimedia的4個(gè)乘加差了些。為了彌補(bǔ)這個(gè)不足,Blackfin為video 處理的處理設(shè)計(jì)了一些特殊的指令,可以很方便的完成motion estimation 和compensation。
在其他方面,Blackfin的二維DMA可以獨(dú)立快速的完成圖像的轉(zhuǎn)置和裁減。Trimedia的圖像協(xié)處理器可以任意改變圖像的大小。他的每一條指令都有g(shù)uard位,可以選擇的執(zhí)行。
由此可以看出,一個(gè)芯片的處理能力不只由他的工作頻率決定,他的指令功能,每個(gè)指令的執(zhí)行周期數(shù),單周期指令數(shù),寄存器個(gè)數(shù),cache行為,內(nèi)外工作頻率差都對(duì)性能有不可忽視的影響。其他的例如外圍數(shù)據(jù)傳遞方式,協(xié)處理器的功能也不可忽視。另外,有些DSP帶有專用于寫回cache,可以提高寫回速度,減少cache沖突,提高效率。
第二個(gè)選擇DSP的方面是看DSP的功耗是否符合要求。實(shí)際上,Trimedia和Blackfin這兩塊DSP在功耗上是不可比的,因?yàn)樗脑O(shè)計(jì)的針對(duì)領(lǐng)域不同。Trimedia是為數(shù)字電視,監(jiān)控設(shè)備,機(jī)頂盒設(shè)計(jì)的。他的功耗很大,他的芯片面積大概是Blackfin的4倍,工作時(shí)需要加散熱片。Blackfin是為手持設(shè)備設(shè)計(jì)的,功耗相當(dāng)小,加一塊1200ma的電池,可以連續(xù)播放MPEG-4文件8個(gè)小時(shí)。Trimedia不可能用在手持設(shè)備上,Trimedia最大的使用是在監(jiān)控設(shè)備上,一塊片子最多可以做4路CIF編碼。Blackfin完全可以移植到手機(jī)上,在性價(jià)比上完全可以與OMAP一拼。
在軟硬件的調(diào)試方面,現(xiàn)在多數(shù)的芯片都支持JTAG,調(diào)試工具也都大同小異,沒(méi)太多說(shuō)的。對(duì)于外圍的接口,不同的芯片因?yàn)樵O(shè)計(jì)目的不同,也會(huì)有很大差異。還有,有些芯片會(huì)有一些bug,非常難查,這對(duì)應(yīng)用廠商會(huì)產(chǎn)生致命影響。除了這些方面,還有一個(gè)不可忽視的方面是生產(chǎn)廠家對(duì)這塊DSP的發(fā)展計(jì)劃。千萬(wàn)不要在軟硬件都開發(fā)好,等待產(chǎn)品上市賺錢時(shí),芯片廠家停產(chǎn)了,那就沒(méi)地方哭去了。
評(píng)論