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