微調多核心程式碼達成即時效能
嵌入式系統正快速的演變著。現代的解決方案大多忙於應付動態工作負載而不是可預測時程的任務。程式碼已不再是靜態。安全與商務要求不斷變動,軟體更新必須更加頻繁。其中最重要的一點,是轉向多核心發展改變了軟體設計的本質。在這些處理器上將程式碼最佳化,必須利用從前僅供高端伺服器使用的技巧。特別具有挑戰性的部分是在同一個 CPU 上執行即時和非即時程式碼。這麼做需要專門的工具,才能確保動態環境能實現硬性決定性。因此,我們推出了適用於 Intel® VTune™ Amplifier 的全新即時 SDK。
資源共享與決定性
背景簡介:多核心設計之所以會變得複雜,資源共享是主因之一。在典型的處理器中,多個核心共享一個末階快取記憶體 (LLC)、DRAM 控制器、I/O 控制器和其他硬體。這樣的共享方式可能造成資源爭奪的現象。圖 1 顯示核心 0 的「吵鬧鄰居」如何過度使用快取記憶體,使得核心 1 的某個應用程式記憶體不足以致於影響其效能。
Intel 的 Cache Allocation Technology 一類工具可為特定核心保留特定的快取記憶體區塊,從而解決上述問題。但是快取記憶體爭奪只不過是會降低效能的其中一種問題。現代的嵌入式系統需要完備的工具才能善用其硬體平台。
VTune 優勢
為了解決這個需求,INtime Distributed RTOS 及 INtime for Windows 的開發商 TenAsys 將在這兩項產品上增加 Intel® VTune™ 支援。這樣的搭配能透過即時決定性功能達成全面最佳化的效果。Intel® VTune™ Amplifier 是效能測量器,可分析程式碼並從中找到耗用過多 CPU 時間的過熱區。圖 2 說明該工具如何找出有問題的程式碼。
重要的是,Intel® VTune™ Amplifier 在 Intel® 處理器系列產品上皆支援過熱區分析。這與 Cache Allocation Technology 大相徑庭,後者目前僅支援六款處理器。Intel® VTune™ Amplifier 的其他功能包括:
- 辨識出等候過長致使 CPU 使用率過低的同步化作業
- 逐一檢查原始碼確認哪些功能使用最多 CPU 時間
- 連接晶片內效能監測單元,收集低階、詳盡的效能資料
VTune 的用途並不限於低階過熱區分析和針對 CPU 的效能分析。它也可以有效檢查出 RTOS 節點在一般的混合工作負載的效能。圖 3 說明可以在多核心平台上執行的各種工作負載。在本範例中,一個核心上執行 Windows,另一個核心則執行 INtime。
INtime 在裸機上執行,不需要使用 Hypervisor。它會為自己另外建立一個傳統 Windows 系統不會管理的硬體分割區。這樣的安排可保證 Windows 應用程式不會直接干擾 RTOS,但是即時應用程式仍然可能發生資源爭奪現象或是不良的串擾效應。為了應付這些問題,TenAsys 的 INtime 產品增加 Intel® VTune™ Amplifier 支援。上述「吵鬧鄰居」情境說明這個方案如何派上用場。假設即時應用程式在單獨執行時可以達成定時的截止時間。但是一旦加入 Windows 應用程式,系統運作即變得不平穩。藉由個別分析工作負載然後再並行分析,開發人員便會發現,當同時執行 Windows 應用程式時,即時工作負載的快取記憶體誤失率更高。接著開發人員可以改用 TenAsys SDK,其中包括:
- INtime Explorer,一個動態物件瀏覽器
- INscope 系統定時分析器
- 多執行緒感知型除錯程式
- 錯誤管理程式會判定發生錯誤後節點應該採取哪個動作
Microsoft Visual Studio 開發環境支援所有這些功能。
發揮多核心的最大功用
隨著嵌入式系統變得越來越複雜,軟體開發人員需要可以跟上其發展腳步的工具。TenAsys 藉由在 INtime RTOS 和 INtime for Windows 上增加 VTune 支援,提供開發人員所需的軟體資源,以利善用 Intel 嵌入式平台,促使機器人、機器學習、工業物聯網和其他多種裝置變得更進步。