Global Sources
電子工程專輯
 
電子工程專輯 > EDA/IP
 
 
EDA/IP  

平行編程工具缺乏阻礙多核心系統發展

上網時間: 2007年05月30日     打印版  Bookmark and Share  字型大小:  

關鍵字:多核心  平行編程  處理器  編譯器  multicore 

編程和除錯多核心晶片所需的工具正處於嚴重缺乏的‘黑暗期’,在最近舉行的Multicore Expo會議上一位專題演講者如此表示。雖然各種解決方案正不斷推出中,但平行編程工具的缺乏以及嵌入式設計師專業經驗的不足,正減緩了多核心架構的發展進程。

雖然在同一晶片上整合兩個、四個甚至八個處理器核心的設計正在嵌入式應用中迅速普及,但目前對於多核心編程工具的支援,就好像1980年代VLSI設計工具的處境一樣,“仍然處於黑暗時期”,麻省理工學院(MIT)電子工程和電腦科學教授Anant Agarwal表示。

在他的專題演講中,Agarwal呼籲業界開發新的工具、標準和生態系統。“誰會是多核心時代的微軟、Cadence或新思呢?”他問道。

受到對於性能和功耗重視的驅動,多核心晶片正迅速獲得設計師們的青睞,以至於分析師們預測在今後數年中多核心晶片將發展到數百個核心。同時,編程人員也正疲於應付當今的各種設計。

“多核心設計相當困難”。Wind River公司CTO Tomas Evensen表示,“雖然總有些方法能使其更容易些,但在序列編程方面的設計經驗使其難以轉向多核心。許多的程式碼是用單執行緒的方法編寫的,很多人並不願意再從頭開始編寫。”

多核心架構包含了多處理機制;而為了充分發揮其優勢,便必須採用平行編程技術。然而,很少有嵌入式設計師具有這方面的專業能力。“平行編程在15年前的學術界中是相當熱門的,但隨後卻銷聲匿跡。”RapidMind公司首席科學家Michael McCool說,“整整一個世代的編程人員都不知道如何進行平行編程。未來所有的程式都將採用平行編程,因此所有的程式設計人員都必須儘快轉變為平行編程人員。”

McCool指出,“編譯器在擷取平行作業方面做得並不理想。”多核心除錯也極具挑戰性,因為編程人員必須追蹤不同核心之間的互動,並偵測鎖死、資料異變、記憶體錯誤和中止執行等狀態。各種處理器一般都有其不同的除錯環境,因此很難以綜覽系統中所發生的事。

然而,相關的解決方案正不斷推出中。參加Multicore Expo大會的新、舊公司們紛紛展示了最新的編譯器、軟體開發平台、分析工具和除錯架構,雖然還不能實現完全自動化,但據說它們已能更簡便地實現到多核心應用開發的轉換進行。

不同的多核心架構也帶來了各種編程和除錯挑戰。ARM11 MPCore這類同質多核心晶片採用非常類似或相同的處理器核心;而如TI的OMAP是異質多核心架構,採用了不同類型的處理器。

有些同質多核心晶片使用對稱的多處理程序(SMP),其中的共享記憶體和單一作業系統可自動為不同的核心分配處理程序。而採用非對稱處理程序(AMP)時,用戶必須進行手動分配工作。

異質多核心晶片將產生大量的編程挑戰,Green Hills Software公司編譯器技術主管Greg Davis表示。不同的CPU可能需要不同的編譯器、地區語言和程式。附屬的核心可能只提供有限的記憶體體庫,因此必須與主核心互動,以實現記憶體資訊的交換。

SMP是一種相當吸引人的編程模型,因為有些現成的預分區程式碼可能“執行得更快”,Davis表示。但SMP系統可能存在不確定性、低效率和資料異變的情況。AMP可以在效率和確定性方面提供更多的用戶控制,但結果是軟體移植性較差,且前段成本過高,他指出。

新興的Imperas公司行銷副總裁Frank Schirrmeister為多核心系統分類方面提出了四個方向:處理器、通訊、記憶體架構和應用‘特徵’,這些因素均會影響到編程的進行。對於某些類型的設計來說,最大的挑戰是將任務映射到適合的處理器上;而對其他設計來說,最大的挑戰是確定可用運算空間的執行映射。

多核心晶片使用的共享匯流排系統很難進行編程和除錯,並且容易發生鎖死和資料異變的問題,Schirrmeister表示。記憶體架構的選擇也會影響任務的執行時間,他指出。

多處理技術存在著三大挑戰,Schirrmeister表示,分割、平行和最佳化。目前最需要的是一個編程模型,使其得以開發平行應用程式,將這些應用程式映射到平行硬體並進行最佳化,以及彙集資料以作出最佳化的決策。

圖1:多核心設計的複雜度使得編程人員疲於應付。
圖1:多核心設計的複雜度使得編程人員疲於應付。

圖2:SMP緊密耦合了多核心、共享記憶體和作業系統。
圖2:SMP緊密耦合了多核心、共享記憶體和作業系統。

編程模型

供應商們正推動各種不同的多核心編程方法。對於SMP系統而言,Posix的執行緒和處理程序提供了為程式增加同步應用的途徑,Green Hills Software公司CTO David Kleidermacher表示。他極力倡議採用應用級而非執行緒級的‘分割調度’,以管理CPU執行時間。

MIT的Agawal認為,Posix的執行緒在短期內是可行的,但它們不能提供封裝或模組化特性。一個更有發展性的的概念是曾經在ASIC設計中所使用的方法:從一個運算單元到另一個運算單元的串流資料,他指出。

使用串流的方式既快速且高效,同時也非常類似於連網程式中所使用的插槽,Agarwal表示。一個‘類似插槽’的串流式應用編程介面將有利於多核心元件,Agarwal說,多核心協會(Multicore Association)所推薦的通訊API標準就是這樣一種介面。

針對IBM的Cell Broadband Engine和Nvidia圖形處理器,軟體開發平台供應商RapidMind公司提議一種所謂‘單一程式、多重資料’的編程模型,它包含了單一指令、多資料概念,但與SIMD不一樣,每個核心都不一定具有?定的時間。

“該模型有助於使你平行思考和顯示方位,”McCool說,“它是可確定且安全的,你不會再看到停頓或變異的情況。”

無論採用一種編程途徑,多核心開發人員都需要分析及除錯工具。Wind River公司的Evensen認為,開發人員需要層級式的剖析工具來劃分程式碼,並發現瓶頸所在。而執行時間分析工具則有助於辨識在多執行緒同時存取資料時所可能發生的變異情況。

有限的可視能力使得多處理器的除錯更為困難,Virtutech公司業務開發經理Jakob Engblom表示。快取記憶體會隱藏資料,他說,並且存在著“對時間敏感的混亂狀態”,以及缺少確定性等問題。另外,即使在一個核心停止運作時,整個系統也仍能保持正常執行狀態。

CoreSight是ARM的多核心除錯解決方案,它採用了ARM公司的嵌入式追蹤巨集單元技術,包括一個除錯接取埠、一個嵌入式交叉觸發機制、一個將多項追蹤來源轉換為單除錯暫存器匯流排的‘追蹤漏斗’(trace funnel),一個嵌入式追蹤緩衝記憶體,以及追蹤埠介面單元。ARM公司CoreSight團隊負責人Andrew Swaine表示,該技術獨立於ARM架構,現可免費使用。

CoreSight只是在Multicore Expo上展示的種多核心解決方案之一。Virtutech公司還提供了據稱可以簡化多核心除錯的‘虛擬化’軟體開發環境。CriticalBlue公司CEO David Stewart展示了該公司的Cascade產品如何從既有軟體中產生特殊應用協同處理器。Associated Compiler Experts公司的創辦人兼CEO Martijn de Lange則探討該公司CoSy編譯器生成系統的多核心應用。

葛立偉




投票數:   加入我的最愛
我來評論 - 平行編程工具缺乏阻礙多核心系統發展
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首