迎 九
摘要:本文介紹了時(shí)下關(guān)于多核的最新話題,包括多核和虛擬化之間的關(guān)系,以解多處理器和多核的不同之處,乃至當(dāng)今多操作系統(tǒng)下的supervisor和HyPcrvisor之間的關(guān)系,最后簡(jiǎn)要介紹了風(fēng)河公司在多核和多操作系統(tǒng)方面的技術(shù)戰(zhàn)略。
關(guān)鍵詞:多核;虛擬化;多操作系統(tǒng);supervisor;Hypervisor
多核和虛擬化的關(guān)系充滿詭辯
多核和虛擬化如何幫助客戶快速、低成本地進(jìn)行開發(fā)?據(jù)風(fēng)河公司CTO(首席技術(shù)官)Tomas Evensen介紹,其實(shí)這是充滿詭辯的問(wèn)題,如果你要想用多核來(lái)提高效率,可能就需要多功能處理,因此復(fù)雜性提高,需要承擔(dān)更多的風(fēng)險(xiǎn),所以這是機(jī)遇與風(fēng)險(xiǎn)并存的狀況。過(guò)去人們只是通過(guò)多任務(wù)處理或者并行處理,然而在開放資源系統(tǒng)中,可能就會(huì)遇到像風(fēng)河VxWorks、Moblinf注:Intel力推的開源組織等體系,更加復(fù)雜,這時(shí)可以采用虛擬化和中間軟件等。當(dāng)然,這樣運(yùn)行時(shí)對(duì)于客戶可能更加高效,但也更加復(fù)雜化。
在未來(lái)三到五年中,多核虛擬化在嵌入式方面的應(yīng)用主要還是面向計(jì)算量比較高的多核客戶。是否采用多核虛擬化關(guān)乎整合還是分開的問(wèn)題,如果你不想用單核,你當(dāng)然可以不用,但多核也更加復(fù)雜,即便說(shuō)用兩核也可能會(huì)涉及到整合問(wèn)題。所以你可以選用單CPU JHypervisor(如圖1,是由少量代碼組成特種OS,是在現(xiàn)有操作系統(tǒng)之下稱為hypervisor的一層,這層實(shí)現(xiàn)對(duì)多操作系統(tǒng)和虛擬化的支持。例如對(duì)于風(fēng)河來(lái)說(shuō),這層可以是Vxworks或風(fēng)河Linux)或多核的Supervisor(在多核和多操作系統(tǒng)中間有虛擬化的一層配置Supervisor,它比Hypervisor的功能低一些,因?yàn)樗恍枰摂MCPU),也可以兩者兼用,用的時(shí)候你可以把它們整合在一起,也可以把兩者分開。
從多處理器到多核
為了更清楚地理解多操作系統(tǒng)、多核與虛擬化趨勢(shì),需回到多處理器系統(tǒng)和多核的關(guān)系上。多處理器離多核的應(yīng)用只有一步之遙。不過(guò),多核與多處理器也有不少區(qū)別,其中有一些挑戰(zhàn)你必須面對(duì)。首先,多處理器系統(tǒng)中的軟件并不能直接拿到多核系統(tǒng)中運(yùn)行。
將原本分散的多處理器系統(tǒng)整合為單一多核系統(tǒng)并不能通過(guò)簡(jiǎn)單地將多個(gè)系統(tǒng)簡(jiǎn)單地壓縮在一個(gè)多核系統(tǒng)中來(lái)實(shí)現(xiàn)。系統(tǒng)架構(gòu)的變化使多個(gè)系統(tǒng)之間的并行運(yùn)行和通信協(xié)調(diào)方式發(fā)生了不小的變化。
在采用多核技術(shù)的時(shí)候,操作系統(tǒng)管理內(nèi)核的基本方式有兩種:第一種是對(duì)稱多處理(SMP),這是由一個(gè)操作系統(tǒng)來(lái)控制多個(gè)內(nèi)核。只要有一個(gè)內(nèi)核空閑可用,操作系統(tǒng)就在線程等待隊(duì)列中分配下一個(gè)線程給這個(gè)空閑內(nèi)核來(lái)運(yùn)行。第二種是非對(duì)稱多處理(AMP),每個(gè)內(nèi)核上都運(yùn)行各自的操作系統(tǒng)。
因此,多核系統(tǒng)并不是直接把多個(gè)芯片的多處理器濃縮到單一芯片之中這么簡(jiǎn)單。實(shí)際上,多核系統(tǒng)和多處理器系統(tǒng)之間存在著許多重要的區(qū)別,導(dǎo)致不能把多處理器系統(tǒng)上的軟件直接移植到多核系統(tǒng)上來(lái)。
多處理器系統(tǒng)和多核系統(tǒng)的主要區(qū)別之一就是,在多處理器系統(tǒng)中,CPU之間的界線是比較清晰的。在典型的多處理器情況下,多個(gè)CPU通過(guò)總線連接起來(lái),即便是共享外部存儲(chǔ)器,這些CPu基本上都是獨(dú)立運(yùn)行的。在多核系統(tǒng)中,情況就有所不同。不論采用何種架構(gòu),在多核系統(tǒng)中,被共享的東西非常多,例如中斷控制器、外設(shè)以及Cache(高速緩存)等。
多操作系統(tǒng)下的SuperviSor或Hypervisor
當(dāng)你希望運(yùn)行SMP(同構(gòu)核)環(huán)境時(shí),多核系統(tǒng)的這種特征通常表現(xiàn)為一種優(yōu)勢(shì),因?yàn)樗械膬?nèi)核都由同一個(gè)操作系統(tǒng)來(lái)管理。但是,當(dāng)你要在多核系統(tǒng)中同時(shí)運(yùn)行兩種以上的操作系統(tǒng)時(shí),例如同時(shí)運(yùn)行一套R(shí)TOS(嵌入式實(shí)時(shí)操作系統(tǒng))和一套通用操作系統(tǒng),就會(huì)遇到較多的困難。在這種情況下,會(huì)有兩種選擇:第一,在兩個(gè)操作系統(tǒng)之間進(jìn)行頻繁的溝通,例如在它們之間建立主、從關(guān)系:第二,更簡(jiǎn)便的方法是采用Supervisor或者Hypervisor,這是一些少量的代碼,負(fù)責(zé)管理協(xié)調(diào)多個(gè)操作系統(tǒng)。顯然,第二種方式是更徹底、靈活、具有擴(kuò)展性的多核軟件架構(gòu)。
Hypervisor之所以能夠有效地管理運(yùn)行在其上的多個(gè)操作系統(tǒng),得益于分區(qū)和虛擬化的方法。總的來(lái)說(shuō),系統(tǒng)中有三類資源可以被虛擬化:執(zhí)行單元(CPU)、內(nèi)存和設(shè)備。執(zhí)行單元虛擬化是基于時(shí)間片來(lái)進(jìn)行。內(nèi)存虛擬化是把物理內(nèi)存劃分成許多區(qū)域。設(shè)備虛擬化則是通過(guò)給設(shè)備定義接口和API調(diào)用來(lái)提高使用靈活性和利用率。
Hypervisor并不是一個(gè)全新的概念,在服務(wù)器中早已得到廣泛而且成功的應(yīng)用。不過(guò),嵌入式系統(tǒng)中經(jīng)常用到的Hypervisor主要是對(duì)內(nèi)存和設(shè)備進(jìn)行虛擬化,以便在操作系統(tǒng)之間的資源共享得到完全的保證,而不是對(duì)執(zhí)行單元進(jìn)行虛擬化。這種專用的Hypervisor比較小,而且直接運(yùn)行在硬件上,不像服務(wù)器中用到的Hypervisor主要運(yùn)行在完整的操作系統(tǒng)之上并且使用宿主操作系統(tǒng)的資源。
在嵌入式Hypervisor中,性能和獨(dú)立性是兩大最重要的需求,而后向兼容性(可以讓從屬操作系統(tǒng)不經(jīng)修改即可運(yùn)行在宿主操作系統(tǒng)之上)是服務(wù)器Hypervisor中非常重要的需求。為了滿足嵌入式系統(tǒng)的特殊需求,這類Hypervisor應(yīng)當(dāng)采用以下特殊設(shè)計(jì):
·設(shè)備盡可能直接映射給從屬操作系統(tǒng),以便獲得最高的性能,以及實(shí)現(xiàn)最佳的隔離性。
·應(yīng)當(dāng)具有更強(qiáng)的可伸縮性,可以自主選擇對(duì)哪些部分進(jìn)行虛擬化,也可以自主選擇虛擬化的目的是提高性能還是提高隔離性。
因此,嵌入式Hypervisore的實(shí)現(xiàn)會(huì)依照硬件支持的程度存在非常大的差異。即便是在沒(méi)有任何硬件支持的情況下,Hypervisor也可以運(yùn)行得非???,關(guān)鍵是要做到適當(dāng)水平的準(zhǔn)虛擬化(Paravirtualization)。
多核與多操作系統(tǒng)的組合配置
綜上所述,多核與多操作系統(tǒng)的組合配置非常多樣,這就會(huì)給軟件工程方法帶來(lái)很多變化和挑戰(zhàn)。不過(guò),我們還是可以總結(jié)歸納出幾種最典型、最常見(jiàn)的情形,并針對(duì)這些情形找到最適當(dāng)?shù)慕鉀Q方案。
與多處理器系統(tǒng)的軟件開發(fā)一樣,你首先會(huì)面臨的挑戰(zhàn)是對(duì)軟件代碼進(jìn)行分隔以便可以并行運(yùn)行。除此之外,在多核系統(tǒng)中,還會(huì)遇到另外一些挑戰(zhàn),例如:1)獲得適當(dāng)?shù)牟僮飨到y(tǒng)配置、資源共享和系統(tǒng)引導(dǎo)的Run-time支持;2)處理好內(nèi)核以及資源分區(qū)之間的通信;3)擁有能夠支持多核產(chǎn)品配置、原型化、分析、診斷和測(cè)試的開發(fā)工具。對(duì)于上述每個(gè)方面的問(wèn)題與挑戰(zhàn),用戶都必須得到適當(dāng)?shù)拇鸢?,才能在市?chǎng)允許的時(shí)間范
圍內(nèi)開發(fā)出像樣的產(chǎn)品。
值得注意的是,雖然開放源碼社區(qū)也有多核開發(fā)工具,但是多核軟件開放所遇到的挑戰(zhàn)顯然更為復(fù)雜,僅僅靠自己去探索未必有效。更重要的是,當(dāng)你在高度競(jìng)爭(zhēng)的商業(yè)環(huán)境中從事設(shè)備軟件開發(fā),必然會(huì)在時(shí)間、成本和產(chǎn)品可靠性等諸多方面受到更嚴(yán)苛的要求。因此,用戶不僅需要擁有高效率的工具,而且需要有專業(yè)人員在最短的時(shí)間內(nèi)指導(dǎo)和幫助你解決問(wèn)題,這些相關(guān)的技術(shù)支持與服務(wù)都是商業(yè)化開發(fā)工具的組成部分??梢?jiàn),不僅包括軟件開發(fā)工具,而且包括配套的技術(shù)支持與服務(wù),這樣的商業(yè)化解決方案才是整體效率最高、整體成本最低的方法。
嵌入式軟件的制高點(diǎn):平臺(tái)
嵌入式軟件的制高點(diǎn)是在操作系統(tǒng)之上的平臺(tái),并非操作系統(tǒng)本身。過(guò)去的用戶可能會(huì)先選硬件,再選操作系統(tǒng),選桌面軟件,最后選工具,對(duì)平臺(tái)軟件考慮得還不太多。但是隨著用戶對(duì)平臺(tái)的進(jìn)一步認(rèn)識(shí),以及平臺(tái)的進(jìn)一步發(fā)展、用戶在做決定的時(shí)候可能會(huì)考慮平臺(tái)方面來(lái)做出最終的決定。
風(fēng)河的發(fā)展方向是平臺(tái)化,并滿足不同的芯片制造商。風(fēng)河方案可支持市場(chǎng)上所有的主流芯片架構(gòu)和多樣化的操作系統(tǒng)平臺(tái),已經(jīng)預(yù)先置入了虛擬化機(jī)制,并且針對(duì)SMP、AMP和supervised AMp等多種多核配置的硬件平臺(tái)和應(yīng)用領(lǐng)域做了優(yōu)化。客戶可以在三個(gè)層次上自由地選擇:(1)自由選擇操作系統(tǒng);(2)自由選擇sMp、AMP、supervlsed AMP和虛擬化等多核配置;(3)在基于風(fēng)河Workbench開發(fā)環(huán)境中選擇自己需要的配置。相應(yīng)地,風(fēng)河Hypervtsor可以針對(duì)航空航天國(guó)防、汽車、消費(fèi)電子、工業(yè)控制和網(wǎng)絡(luò)通信等多種應(yīng)用領(lǐng)域?qū)崿F(xiàn)設(shè)備的虛擬化。風(fēng)河下一步的重點(diǎn)是工業(yè)領(lǐng)域和醫(yī)療領(lǐng)域應(yīng)用。
在操作系統(tǒng)層面,風(fēng)河Linux正蓬勃發(fā)展,但風(fēng)河Linux不會(huì)完全取代vxworks,一些傳統(tǒng)的應(yīng)用例如國(guó)防、航空航天和一些工業(yè)領(lǐng)域,VxWorks的銷售額還在穩(wěn)步上升。
TI 6核DSP陣列C6472
DSP群列的意義
芯片的運(yùn)行頻率越來(lái)越接近硬件的物理極限。多核技術(shù)最初的初衷是可以實(shí)現(xiàn)信息處理負(fù)載的分散均衡,為完成設(shè)備性能的提高找到新的出路,實(shí)際上,多核技術(shù)的意義遠(yuǎn)不止此,一方面,即便是對(duì)性能要求不高的應(yīng)用。如果將原本由多個(gè)處理器系統(tǒng)承擔(dān)的負(fù)栽整合為單一多核系統(tǒng),也可以降低設(shè)備成本和功耗,使電子產(chǎn)品獲得更高的性價(jià)比。
以DSP為倒,DSP陣列的方式也有多種,一種是在高效DSP的基礎(chǔ)上增加高速接口,變成一個(gè)分列的DSP陣列(編者按:多處理器架構(gòu)),但這又碰到另外一個(gè)瓶頸一系統(tǒng)的功耗和尺寸有限。因此TI就誕生了多核DSP(編者按:多核架構(gòu))概念,目的之一是要實(shí)現(xiàn)最佳的電源效率。
多核技術(shù)在客戶應(yīng)用中有哪些方向呢?比如通訊基站,需要能夠有更多的通道和容量;在工業(yè)應(yīng)用中,他們需要有更強(qiáng)大的擴(kuò)展的功能;醫(yī)療方面,性能還需要進(jìn)一步地提高。
C6472
TI于2009年11月推出了新平臺(tái)一TMS320C6472。一年前TI曾推出了三核TMS320C6474,每個(gè)核是1GHz的DSP;此次的C6472并不是c6474的一個(gè)縮減版,特色在于芯片內(nèi)部有6個(gè)C64+核。在功耗方面。TI達(dá)到了一個(gè)新的極限一即每個(gè)MIPS的功耗為0.15mw(每核主頻500MHz的產(chǎn)品),同時(shí)實(shí)現(xiàn)3GHz的性能。具體來(lái)說(shuō),c6472每核的主頻最低是500MHz,最高700MHz,中間有625MHz。
該多核500MHz解決方案比6顆500MHzC6415 DSP的功耗降低4()%,DSP成本降低2/3。板極的空間可節(jié)省80%。
C6472內(nèi)部有6個(gè)DSP的核。每個(gè)C64x+核配備L1數(shù)據(jù)和L1程序高速緩存(圖1),這樣每個(gè)核就可以并行運(yùn)算。除此之外,還有一一對(duì)應(yīng)的L2存儲(chǔ)器。為了使它們協(xié)調(diào)工作,特別在C6472的架構(gòu)中加了一個(gè)共享的L2存儲(chǔ)器。另外對(duì)DsP和處理器來(lái)說(shuō),外設(shè)之間的交換數(shù)據(jù)也是很重要的,EDMA3.0是TI特別的一個(gè)數(shù)據(jù)交換的方式。
再有就是配備了一些接口。諸如HPI(主機(jī)接口),如果有復(fù)雜的控制就要由高性能的cPu來(lái)管理這顆DSp。還有Utopia II光口、TSIP電信串口、存儲(chǔ)器用DDK-2接口等,尤其sK/O(串行Rapid(o)是一個(gè)高速的、可以做級(jí)聯(lián)的接口。通過(guò)sRlo可以把多個(gè)DSP集合成DsP陣列,如果有更高的這種需求時(shí),可以把多片C6472集聯(lián)在一起,由此可以想象這是多高的運(yùn)算速度。