多核處理器為嵌入式系統帶來了顯著的性能和功耗優勢,但它們也增加了傳統遷移工作負載的多處理復雜性。盡管如此,開發團隊可以通過遵循一些簡單的技術來成功管理向多核的過渡。
移植到便攜式標準
通常,遷移到多核不僅僅涉及遷移到新處理器。在許多情況下,開發人員必須首先將舊代碼移植到新的編程語言、編譯器或操作系統。 強烈建議使用 POSIX 等開放標準,因為它支持許多通用和實時操作系統。這樣做將有助于確保應用程序的大部分內容(包括其與操作系統的接口)是可移植的。同樣重要的是,POSIX標準在多處理系統中有著悠久的歷史,而多核處理器只是多處理片上系統(SoC)。
分而治之
支持對稱多處理 (SMP) 的操作系統是同構多核處理器的最佳選擇。SMP 將分配 CPU 資源的復雜細節留給操作系統,而不是應用程序。從應用程序的角度來看,與操作系統的接口保持不變,無論內核數量如何,從 1 到 N。因此,隨著更多內核的添加,應用程序可以輕松擴展。
在 SMP 模式下運行的多核系統提供了真正的并行性,但一些傳統應用程序從未設計為并行執行。通常,大部分代碼不使用線程,這將允許應用程序的不同部分并行運行,或者僅使用線程來隔離阻塞系統調用,例如文件或網絡 I/O。
另一個典型的陷阱發生在代碼使用優先級方案來控制對共享內存的訪問時。例如,在單處理器嵌入式系統中,軟件開發人員通??梢约僭O高優先級線程和低優先級線程不會同時訪問內存,因為高優先級線程將始終搶占低優先級線程。因此,許多程序無法使用互斥鎖(互斥鎖)來正確同步對內存的訪問。但是,在 SMP 多核系統中,這兩個線程可以并行運行,因此會同時訪問內存,從而產生不可預測的結果。由于同步錯誤,可能存在其他隱蔽問題,這些錯誤在單處理器系統上完美運行,但僅在多處理器執行中出現。
為了解決這樣的問題,開發人員可以分而治之:將問題代碼隔離在多核芯片的單個內核上,直到代碼可以修復。為此,開發人員可以使用綁定多處理 (BMP),這是 SMP 的擴展,允許選定的進程僅在指定的內核或 CPU 上運行。實際上,BMP 為遺留代碼提供了一個單核、非并行執行環境,同時允許其他代碼利用 SMP 的完全并行性。開發團隊在修改舊代碼以在其新的并行環境中正常運行后,可以隨后刪除 CPU 綁定。
利用這些工具
開發團隊還必須使用正確的工具。特別是,他們需要可視化工具來幫助他們查明并行環境中代碼行為異常的區域。大多數情況下,這項工作涉及檢測和糾正前面提到的同步錯誤。
一旦應用程序正常運行,它仍然可能無法利用多核芯片的所有 CPU 容量??梢暬ぞ咴谶@方面也可以提供幫助,它允許開發人員減少對共享資源(熱點)的爭用,消除過多的線程遷移或內核之間的通信,并找到并行化代碼的機會。隨著多核平臺內核數量的增加,可視化工具將是成功利用多核提供的性能優勢的關鍵。
為了提供這樣的分析,多核可視化工具必須超越傳統調試工具的范圍。例如,它們必須在線程從一個內核遷移到另一個內核時跟蹤線程,并診斷在內核之間流動的消息。他們還必須靈活控制記錄哪些事件以及何時記錄,以便開發人員可以專注于關注的領域。
進行過渡
“多核”不需要是一個壞詞,也不需要為傳統遷移添加另一個障礙。采用POSIX等可移植編程標準,使用專為多核平臺設計的操作系統,隔離遺留代碼以在單個內核上運行,以及使用可視化工具,所有這些都使過渡變得不那么令人生畏。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19851瀏覽量
234138 -
嵌入式
+關注
關注
5145文章
19597瀏覽量
316144
發布評論請先 登錄
客戶改了一個電阻就炸機?原因并沒有那么簡單

從TMS320DM644x v.2.1 ROM引導加載程序遷移到2.3版本

將DSP/BIOS 5應用程序遷移到SYS/BIOS 6

評論