多核與多執(zhí)行緒的嵌入式系統(tǒng)解決方案
在嵌入式裝置中建置多核心(包含同質(zhì)或異質(zhì))以及多執(zhí)行緒技術(shù),的確能帶來諸多效益,尤其是改進(jìn)系統(tǒng)效能方面最為明顯。
盡管RISC嵌入式技術(shù)所面臨的挑戰(zhàn)越來越多,但是在維持以往嵌入式軟件資源兼容性的前提之下,能夠改善其未來適用性,并且有效提升新系統(tǒng)的效能表現(xiàn),使其不失為良好的解決方案。
應(yīng)用決定多核或多緒
多核心與多執(zhí)行緒在效能表現(xiàn)上有其幫助,但是效能與這些技術(shù)的內(nèi)建其實(shí)并沒有絕對關(guān)系,會(huì)造成這樣的原因主要是應(yīng)用環(huán)境的需求。以手機(jī)為例,整合于手機(jī)內(nèi)的SoC芯片雖然是屬于多核心架構(gòu)的一環(huán),但是手機(jī)采用的SoC芯片多為應(yīng)用處理器,其整合的核心并非完全屬于同性質(zhì)架構(gòu),同質(zhì)多核心在嵌入式系統(tǒng)實(shí)際應(yīng)用上的案例其實(shí)非常少。
而多執(zhí)行緒處理器在汽車電子或者是嵌入式網(wǎng)絡(luò)環(huán)境中扮演著重要的角色,但是也有廠商利用數(shù)顆多執(zhí)行緒芯片組成多核心與多執(zhí)行緒兼?zhèn)涞倪\(yùn)算架構(gòu),換句話說,兩者并不是單純選邊站而已,根據(jù)實(shí)際應(yīng)用的需求,自行搭配或開發(fā)最終解決方案也成了許多廠商面對問題時(shí)的態(tài)度。這也代表著,在選擇嵌入式系統(tǒng)的基礎(chǔ)架構(gòu)時(shí),處理器本身只是應(yīng)用的1個(gè)環(huán)節(jié),如何能夠針對應(yīng)用將所需的效能最大化,必須依照產(chǎn)品的不同而有各種考慮。
不只是意氣的技術(shù)之爭
真正的同質(zhì)多核心架構(gòu)-ARM11 MPCore
在嵌入式多核心應(yīng)用處理器這方面的領(lǐng)域,目前以ARM為技術(shù)領(lǐng)導(dǎo)者,雖然該公司本身并無晶圓廠,而純粹以IP的形 式出售處理器架構(gòu),由于定位正確,在短短的數(shù)年間取得了極大的市場地位,全世界絕大多數(shù)的手持式裝置都嵌入了ARM的處理器技術(shù)。
以其技術(shù)的發(fā)展歷程來看,早期的ARM7架構(gòu)本身能夠滿足一些音效編譯碼應(yīng)用。而在增加16位飽和運(yùn)算指令和提高ARM9核心速度后,不僅能完成音效編譯碼工作,以及以大約80 MHz、15 畫格/秒速度下的MPEG-4 QCIF(4分之1 CIF分辨率)編碼。在ARM11 V6指令集架構(gòu)上增加速度和SIMD指令后,就可以實(shí)現(xiàn)VGA分辨率的 H.264 編碼。再進(jìn)一步到最新的Cortex A8與其基于64位SIMD架構(gòu)的Neon加速器搭配工作之下,就可以完成 30 畫格/秒的 MPEG-4 VGA 編碼,所花周期只有 ARM11 的一半。在實(shí)際情況下,該工作需要大約 300 MHz。為了使這些選項(xiàng)對使用者更加可行,ARM 正在開發(fā)一個(gè)并行編譯器原型,它可以提取資料并行機(jī)制,并用 SIMD 硬件來使用它。
圖說:ARM11 MPCore的結(jié)構(gòu)示意圖。
ARM11 MPCore乃是在ARM11核心的基礎(chǔ)組成,架構(gòu)上屬于V6指令體系。根據(jù)不同應(yīng)用的需要,MPCore可以被配置為1~4個(gè)處理器的組合方式,根據(jù)官方表示,其最高性能約可達(dá)到2600 Dhrystone MIPS的程度。MPCore是標(biāo)準(zhǔn)的同質(zhì)多核心處理器,,組成MPCore的是4個(gè)基于ARM11架構(gòu)的處理器核心,由于多核心設(shè)計(jì)的優(yōu)點(diǎn)是在頻率不變的情況下讓處理器的性能獲得明顯提升,因此可望在多任務(wù)應(yīng)用中擁有良好的表現(xiàn),這一點(diǎn)很適合未來家庭消費(fèi)電子的需要。例如,機(jī)上盒在錄制多個(gè)頻道電視節(jié)目的同時(shí),還可通過因特網(wǎng)收看數(shù)字視訊點(diǎn)播節(jié)目、車內(nèi)導(dǎo)航系統(tǒng)在提供導(dǎo)航功能的同時(shí),仍然有余力可以向后座乘客播放各類視訊娛樂串流等。
在這類應(yīng)用環(huán)境下,多核心結(jié)構(gòu)的嵌入式處理器能夠表現(xiàn)出極強(qiáng)的性能優(yōu)勢。根據(jù)原廠數(shù)據(jù),MPCore多處理器可支持高達(dá)4路共享快取結(jié)構(gòu)的對稱多處理器 (four-way cache coherent symmetric multiprocessing,SMP)、或者是4路不對稱多處理器(four-way asymmetric multiprocessing,AMP)以及4路兼有對稱/不對稱的混合式多處理器系統(tǒng)。其設(shè)計(jì)的高靈活設(shè)計(jì)在理論上可以滿足各種跨領(lǐng)域應(yīng)用對運(yùn)算性能的彈性需求,確保系統(tǒng)可獲得一流的響應(yīng)能力或數(shù)據(jù)吞吐量。
不過ARM11 MPCore早在2004年就已經(jīng)發(fā)布,2005年正式加入授權(quán)業(yè)務(wù),截至目前為止,采用該處理器的產(chǎn)品集中于家電與汽車電子方面,但是數(shù)量并不算多,是業(yè)界對于處理器運(yùn)算能量的需求尚未顯現(xiàn)?據(jù)了解,在汽車電子方面,汽車應(yīng)用的微處理器要求越來越高,但是過去的單核心基本上還能滿足一般汽車的使用,而隨著越來越多的電子輔助裝置整合進(jìn)汽車中,其間所需處理的工作也越來越繁雜,已經(jīng)遠(yuǎn)超過傳統(tǒng)汽車用微控制器所能負(fù)擔(dān)的程度,因此可預(yù)期的是,未來數(shù)年應(yīng)該會(huì)有越來越多汽車廠商采用類似的多核心架構(gòu)來取得合理的系統(tǒng)反應(yīng)速度。
至于在家電應(yīng)用方面,其實(shí)需要用到如此復(fù)雜核心的產(chǎn)品不多,在應(yīng)用最多的影音產(chǎn)品方面,其實(shí)大部分的廠商都采用專用的硬件譯碼電路或者是DSP來進(jìn)行編譯碼的動(dòng)作,直接采用多核心處理器來進(jìn)行編譯碼動(dòng)作其實(shí)效益不明顯。而在行動(dòng)應(yīng)用方面,其實(shí)功耗依然是行動(dòng)產(chǎn)品廠商所最注重的,即便ARM11 MPCore能夠達(dá)到極低的多核心同時(shí)工作功耗,但是依然無法與單核心版本相比,因此在行動(dòng)應(yīng)用上能見度不高。但是隨著Intel推行 MID(Mobile Internet Device),類似的產(chǎn)品可望成為ARM11 MPCore架構(gòu)的極大機(jī)會(huì),因?yàn)榧幢闶荢tealey的下一代45nm產(chǎn)品Silverthorne,其功耗依然比MPCore高了5倍以上(加上芯片組的總功耗),且僅為單核心架構(gòu),在應(yīng)用靈活度上明顯不如MPCore架構(gòu),不過有1點(diǎn)值得注意的是,Silverthorne挾帶了龐大的X86軟件資源,ARM等基于RISC體系處理器在這方面要明顯屈居于下風(fēng)。
在RISC架構(gòu)的類MID產(chǎn)品上,也可以考慮ARM最新的處理器架構(gòu),也就是Cortex-A8,該處理器基于最新的ARM v7體系,并且整合了1個(gè)64位DSP處理單元,對串流應(yīng)用具備有極佳的加速能力,因此非常適用于類MID掌上型裝置的多媒體、甚至是游戲應(yīng)用。嚴(yán)格上來說,Cortex-A8也能算是多核心體系之一,但是其架構(gòu)與MPCore之類的同質(zhì)核心不同,而是采用1個(gè)通用處理器核心,并搭配個(gè)DSP核心而成的異質(zhì)多核心處理器,相信這方面ARM向德州儀器公司借鑒了不少應(yīng)用處理器的開發(fā)經(jīng)驗(yàn)。
圖說:Cortex-A8的結(jié)構(gòu)示意圖。
事實(shí)上,NOKIA的N770/N800便已經(jīng)具備了MID的所有功能,而且更為輕薄短小,但遺憾的是,搭配原廠的1500mAh充電電池,其持續(xù)使用時(shí)間僅能達(dá)到3.5個(gè)小時(shí),與一般市面上的UMPC產(chǎn)品相去不遠(yuǎn),稍遜于Intel的MID產(chǎn)品,采用ARM體系處理器(N800采用基于 ARM1136J(F)-S核心的i.MX31應(yīng)用處理器)的省電優(yōu)勢在此并沒有被凸顯出來,不過待機(jī)時(shí)間比之MID要略長。
堅(jiān)持多執(zhí)行緒路線的MIPS
或許可以視為意氣之爭,MIPS堅(jiān)持與ARM實(shí)行不同的技術(shù)發(fā)展策略,ARM發(fā)展Multi Processor(MP,多處理器核心),而MIPS則往Multi Thread(MT,多執(zhí)行緒)發(fā)展,就應(yīng)用概念上來看,MP與MT技術(shù)兩者均致力于提高處理器的整體性能,兩者都可以減少任何應(yīng)用當(dāng)前軟件執(zhí)行緒的處理時(shí)間。但這兩種技術(shù)采用了不同的硬件結(jié)構(gòu)來減少處理時(shí)間,因此對于任意的特定軟件程序代碼來說,MP與MT對處理器性能的提升著程度上的不同。
但是會(huì)造成這樣的結(jié)果,其實(shí)2家IP廠商的研發(fā)概念上有很大的關(guān)連。由于MT技術(shù)著重于處理單元、內(nèi)存控制器的有效利用,在最大程度上節(jié)省晶體管的使用,并且在此前提之下往上提升效能表現(xiàn),這與MP架構(gòu)中,系統(tǒng)效能需求有多少,就復(fù)制多少個(gè)核心塞進(jìn)芯片中的浪費(fèi)作法完全不同,MP可以取得較為全面的應(yīng)用廣度,但是稍嫌鋪張浪費(fèi),相較之下,MT在成本與效能方面的平衡性表現(xiàn)要來得高明些。
許多人將MP與MT相提并論,而在某種程度上,這樣的比較其實(shí)并沒有太大意義,因?yàn)榛驹O(shè)計(jì)概念已經(jīng)天差地遠(yuǎn),架構(gòu)上的采用自然無法一概而論。在技術(shù)上,為了實(shí)現(xiàn)硬件多重處理,兩者對于軟件最佳化的復(fù)雜度方面其實(shí)都同樣比單核心架構(gòu)要來得復(fù)雜許多,而為了要盡量避免處理單元與內(nèi)存控制器在資源分配上的沖突,MT架構(gòu)或許會(huì)來得更為復(fù)雜一些,但MP架構(gòu)其實(shí)在某些程度上也會(huì)面臨同樣的問題(特別是共享高速緩存與內(nèi)存控制器的多核心架構(gòu))。不論是在指令層級,或是執(zhí)行緒層級的多任務(wù),都與傳統(tǒng)單核心單執(zhí)行緒的程序?qū)懽鞣绞脚c最佳化方法大異其趣。
一般的MT架構(gòu)設(shè)計(jì)方面,單一處理器核心在運(yùn)算的過程中,常會(huì)有內(nèi)存存取速度跟不上處理器頻率增加的問題,進(jìn)而導(dǎo)致高速緩存錯(cuò)失(miss)時(shí),形成執(zhí)行管線長時(shí)間閑置的狀況,我們都了解,1個(gè)系統(tǒng)中的儲(chǔ)存單元,最快速的要屬處理器中的緩存器,其次是L1高速緩存、L2快取記體,最后則是主存儲(chǔ)器,其速度的差別可達(dá)數(shù)千倍以上,處理器要取得指令或數(shù)據(jù)時(shí),必先從高速緩存中提取,儲(chǔ)存于緩存器中進(jìn)行運(yùn)算,最終結(jié)果再回存到高速緩存,并在空閑時(shí)填回主存儲(chǔ)器,當(dāng)處理器向高速緩存發(fā)出存取需求,卻發(fā)現(xiàn)所需要的數(shù)據(jù)不在高速緩存中,這是就必須花費(fèi)大筆的時(shí)間前往主存儲(chǔ)器尋找并讀取,這其間所浪費(fèi)的時(shí)間可能會(huì)高達(dá)數(shù)十個(gè)頻率周期,處理管線在等待數(shù)據(jù)填補(bǔ)的時(shí)間,就形成了閑置狀態(tài)。
如果利用多執(zhí)行緒處理概念,適時(shí)的將其它執(zhí)行緒拉過來填補(bǔ)已經(jīng)造成的閑置狀態(tài),其速度的增長甚至可以達(dá)到非常明顯的地步,雖不至于倍增,但是由20%到40%都有可能。而要達(dá)成這樣的目的,在晶體管數(shù)目方面只需增加約15%的程度即可,若以一般同樣架構(gòu)的單核心處理器在變更為雙核心的效能增長程度約為40%到70%左右的程度,而晶體管數(shù)目幾乎要倍增的情況,就可看出MIPS的MT技術(shù)的效率有多高了。但是MT技術(shù)有個(gè)嚴(yán)重的缺陷,那就是多執(zhí)行緒工作處理過程中,過于頻繁的上下文切換(context switch)將有可能會(huì)造成極大的效能耗損。
圖說:MIPS 74K處理器結(jié)構(gòu)示意圖。
MIPS公司有大產(chǎn)品線,分別是單執(zhí)行緒的24K與74K系列,以及多執(zhí)行緒的34K系列。74K甫于今年六月發(fā)表,在65nm制程下,其運(yùn)作頻率已經(jīng)超越1GHz,采用通用處理器搭配DSP核心的設(shè)計(jì),不過總體效能與功耗表現(xiàn)略遜于類似架構(gòu)的ARM Cortex-A8。多執(zhí)行緒處理器的主角—34K系列,該處理器核心能設(shè)定1或2個(gè)虛擬處理組件(VPE)以及最多5個(gè)執(zhí)行緒內(nèi)容(TC),提供充分的可配置彈性。但是講白了,其實(shí)兩個(gè)VPE的作法就是將單顆核心模擬為2個(gè)核心,使34K核心能同時(shí)執(zhí)行兩個(gè)獨(dú)立的操作系統(tǒng),或是一個(gè)雙路的對稱式多重處理器操作系統(tǒng)。
MIPS32 34Kc核心采用90nm制程,最差操作狀態(tài)下頻率為500MHz。核心尺寸為2.1mm2,而核心部分耗電量為0.56mW/MHz@1.0V。目前該系列核心共包含34Kc、34Kf、34Kc Pro以及34Kf Pro。這些核心具備完全兼容于IEEE 754規(guī)格的硬件浮點(diǎn)運(yùn)算處理器。其中34Kc Pro與34Kf Pro核心具備CorExtend功能,能讓SoC研發(fā)業(yè)者自行擴(kuò)增指令。
圖說:MIPS 34K處理器結(jié)構(gòu)示意圖。
根據(jù)MIPS自家的估算,與同家族的24K系列產(chǎn)品相較起來,34K在2個(gè)VPE以及2個(gè)TC的組態(tài)設(shè)定之下,可以將效能提升到超越24K處理器 60%的程度,芯片面積大略增加14%,而因?yàn)槎鄨?zhí)行緒作業(yè)所導(dǎo)致的高速緩存失誤比率則是由4.41%增加到5.16%,算是在可接受的范圍之內(nèi)。不過與單核心74K相較起來,34K反而更不適用于網(wǎng)絡(luò)或多媒體串流的密集計(jì)算環(huán)境,而VPE和TC單元的增加,同樣也會(huì)加大芯片的面積。雖說MT技術(shù)的局限性,使其不適合用于多媒體編譯碼應(yīng)用上,但是在汽車電子方面,已經(jīng)有廠商成功利用2顆34K處理器組成雙核多執(zhí)行緒處理器,并提供的相當(dāng)優(yōu)秀的執(zhí)行效能,有此成功的前例可循,我們也可以預(yù)測,未來MIPS將會(huì)有更多結(jié)合多核與多執(zhí)行緒的解決方案出現(xiàn),不過這么一來,在成本調(diào)配方面的優(yōu)勢還能剩下多少,就由方案提供廠商去傷腦筋吧。