高品質訓練課程供應者

作者:Jollen Chen
日期:

就在上週四(11/3),Moko365與MagicLego團隊共同舉辦了一場「Multi-Core 嵌入式開發」研討課程。這次的課程,可以說是多核心軟硬體開發的「電腦概論」課程,不但是多核心開發的第一門課,更是了解「沒有軟體、沒有多核心效能」的基礎課程。沒有良好的軟體設計,無法發揮多核心處理器的效能。既然如此,多核心軟體的涉及範圍為何?只需要作業系統支援多核心即可嗎?

答案是,多核心處理器需要軟體全面的支援,範圍從應用程式開始,一直往底層,直到作業系統,甚致驅動程式,都有很大的關聯。軟體如何支援多核心處理器,最大的關鍵在於「任務切割與指派」。研討課程當天,另一位講師Frank也利用一個影像處理的例子,說明影像處理如何分割任務,並將不同的任務,分派給不同的處理器。

另一個多核心軟體的關鍵為資料合併(Combine),Frank同樣也以影像處理做為例子,說明每個處理器在完成計算後,將分別得到的結果(Data)合併成最終計算結果。這個部份,梁老師也利用了一個矩陣運算的例子做了很清楚的說明。

由以上的說明可以了解,資料合併的關鍵,最終在於「如何取用另一個處理器核心的結果(Data)」。在ARM Cortex A8/A9架構裡,這個問題,是透過共用記憶體方式解決。也就是Cortex A8/A9多核心架構,處理器核心間是共用記憶體。共用的記憶體包含二種,第一種是成本較高,但速度較快的 L2 Cache;另一個共用記憶體則是DRAM,它的成本較低、容量較大,但速度較慢。

文章來源:Jollen’s Blog