多核系統中的程式設計挑戰


向多核系統的趨勢持續給系統設計師和應用程式程式設計師帶來壓力,要求他們更高效地利用多個計算核心。作業系統的設計者應該編寫使用多個處理核心的程式設計演算法,以允許下圖所示的並行執行:

圖:多核系統上的並行執行

對於應用程式程式設計師來說,挑戰在於將現有程式轉換為新的多執行緒程式。一般來說,多核系統程式設計中存在五個方面的挑戰:

  • 識別任務 - 這涉及檢查應用程式以查詢可以劃分為單獨的併發任務的區域。理想情況下,任務彼此獨立,因此可以在各個核心上並行執行。

  • 平衡 - 雖然可以識別出可以並行執行的不同任務,但程式設計師應確保這些任務執行具有同等價值的同等工作量。在某些情況下,特定任務可能對程序的貢獻不如其他任務多。使用單獨的執行核心來執行該任務可能不值得。

  • 資料分割 - 與將應用程式劃分為單獨的任務一樣,訪問和操作任務的資料也應被分割以在單獨的核心上執行。

  • 資料依賴性 - 應檢查任務訪問的資料,以檢視兩個或多個任務之間是否存在依賴關係。當一個任務依賴於另一個任務的資料時,程式設計師應確保任務的執行是同步的,以適應資料依賴性。

  • 測試和除錯 - 當程式在多個核心上並行執行時,許多不同的執行路徑是可能的。測試和除錯此類併發程式比測試和除錯單執行緒應用程式要困難得多。

由於這些挑戰,許多軟體開發人員認為多核系統的出現需要一種全新的軟體系統設計方法。

更新於:2019年10月16日

瀏覽量:1000+

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.