選擇一片多媒體應(yīng)用處理器是一項(xiàng)復(fù)雜的工作。為了做出最好的選擇,需要先做好以下準(zhǔn)備。
● 全面地分析每個(gè)候選處理器的內(nèi)核結(jié)構(gòu)以及外圍設(shè)備。
● 扎實(shí)地理解視頻和音頻數(shù)據(jù)如何流過系統(tǒng)。
● 評估在規(guī)定功耗條件下可達(dá)到的處理水平。
選擇嵌入式媒體處理器的常見問題
開始選擇之前,還需要仔細(xì)地考慮以下一些問題。一旦能夠回答這些問題,你就能選擇到最適合的處理器了。
1 應(yīng)該只使用我喜歡、熟悉的處理器嗎?
我們究竟為什么要從一個(gè)系列的處理器換成另一個(gè)系列呢?最常見的原因是你現(xiàn)在的應(yīng)用比之前的應(yīng)用對處理器的要求更高了。如果應(yīng)用要求一下子提高了很多,那么你就可能不能夠繼續(xù)使用同一系列的處理器了。例如,適用于音頻應(yīng)用的處理器系列通常不包括適合于視頻應(yīng)用的外圍設(shè)備。類似地,如果你以前的處理器只能處理低分辨率(低幀頻)的視頻,那么你可能需要將處理器換成適合于高分辨率、高幀頻速率的處理器系列。
2 需要利用處理器的數(shù)據(jù)做些什么?
這個(gè)問題關(guān)系到評估處理器的性能。當(dāng)系統(tǒng)設(shè)計(jì)工程師評估一個(gè)處理器性能的時(shí)候,要分析的第一項(xiàng)指標(biāo)就是處理器每秒鐘處理的指令數(shù),即在每個(gè)處理器時(shí)鐘周期內(nèi)完成的操作數(shù)和計(jì)算單元的效率。由于人們對處理能力的要求超出了處理器內(nèi)核技術(shù)的進(jìn)步速度,到了關(guān)鍵點(diǎn)用單個(gè)處理器已經(jīng)不足以完成某些應(yīng)用。這是考慮使用雙核處理器的原因之一。增加一個(gè)處理器內(nèi)核不僅能夠有效地加倍處理器的計(jì)算能力,還能增加軟件跨用兩個(gè)內(nèi)核的靈活性,雙核處理器的功耗甚至低于雙倍頻率運(yùn)行的單核處理器。
3 從哪些不同的角度評估處理器?
有很多種用來比較處理器的基準(zhǔn)評估程序。然而,不同的供應(yīng)商傾向于使用不同的評估方法。此外,對于任意給定的應(yīng)用都有很多方法可以實(shí)現(xiàn),因此通常哪種性能基準(zhǔn)程序是“對的”并不明確。這樣就很難客觀地度量候選處理器的性能差別。因此,最好從以下幾個(gè)不同的角度評估處理器的性能。
● 中立的評估機(jī)構(gòu)——這些公司或者協(xié)會(huì)試圖為具體任務(wù)公司創(chuàng)造客觀的基準(zhǔn)評估程序。
● 供應(yīng)商提供的資料——供應(yīng)商提供的技術(shù)資料、應(yīng)用筆記和代碼示例可能是獲取比較信息的最簡單的方式。然而,不幸的是你將很難找到兩家供應(yīng)商使用統(tǒng)一的測試方法,這很大程度上是由于每個(gè)供應(yīng)商都想讓自己的處理器超過競爭對手。
● 基準(zhǔn)測試程序——如果你想得到正確的結(jié)果,自己測試!你可以在處理平臺(tái)上進(jìn)行一些基本性能測試來獲取數(shù)據(jù)流限制、內(nèi)存訪問等待時(shí)間以及處理器瓶頸等信息。
還有,你要意識(shí)到基準(zhǔn)評估程序并不一定反應(yīng)全面。有時(shí),稍微改動(dòng)算法消除潛在的不必要限制就能使性能有很大的不同。例如,對于一個(gè)定點(diǎn)處理器,真正的IEEE 85浮點(diǎn)仿真是很昂貴的。然而去掉一些限制(例如特例數(shù)表示法)就能夠大幅度提高浮點(diǎn)仿真的性能評估,但通常并不能測出影響一個(gè)應(yīng)用的功能。
4 系統(tǒng)帶寬夠用嗎?
人們常犯的一個(gè)錯(cuò)誤是過分簡單地評估系統(tǒng)所需要的帶寬。應(yīng)當(dāng)正確地分析每個(gè)具體數(shù)據(jù)流需要帶寬的總和。例如,對于視頻解碼器,你首先要考慮解碼所需要的讀取數(shù)據(jù)的帶寬,然后還必須考慮產(chǎn)生禎解碼順序所需要的各種數(shù)據(jù)通道。這可能涉及到內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之間多個(gè)緩沖器傳輸。最后,還得考慮通向輸出設(shè)備的顯示緩沖器。
分析完全部數(shù)據(jù)流之后,下一步是將這些單項(xiàng)帶寬要求合算成總體的系統(tǒng)預(yù)算。切記影響系統(tǒng)帶寬預(yù)算的幾個(gè)因素,包括預(yù)期的從DRAM接入方式帶來性能下降、基于內(nèi)部總線仲裁的數(shù)據(jù)流限制以及其他因素。
5 數(shù)據(jù)是怎樣進(jìn)出芯片的?
一定要仔細(xì)檢查處理器的外設(shè),確保它們適合你的應(yīng)用。合適的外設(shè)組合無須使用支持接口的外部電路從而節(jié)省時(shí)間和成本。當(dāng)然,你可能會(huì)想改變設(shè)計(jì)的連通性,因此最好選擇一款具有靈活且充足外設(shè)的處理器。
6 這種處理器符合便攜式應(yīng)用要求嗎?
電池供電系統(tǒng)規(guī)定了一整套全新的應(yīng)用要求。它們需要一種小封裝、低功耗的處理器。通常情況下,這種限制涉及到處理器性能和功耗之間的折中,所以顯然不適合多媒體應(yīng)用的處理器不會(huì)有發(fā)展前景,因?yàn)檫@樣的處理器在執(zhí)行不適合它們的任務(wù)卻要耗費(fèi)較大的功耗。
7 目標(biāo)應(yīng)用需要定點(diǎn)處理器還是浮點(diǎn)處理器?
如圖1所示,只需要少量的浮點(diǎn)功能的應(yīng)用的設(shè)計(jì)工程師被限制在“灰色區(qū)域”中,經(jīng)常被迫使用高成本的浮點(diǎn)處理器。然而今天一些定點(diǎn)處理器能夠以很高的時(shí)鐘速率運(yùn)行,只要有合適的體系機(jī)構(gòu),就可以像浮點(diǎn)處理器一樣工作。這種方法允許設(shè)計(jì)工程師使用低成本、低功耗的操作替代浮點(diǎn)運(yùn)算。當(dāng)然,這種方法并不適用于浮點(diǎn)密集型應(yīng)用,但是它為設(shè)計(jì)工程師提供了“繼續(xù)保留在灰色區(qū)域”中的誘人機(jī)會(huì)。
8 系統(tǒng)以后可能需要改變還是永遠(yuǎn)不變的?
如果有可能需要改變系統(tǒng)以便適應(yīng)新的媒體格式、用戶界面功能等類似的變化,那么我們就可能需要可編程器件(如DSP、MCU或者FPGA)。如果系統(tǒng)要求固定并且改變的可能性很小,那么固定功能的專用集成電路(ASIC)應(yīng)該是合適的選擇。
9 需要操作系統(tǒng)嗎?
由于需要開發(fā)工具,許多開發(fā)商都需要操作系統(tǒng)(OS)。如果一個(gè)公司有很多應(yīng)用都基于一個(gè)特定的OS,那么其必然有強(qiáng)烈的動(dòng)機(jī)來選擇一個(gè)支持其OS的處理器。如果你可以隨便選擇OS,那么需要考慮以下一些因素。你可能需要一個(gè)低時(shí)延、支持多任務(wù)處理,或者允許多個(gè)用戶同時(shí)訪問系統(tǒng)的處理器。相反,如果只需要提供基本的服務(wù),那么只需要一個(gè)輕量級的OS。當(dāng)然,許多應(yīng)用根本不需要OS,因此這一直不是主要考慮的問題。
10 怎樣利用處理器開發(fā)?
這是個(gè)非常重要的問題,因?yàn)橐惶讖?qiáng)大的開發(fā)工具能夠顯著地提高生產(chǎn)力、縮短開發(fā)和調(diào)試時(shí)間。重要的是,我們要知道這個(gè)問題像取決于最終應(yīng)用一樣取決于具體開發(fā)商的需求。許多公司利用某種開發(fā)工具包已經(jīng)建立起了經(jīng)驗(yàn)數(shù)據(jù)庫,并且可以按照他們的意愿建立大型的代碼庫供其使用。
當(dāng)你換到一個(gè)新的處理器平臺(tái)的時(shí)候,這些開發(fā)工具就變得特別重要。例如,一個(gè)強(qiáng)大的C/C++編譯器能夠很容易地將已有的源代碼轉(zhuǎn)移到一個(gè)新的平臺(tái)上,而且有多種優(yōu)化選擇(如速度、功率或者代碼密度的優(yōu)化)能幫助設(shè)計(jì)工程師實(shí)現(xiàn)他們的開發(fā)目標(biāo)而不用花很多精力掌握處理器指令集和結(jié)構(gòu)的要點(diǎn)。
11 如何快速驗(yàn)證軟件算法?
如前所述,用C或C++寫的代碼可以很容易地移植到一個(gè)新的處理器上。移植C代碼的主要問題是外設(shè)代碼通常對于每一系列處理器是不同的。不過,如果代碼使用設(shè)備驅(qū)動(dòng),可以簡化代碼變換,因?yàn)轵?qū)動(dòng)去除了具體的外設(shè)操作。
此外,當(dāng)你進(jìn)入新的嵌入式媒體處理器時(shí),你應(yīng)該檢查有什么可用的功能可以幫助你以更高的抽象度進(jìn)行編程。工程師在原型設(shè)計(jì)階段長期使用MATLAB/Simulink(Mathworks公司)或者LabVIEW(National Instruments公司)。這些工具能夠生成代碼實(shí)現(xiàn)一些嵌入式目標(biāo)。由于這些開發(fā)工具容易建立硬件原型所以支持選定的媒體處理器。此外,這些開發(fā)工具在將原型轉(zhuǎn)化成產(chǎn)品方面已經(jīng)有了長足的進(jìn)步。
12 如何輕松地建立一套完整的原型系統(tǒng)?
你還應(yīng)該考慮評估硬件。評估工具套件能夠評估所有外圍設(shè)備嗎?如果不能,那么你最終可能需要搭建專用硬件來測試外設(shè)。評估工具套件能夠與其他你感興趣的評估板一起使用嗎?例如,Micron和Omnivision公司提供能夠測試他們照相機(jī)的CMOS傳感器評估板。你也能把這些功能加入你的評估套件嗎?
13 愿意花多少錢?
這是一個(gè)重要的問題,但是你很可能得到一個(gè)錯(cuò)誤的答案,除非你考慮了整個(gè)系統(tǒng)的設(shè)計(jì)成本,即你需要考慮:處理器本身的成本、對支持芯片的需要、封裝的選擇以及可提供額外的一些處理能力為將來提供更大的擴(kuò)展空間。
14 能夠?qū)⑼还?yīng)商的其他設(shè)備用于我的系統(tǒng)嗎?
當(dāng)你選擇處理器的時(shí)候,你最好同時(shí)觀察一下你的系統(tǒng)信號(hào)鏈。處理器供應(yīng)商是不是還銷售連接處理器的外設(shè)?通常情況下,最好購買同一個(gè)供應(yīng)商的多個(gè)系統(tǒng)元件。
了解各種處理器
為了幫助你做出比較明智的選擇,讓我們再總結(jié)一下可使用的基本處理器,包括:專用集成電路(ASIC)、專用標(biāo)準(zhǔn)產(chǎn)品(ASSP)、現(xiàn)場可編程門陣列(FPGA)、微控制器(MCU)、數(shù)字信號(hào)處理器(DSP)、DSP/MCU 組合(分立或合一解決方案)。
1 ASIC和ASSP
固定功能的ASIC/ASSP是特定的嵌入式媒體處理應(yīng)用的一種最佳的解決方案,這些特定應(yīng)用包括想要最終在市場上獲取成功所必須的精密外圍設(shè)備。不過,其有限的靈活性阻礙了其適應(yīng)新功能和不斷發(fā)展的需求能力。這種靈活性的缺乏反過來又限制了客戶的選擇,因?yàn)閱为?dú)錄音機(jī)或者播放器需要有處理不同媒體格式的能力。
2 FPGA
與ASIC相比,F(xiàn)PGA的開發(fā)速度更快,因此就縮短了產(chǎn)品的上市時(shí)間。然而,F(xiàn)PGA與可編程處理解決方案和ASIC相比體積大、價(jià)格貴而且功耗大。因此,F(xiàn)PGA通常不用做便攜式多媒體應(yīng)用的主處理器,而通常是原型設(shè)計(jì)的最佳選擇,或者用在功耗和價(jià)格都不是主要選擇標(biāo)準(zhǔn)的最終系統(tǒng)中。
3 MCU
32位 MCU在嵌入式媒體處理領(lǐng)域是最受歡迎的。要了解其越來越受歡迎的原因,首先應(yīng)了解8位MCU在這些領(lǐng)域中并不具備保證實(shí)時(shí)操作所需要的帶寬和計(jì)算能力。這并不是說8位MCU沒有用,相反它們在從汽車到照相機(jī)等多種市場中很受歡迎。它們主要的賣點(diǎn)是超低功耗、超小封裝、優(yōu)良的代碼密度和非常便宜的價(jià)格(遠(yuǎn)低于2美元/片)。
邏輯上似乎16位MCU(起價(jià)約為2美元/片)應(yīng)該替代8位MCU,然而16 位MCU通常缺乏處理多媒體處理器所需要的能力。此外它還受到存儲(chǔ)器尋址范圍小的限制。
在嵌入式媒體處理器應(yīng)用中,MCU可以起到很多不同的作用。對于低端系統(tǒng)它們可以作為單系統(tǒng)處理器,主要進(jìn)行視頻解碼、中等顯示分辨率(通常為QVGA或者低于QVGA)的顯示以及比較簡單的視頻格式(如MPEG Simple Profile,不能處理H.264)。對于中高檔系統(tǒng),需要一個(gè)DSP或者其他合適的處理器來處理高清晰度和更復(fù)雜的格式。不過,在這些應(yīng)用中MCU仍然可以用作系統(tǒng)控制器,運(yùn)行一個(gè)操作系統(tǒng)并且管理整個(gè)系統(tǒng)的任務(wù)。此外,由于其豐富的外設(shè)組合,它們通常有助于連接媒體處理器和外部世界。
4 DSP
DSP適合用于數(shù)據(jù)緩沖器中高性能數(shù)據(jù)處理,如在多媒體應(yīng)用中流行的數(shù)據(jù)搬運(yùn)。為了達(dá)到DSP的性能目標(biāo)通常需要編寫優(yōu)化的匯編代碼,因?yàn)镈SP算法通常裝在小型、低時(shí)延內(nèi)存中,代碼密度通常不是首要考慮的因素。
5 分立DSP+MCU
在多媒體處理領(lǐng)域,DSP并不是理想的獨(dú)立處理器。它很適合數(shù)學(xué)程序,而不太適合監(jiān)視控制。因此,基于DSP的多媒體處理器通常要依賴速度比較慢的MCU(更適合控制)來提供諸如用戶界面和OS等功能。
現(xiàn)在出現(xiàn)了將MCU和DSP合并到一個(gè)系統(tǒng)設(shè)計(jì)方案的不同方法。對于初學(xué)者,你可能總是使用分立的DSP和MCU芯片來設(shè)計(jì)。雖然這樣的成本比較高并且會(huì)占用相當(dāng)大的印制電路板面積,但是可以根據(jù)系統(tǒng)需要最靈活地選擇每顆芯片的尺寸。另外,有一些芯片制造商采取了不同的多內(nèi)核方法將分立的DSP和MCU處理器封裝在一個(gè)模塊內(nèi)。
MCU和DSP采用分立方案有幾點(diǎn)好處。第一,DSP和MCU的開發(fā)商只需要各自完成自己的設(shè)計(jì)。
第二,MCU和DSP開發(fā)團(tuán)隊(duì)分開的原因是兩種處理器有著兩種不同的指令集。
然而,“DSP+MCU”合一方案有一個(gè)缺陷,就是很難化分MCU控制功能和DSP計(jì)算功能。
與快速32 位MCU并行發(fā)展的一個(gè)新興趨勢是推動(dòng)整合更多DSP功能的發(fā)展,如將MAC單元合并到MCU中。然而,這個(gè)想法只適合用于簡單信號(hào)處理應(yīng)用,因?yàn)镸CU的時(shí)鐘速度和運(yùn)算體系結(jié)構(gòu)從根本上并不能很好地適應(yīng)多媒體數(shù)據(jù)搬運(yùn)速率的要求。因此,這些“增強(qiáng)DSP”的MCU并不是適合高級媒體處理應(yīng)用的理想平臺(tái)。
6 會(huì)聚處理器
“會(huì)聚處理器”兼?zhèn)淞薓CU和DSP的功能。尤其應(yīng)該知道的是,會(huì)聚處理器并不是增強(qiáng)控制功能的DSP,也不是擴(kuò)展DSP功能的MCU。會(huì)聚處理器適合實(shí)時(shí)多媒體數(shù)據(jù)流的運(yùn)算和完成控制任務(wù)兩種功能。ADI公司的Blackfin處理器就是這種體系結(jié)構(gòu)的典型例子。
與DSP類似,會(huì)聚處理器通常具有高時(shí)鐘率和每處理單元低功耗(mW/MMACS)的特點(diǎn)。
會(huì)聚處理器也能簡化開發(fā)過程。相比之下,會(huì)聚處理器允許利用單一工具鏈在一個(gè)統(tǒng)一的平臺(tái)上開發(fā)代碼。因此,開發(fā)商只需要掌握一種指令集并且保存一種代碼庫在一種OS上運(yùn)行。
總之,為嵌入式媒體處理系統(tǒng)選擇合適的處理器有多種方案。通過選擇嵌入式媒體處理器常見問題的解答和對每種處理器各自優(yōu)缺點(diǎn)的了解,會(huì)幫助你做出一個(gè)能取得最終成功的明智選擇。