http://www.eettaiwan.com/ART_8800580664_876045_NT_638c2c84.HTM
![0908_DT_FPS2_F1_T[1] 0908_DT_FPS2_F1_T[1]](http://loda.hala01.com/wp-content/uploads/2009/08/0908_DT_FPS2_F1_T1-300x184.jpg)
為了持續提升性能而又不至於因過熱導致故障,微處理器正朝向多核心方向發展。但主流軟體至今卻尚未能找到使用這種新平行機制的途徑。
專用編程方法已開始在一些應用中受到青睞。然而,軟體產業可能還需要十年或更長的時間,才能以一種較有組織的形式趕上多核心硬體的發展;在此同時,這條道路上還存在著一些難以跨越的障礙。
“所有攸關性能的關鍵程式都必須重新編寫,”史丹佛大學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說。
採用組合語言程式碼,“你就與矽晶製造商及工具庫密切相連,你無法輕易地把軟體移植到另一個處理器,”他說。“但無論你選擇哪一種方案,都意味著將與該方案密切相關。”

