??? 為了持續(xù)提升性能而又不至于因過熱導(dǎo)致故障,,微處理器正朝向多核心方向發(fā)展。但主流軟件至今卻尚未能找到使用這種新并行機(jī)制的途徑,。
??? 專用編程方法已開始在一些應(yīng)用中受到青睞,。然而,,軟件產(chǎn)業(yè)可能還需要十年或更長的時(shí)間,才能以一種較有組織的形式趕上多核心硬件的發(fā)展,;在此同時(shí),,這條道路上還存在著一些難以跨越的障礙。
?? “所有攸關(guān)性能的關(guān)鍵程序都必須重新編寫,,”斯坦福大學(xué)Pervasive Parallelism Lab總監(jiān)Kunle Olukotun說,。該團(tuán)隊(duì)是致力于解決這個(gè)被當(dāng)今計(jì)算機(jī)科學(xué)視為最棘手問題的眾多研究小組之一。
?? “最后不是被迫重新編寫這些程序代碼,,就是只好將它淘汰,,”O(jiān)lukotun說。他在最近舉行的‘多核心虛擬會議’(Multicore Virtual Conference)上針對該主題發(fā)表專題演講,。
?? “這是電信公司目前所面臨的最大問題之一,,”近期將出版一本有關(guān)電信設(shè)計(jì)專書的系統(tǒng)架構(gòu)師Alex Bachmutsky表示,“它們的應(yīng)用程序并不是針對多核心和執(zhí)行緒編寫的,,而且這些程序規(guī)模龐大,,包含了數(shù)百萬或數(shù)千萬行的程序代碼,。”
?? 無所不在的C語言“是最糟糕的工具,,因?yàn)樗诒举|(zhì)上是連續(xù)性的語言,,這使得算法中原有的并行機(jī)制變得模糊不清,”DSP咨詢公司Berkeley Design Technology總裁Jeff Bier說,。
??? 根據(jù)TechInsights公司在今年初所進(jìn)行的一項(xiàng)研究,,在接受訪談的嵌入式系統(tǒng)開發(fā)人員中,約有62%表示最近的計(jì)畫是以C語言寫的,;還有24%表示使用了C++,。
??? 研究者們已經(jīng)開發(fā)出許多并行編程語言,但沒有哪一種是萬能的,,而且要成為被市場接納的商品都還有很長的路要走,。Olukotun預(yù)測最終將出現(xiàn)一系列自動尋找并行機(jī)制的高階專用工具。
??? 多核心處理器也正致力于投入主流設(shè)計(jì)領(lǐng)域,,系統(tǒng),、芯片與工具開發(fā)商們也正提出一系列確實(shí)可用的開發(fā)工具。
??? 其中一部份是現(xiàn)有的多核心處理工具,,例如目前用于芯片級編程的OpenMP,。英特爾(Intel)及其它公司們已經(jīng)發(fā)布了用來管理軟件執(zhí)行緒的工具庫。Cilk Arts公司等新興公司也在傳統(tǒng)的程序代碼中植入關(guān)鍵詞來協(xié)助尋找并行機(jī)制,。
???“各種方法都互有利弊,,”飛思卡爾半導(dǎo)體(Freescale)軟件研發(fā)總監(jiān)Rob Oshana指出。
??? 開發(fā)人員將需要新的建模工具來解決如何在早期設(shè)計(jì)階段劃分應(yīng)用的問題,,Oshana表示,。另外,并行除錯(cuò)器已初露曙光,,在一個(gè)復(fù)雜的系統(tǒng)單芯片中,,只要能讓通過多個(gè)核心、加速器和互連的資料達(dá)到可視化,,將可望協(xié)助設(shè)計(jì)人最佳化其程序代碼,。
???? 短時(shí)間來看,許多芯片制造商正試圖將最多的并行程序代碼加載于軟件堆棧中,。但在某些情況下,,他們有時(shí)候會因?yàn)檫^度開發(fā),反而無法提供一些較通用的并行應(yīng)用程序,,飛思卡爾公司資深系統(tǒng)架構(gòu)師Steve Cole表示,。
?? “它應(yīng)該能夠包含我們的應(yīng)用程序與第三方應(yīng)用程序,以及操作系統(tǒng)和工具,”Cole說,,“這才是業(yè)界該走的方向,。”
??? 為了開發(fā)這樣的產(chǎn)品,,飛思卡爾已經(jīng)將其多核心軟件團(tuán)隊(duì)人數(shù)增加了一倍之多,Cole說,。
??? 同時(shí),,OEM們也正在尋找自己的方法來解決這些問題。電信架構(gòu)師Bachmutsky指出,,控制臺設(shè)計(jì)正采用系統(tǒng)級對稱多處理(SMP)工具來管理基于 SMP操作系統(tǒng)的多核心芯片,。而其設(shè)計(jì)結(jié)果“看起來就像是具有多線卡與負(fù)載均衡器,可在各刀鋒背板間分配流量的系統(tǒng),,”他說,。
??? 由于資料面設(shè)計(jì)通常使用匯編語言編碼,因此,,要把性能提高10倍以上的難度更大,。這意味著它無法負(fù)擔(dān)SMP結(jié)構(gòu)的共享內(nèi)存開銷。
??? 開發(fā)人員們必須仔細(xì)地劃分任務(wù)并分配給各個(gè)核心,,觀察數(shù)據(jù)間的依賴性,。他們必須制訂在不同任務(wù)間傳遞的詳細(xì)訊息方案,并找出在數(shù)據(jù)和控制臺軟件堆棧間的通訊方式,,Bachmutsky說,。
??? 采用匯編程序碼,“你就與硅晶制造商及工具庫密切相連,,你無法輕易地把軟件移植到另一個(gè)處理器,,”他說?!暗珶o論你選擇哪一種方案,,都意味著將與該方案密切相關(guān)?!?/P>
?
?
圖1:C語言主導(dǎo)當(dāng)今與明日的循序程序設(shè)計(jì)
?
先進(jìn)技術(shù)進(jìn)展
?? 一些特殊應(yīng)用在并行處理的道路上取得了更多進(jìn)展,,但所使用的仍是專有的芯片與工具。例如,,針對石油與天然氣勘探等一連串應(yīng)用中,,Nvidia采用其具有Cuda環(huán)境的繪圖芯片展開了大量并行編程工作。
?
?? 一些設(shè)計(jì)公司表示已成功實(shí)現(xiàn)了并行處理的先進(jìn)技術(shù),。例如,,英國Cambridge Consultants公司使用了PicoChip公司在單芯片內(nèi)封裝250個(gè)核心的組件,完成了3G和WiMax基地臺的合約設(shè)計(jì)工作,。
?
?? 對于這些應(yīng)用而言,,Cambridge Consultants公司發(fā)現(xiàn)PicoChip的組件實(shí)際上比4核心的數(shù)字訊號處理器(DSP)更好用,。“這一開始似乎令人百思不解,,但與傳統(tǒng)的單核心 或核心數(shù)較少的DSP相較,,使用PicoChip的組件所開發(fā)出的程序更簡短、可靠且產(chǎn)出品質(zhì)更高,,”在Cambridge Consultants主導(dǎo)DSP研發(fā)團(tuán)隊(duì)的Monty Barlow解釋,。
?
? “內(nèi)含眾多核心的多核心架構(gòu)可以把功能劃分到各 顆核心中,在系統(tǒng)已知各部份不會產(chǎn)生負(fù)面影響前提下,,可分別開發(fā)并測試這些功能,,而后再轉(zhuǎn)入系統(tǒng)的其它部份,”Barlow指出,,“另一種替代方案是依執(zhí) 行緒編寫程序,,并取決于操作系統(tǒng)的運(yùn)作情形來分配時(shí)間,但這些任務(wù)是以一種無關(guān)聯(lián)的速率執(zhí)行,,某一天,,許多任務(wù)可能會團(tuán)結(jié)起來與你作對,而某些任務(wù)還可能 會延遲而導(dǎo)致失敗,?!?
?
?? 采用新方法就必須為PicoChip的組件重新編寫軟件。但Barlow說,,他認(rèn)為值得在架構(gòu)方面進(jìn)行更多工作,,以便使后續(xù)開發(fā)過程更順利。
?
?? 分析師Jeff Bier指出,,PicoChip和Tilera等開發(fā)大規(guī)模多核心系統(tǒng)的新興公司們使用了完全不同的軟件工具,,這使得從他們的架構(gòu)中移植軟件的難度極大,風(fēng)險(xiǎn)更高,?!斑@種創(chuàng)新很有意義但難度極大,因?yàn)檫@些新興公司必須在芯片和并行軟件方面取得成功,,”他說,。
?
? “我預(yù)計(jì)這些特殊的架構(gòu)存在時(shí)間不會太長,”史丹佛大學(xué)的Olukotun說,?!半S著越來越多通用環(huán)境的性能更強(qiáng)且功效更高,這些特殊架構(gòu)很快會被取代,?!?
?
?? Olukotun相信,實(shí)驗(yàn)室的研究成果最終將為軟件堆棧帶來創(chuàng)新。他們將實(shí)現(xiàn)并行程序代碼自動化產(chǎn)生,,開發(fā)人員將無需再與執(zhí)行緒,、訊息傳送、內(nèi)存同步存取和其它結(jié)構(gòu)打交道,。
?
?? 該實(shí)驗(yàn)室的開發(fā)人員們將以高階特定領(lǐng)域語言(DSL)進(jìn)行編程,,使其可為一系列具有先進(jìn)排程器的執(zhí)行時(shí)間(runtime)環(huán)境自動產(chǎn)生并行任務(wù)。這些執(zhí)行 時(shí)間系統(tǒng)將“結(jié)合不同組件以開發(fā)出不同的執(zhí)行模式,,以便產(chǎn)生串流,、原子、容錯(cuò),、安全或執(zhí)行監(jiān)控作業(yè),”O(jiān)lukotun說,。
?
?? 飛思卡爾的Oshana也認(rèn)同這一觀點(diǎn),。“許多應(yīng)用均樂于接受更多抽象觀念,,以實(shí)現(xiàn)更好的整合,,”他說。例如,,可執(zhí)行多操作系統(tǒng)的hypervisor虛擬管理程序?qū)⒆兊迷絹碓狡占啊?
?
?? “這些新的想法能否被接納,?它將取決于開發(fā)人員感受在編程多核心處理器時(shí)的痛苦指數(shù),”O(jiān)lukotun說,。
?
?? 但在很長一段時(shí)間內(nèi),,這種痛苦可能還不至于普遍存在。在TechInsights公司的調(diào)查中,,只有大約7%的嵌入式開發(fā)人員表示正在使用多核心處理器,,而這個(gè)數(shù)字已高于兩年前的4%了。
?
??? Linley Group公司首席分析師Linley Gwennap今年三月時(shí)曾表示,,由于并行編程的復(fù)雜性,,到2012年,具有4顆或更多核心的處理器在通訊系統(tǒng)市場上的比例很可能只略多于10%,。 Gwennap并預(yù)測,,2012年以前,雙核心設(shè)計(jì)的市占率將達(dá)到20%,。
?
圖2:柏克萊大學(xué)的研究人員指出,,未來的并行應(yīng)用程序發(fā)展模式將從軟件堆棧的每一層開始進(jìn)行改變