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